fix 消息交互

This commit is contained in:
jxxghp
2024-10-18 18:10:46 +08:00
parent 5ef4fc04d5
commit e93b3f5602
5 changed files with 51 additions and 19 deletions

View File

@@ -175,7 +175,13 @@ class SlackModule(_ModuleBase, _MessageBase[Slack]):
}
"""
# 获取客户端
client_config = self.get_config(source)
client_config = None
if source:
client_config = self.get_config(source)
else:
client_configs = self.get_configs()
if client_configs:
client_config = list(client_configs.values())[0]
if not client_config:
return None
try:
@@ -206,8 +212,8 @@ class SlackModule(_ModuleBase, _MessageBase[Slack]):
username = msg_json.get("user_name")
else:
return None
logger.info(f"收到来自 {source} 的Slack消息userid={userid}, username={username}, text={text}")
return CommingMessage(channel=MessageChannel.Slack, source=source,
logger.info(f"收到来自 {client_config.name} 的Slack消息userid={userid}, username={username}, text={text}")
return CommingMessage(channel=MessageChannel.Slack, source=client_config.name,
userid=userid, username=username, text=text)
return None

View File

@@ -61,10 +61,16 @@ class SynologyChatModule(_ModuleBase, _MessageBase[SynologyChat]):
"""
try:
# 来源
client_config = self.get_config(source)
client_config = None
if source:
client_config = self.get_config(source)
else:
client_configs = self.get_configs()
if client_configs:
client_config = list(client_configs.values())[0]
if not client_config:
return None
client: SynologyChat = self.get_instance(source)
client: SynologyChat = self.get_instance(client_config.name)
if not client:
return None
# 解析消息
@@ -82,8 +88,9 @@ class SynologyChatModule(_ModuleBase, _MessageBase[SynologyChat]):
# 获取用户名
user_name = message.get("username")
if text and user_id:
logger.info(f"收到SynologyChat消息userid={user_id}, username={user_name}, text={text}")
return CommingMessage(channel=MessageChannel.SynologyChat,
logger.info(f"收到来自 {client_config.name} 的SynologyChat消息"
f"userid={user_id}, username={user_name}, text={text}")
return CommingMessage(channel=MessageChannel.SynologyChat, source=client_config.name,
userid=user_id, username=user_name, text=text)
except Exception as err:
logger.debug(f"解析SynologyChat消息失败{str(err)}")

View File

@@ -88,10 +88,16 @@ class TelegramModule(_ModuleBase, _MessageBase[Telegram]):
}
"""
# 获取渠道
client_config = self.get_config(source)
client_config = None
if source:
client_config = self.get_config(source)
else:
client_configs = self.get_configs()
if client_configs:
client_config = list(client_configs.values())[0]
if not client_config:
return None
client: Telegram = self.get_instance(source)
client: Telegram = self.get_instance(client_config.name)
try:
message: dict = json.loads(body)
except Exception as err:
@@ -103,7 +109,8 @@ class TelegramModule(_ModuleBase, _MessageBase[Telegram]):
# 获取用户名
user_name = message.get("from", {}).get("username")
if text:
logger.info(f"收到来自 {source} 的Telegram消息userid={user_id}, username={user_name}, text={text}")
logger.info(f"收到来自 {client_config.name} 的Telegram消息"
f"userid={user_id}, username={user_name}, text={text}")
# 检查权限
admin_users = client_config.config.get("TELEGRAM_ADMINS")
user_list = client_config.config.get("TELEGRAM_USERS")
@@ -120,7 +127,7 @@ class TelegramModule(_ModuleBase, _MessageBase[Telegram]):
logger.info(f"用户{user_id}不在用户白名单中,无法使用此机器人")
client.send_msg(title="你不在用户白名单中,无法使用此机器人", userid=user_id)
return None
return CommingMessage(channel=MessageChannel.Telegram, source=source,
return CommingMessage(channel=MessageChannel.Telegram, source=client_config.name,
userid=user_id, username=user_name, text=text)
return None

View File

@@ -77,7 +77,13 @@ class VoceChatModule(_ModuleBase, _MessageBase[VoceChat]):
}
"""
# 获取渠道
client_config = self.get_config(source)
client_config = None
if source:
client_config = self.get_config(source)
else:
client_configs = self.get_configs()
if client_configs:
client_config = list(client_configs.values())[0]
if not client_config:
return None
# 报文体
@@ -102,8 +108,8 @@ class VoceChatModule(_ModuleBase, _MessageBase[VoceChat]):
# 处理消息内容
if content and userid:
logger.info(f"收到VoceChat消息userid={userid}, text={content}")
return CommingMessage(channel=MessageChannel.VoceChat,
logger.info(f"收到来自 {client_config.name}VoceChat消息userid={userid}, text={content}")
return CommingMessage(channel=MessageChannel.VoceChat, source=client_config.name,
userid=userid, username=userid, text=content)
except Exception as err:
logger.error(f"VoceChat消息处理发生错误{str(err)}")

View File

@@ -64,10 +64,16 @@ class WechatModule(_ModuleBase, _MessageBase[WeChat]):
"""
try:
# 获取客户端
client_config = self.get_config(source)
client_config = None
if source:
client_config = self.get_config(source)
else:
client_configs = self.get_configs()
if client_configs:
client_config = list(client_configs.values())[0]
if not client_config:
return None
client: WeChat = self.get_instance(source)
client: WeChat = self.get_instance(client_config.name)
# URL参数
sVerifyMsgSig = args.get("msg_signature")
sVerifyTimeStamp = args.get("timestamp")
@@ -136,17 +142,17 @@ class WechatModule(_ModuleBase, _MessageBase[WeChat]):
return None
# 根据EventKey执行命令
content = DomUtils.tag_value(root_node, "EventKey")
logger.info(f"收到微信事件userid={user_id}, event={content}")
logger.info(f"收到来自 {client_config.name}微信事件userid={user_id}, event={content}")
elif msg_type == "text":
# 文本消息
content = DomUtils.tag_value(root_node, "Content", default="")
logger.info(f"收到微信消息userid={user_id}, text={content}")
logger.info(f"收到来自 {client_config.name}微信消息userid={user_id}, text={content}")
else:
return None
if content:
# 处理消息内容
return CommingMessage(channel=MessageChannel.Wechat, source=source,
return CommingMessage(channel=MessageChannel.Wechat, source=client_config.name,
userid=user_id, username=user_id, text=content)
except Exception as err:
logger.error(f"微信消息处理发生错误:{str(err)}")