重大版本调整:gewechat兼容。

This commit is contained in:
liuwei
2025-04-22 11:17:03 +08:00
parent 41def62467
commit a62bb61901
48 changed files with 2855 additions and 1420 deletions

View File

@@ -3,8 +3,9 @@ import redis
import re
from typing import Dict, Any, List, Optional, Tuple
from wcferry import Wcf
from gewechat_client import GewechatClient
from message_util import MessageUtil
from plugin_common.message_plugin_interface import MessagePluginInterface
from plugin_common.plugin_interface import PluginStatus
from utils.decorator.plugin_decorators import plugin_stats_decorator
@@ -50,13 +51,13 @@ class GroupAutoInvitePlugin(MessagePluginInterface):
self.LOG = logging.getLogger(f"Plugin.{self.name}")
self.LOG.info(f"正在初始化 {self.name} 插件...")
# 保存上下文对象
self.wcf = context.get("wcf")
# 获取群管理器
self.gbm = context.get("gbm")
# 获取Redis连接池
self.redis_pool = context.get("redis_pool")
self.clent:GewechatClient = context.get("clent")
self.message_util: MessageUtil = context.get("message_util")
# 从配置中获取命令和启用状态
plugin_config = self._config.get("GroupAutoInvite", {})
self._commands = plugin_config.get("command", ["#加群配置"])
@@ -111,27 +112,26 @@ class GroupAutoInvitePlugin(MessagePluginInterface):
sender = message.get("sender")
roomid = message.get("roomid", "")
wcf: Wcf = message.get("wcf")
gbm: GroupBotManager = message.get("gbm")
# 处理加群配置命令
if content.startswith("#加群配置|"):
return self._handle_config_command(content, sender, roomid, wcf, gbm)
return self._handle_config_command(content, sender, roomid, gbm)
# 处理加群请求
match = re.search(r"^#加群\s+(\w+)$", content)
if match:
return self._handle_join_request(match.group(1), sender, roomid, wcf, gbm)
return self._handle_join_request(match.group(1), sender, roomid, gbm)
return False, "无法处理的消息"
def _handle_config_command(self, content: str, sender: str, roomid: str, wcf: Wcf, gbm: GroupBotManager) -> Tuple[
def _handle_config_command(self, content: str, sender: str, roomid: str, gbm: GroupBotManager) -> Tuple[
bool, Optional[str]]:
"""处理配置命令"""
# 检查是否为管理员
admin_list = self.gbm.get_admin_list()
if sender not in admin_list:
wcf.send_text("⚠️ 权限不足,只有管理员才能配置群邀请功能",
self.message_util.send_text("⚠️ 权限不足,只有管理员才能配置群邀请功能",
(roomid if roomid else sender), sender)
return True, "权限不足"
@@ -140,10 +140,10 @@ class GroupAutoInvitePlugin(MessagePluginInterface):
result = self.process_command(command)
# 发送结果
wcf.send_text(result, (roomid if roomid else sender), sender)
self.message_util.send_text(result, (roomid if roomid else sender), sender)
return True, "配置命令处理成功"
def _handle_join_request(self, key: str, sender: str, roomid: str, wcf: Wcf, gbm: GroupBotManager) -> Tuple[
def _handle_join_request(self, key: str, sender: str, roomid: str, gbm: GroupBotManager) -> Tuple[
bool, Optional[str]]:
"""处理加群请求"""
try:
@@ -152,29 +152,29 @@ class GroupAutoInvitePlugin(MessagePluginInterface):
# 检查是否找到群ID
if isinstance(group_id, str) and "没有关联的群ID" in group_id:
wcf.send_text(f"⚠️ 未找到关键词 '{key}' 对应的群聊", sender)
self.message_util.send_text(f"⚠️ 未找到关键词 '{key}' 对应的群聊", sender)
return True, "未找到群聊"
# 判断是否在群里面,如果在,则不添加
con = ContactManager.get_instance()
members = con.get_group_members(group_id)
# 如果在群里面,则不添加
if sender in members:
wcf.send_text(f"⚠️ 你已经在群聊中了,无需重复添加", sender)
self.message_util.send_text(f"⚠️ 你已经在群聊中了,无需重复添加", sender)
return True, "你已经在群聊中了"
# 发送邀请
self.LOG.info(f"邀请用户 {sender} 加入群 {group_id}")
result = wcf.invite_chatroom_members(group_id, sender)
result = self.message_util.invite_member(group_id, sender)
if result:
wcf.send_text(f"✅ 已发送邀请,请查看群聊邀请通知", sender)
self.message_util.send_text(f"✅ 已发送邀请,请查看群聊邀请通知", sender)
return True, "邀请发送成功"
else:
wcf.send_text(f"❌ 邀请发送失败,请稍后再试", sender)
self.message_util.send_text(f"❌ 邀请发送失败,请稍后再试", sender)
return False, "邀请发送失败"
except Exception as e:
self.LOG.error(f"处理加群请求出错: {e}")
wcf.send_text(f"❌ 处理加群请求出错: {e}", sender)
self.message_util.send_text(f"❌ 处理加群请求出错: {e}", sender)
return False, f"处理出错: {e}"
def add_mapping(self, key, group_id):