调整消息发送逻辑
This commit is contained in:
@@ -35,18 +35,13 @@ class MessageUtil:
|
|||||||
if at_list:
|
if at_list:
|
||||||
if at_list == "notify@all": # @所有人
|
if at_list == "notify@all": # @所有人
|
||||||
ats = " @所有人"
|
ats = " @所有人"
|
||||||
else:
|
|
||||||
wxids = at_list.split(",")
|
|
||||||
if len(wxids) > 0:
|
|
||||||
ats += self.client.get_nickname(receiver)
|
|
||||||
|
|
||||||
# {msg}{ats} 表示要发送的消息内容后面紧跟@,例如 北京天气情况为:xxx @张三
|
# {msg}{ats} 表示要发送的消息内容后面紧跟@,例如 北京天气情况为:xxx @张三
|
||||||
if ats == "":
|
if ats == "":
|
||||||
self.LOG.info(f"To {receiver}: {msg}")
|
self.LOG.info(f"To {receiver}: {msg}")
|
||||||
self.client.send_text_message(receiver, "{msg}", "")
|
self.client.send_text_message(receiver, msg, "")
|
||||||
else:
|
else:
|
||||||
self.LOG.info(f"To {receiver}: {ats}\r{msg}")
|
self.LOG.info(f"To {receiver}: {ats}\r{msg}")
|
||||||
self.client.send_text_message(receiver, f"{ats}\n{msg}", at_list)
|
self.client.send_at_message(receiver, msg, at_list.split(","))
|
||||||
|
|
||||||
def send_file(self, file_path: str, receiver: str) -> str:
|
def send_file(self, file_path: str, receiver: str) -> str:
|
||||||
"""
|
"""
|
||||||
@@ -107,7 +102,7 @@ class MessageUtil:
|
|||||||
return self.client.send_link_message(self.app_id, receiver, title, digest, url, thumburl)
|
return self.client.send_link_message(self.app_id, receiver, title, digest, url, thumburl)
|
||||||
|
|
||||||
def invite_member(self, group_id, sender):
|
def invite_member(self, group_id, sender):
|
||||||
return self.client.invite_chatroom_member( sender, group_id)
|
return self.client.invite_chatroom_member(sender, group_id)
|
||||||
|
|
||||||
def get_chatroom_members(self, group_id) -> dict:
|
def get_chatroom_members(self, group_id) -> dict:
|
||||||
data = self.client.get_chatroom_member_list(self.app_id, group_id)
|
data = self.client.get_chatroom_member_list(self.app_id, group_id)
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ class DifyPlugin(MessagePluginInterface):
|
|||||||
query = re.sub(r"@.*?[\u2005|\s]", "", content).strip()
|
query = re.sub(r"@.*?[\u2005|\s]", "", content).strip()
|
||||||
|
|
||||||
if not query:
|
if not query:
|
||||||
await bot.send_at_message(roomid, "请在@我的同时提供问题内容", sender)
|
await bot.send_at_message(roomid, "请在@我的同时提供问题内容", [sender])
|
||||||
return False, "没有提供问题内容"
|
return False, "没有提供问题内容"
|
||||||
|
|
||||||
# self.message_util.send_text_msg("⏳AI 正在加油,请稍候… 😊", roomid, sender)
|
# self.message_util.send_text_msg("⏳AI 正在加油,请稍候… 😊", roomid, sender)
|
||||||
@@ -156,7 +156,7 @@ class DifyPlugin(MessagePluginInterface):
|
|||||||
self.message_util.send_file(response, roomid)
|
self.message_util.send_file(response, roomid)
|
||||||
else:
|
else:
|
||||||
# 如果是普通文本,使用发送文本方法
|
# 如果是普通文本,使用发送文本方法
|
||||||
await bot.send_at_message((roomid if roomid else sender), response, sender)
|
await bot.send_at_message((roomid if roomid else sender), response, [sender])
|
||||||
return True, "发送成功"
|
return True, "发送成功"
|
||||||
else:
|
else:
|
||||||
await bot.send_text_message((roomid if roomid else sender), "❌未能获取到回复,请稍后再试", sender)
|
await bot.send_text_message((roomid if roomid else sender), "❌未能获取到回复,请稍后再试", sender)
|
||||||
@@ -208,7 +208,7 @@ class DifyPlugin(MessagePluginInterface):
|
|||||||
else:
|
else:
|
||||||
# 如果是普通文本,使用发送文本方法
|
# 如果是普通文本,使用发送文本方法
|
||||||
await bot.send_at_message((roomid if roomid else sender), response,
|
await bot.send_at_message((roomid if roomid else sender), response,
|
||||||
sender if roomid else "")
|
[sender if roomid else ""])
|
||||||
return True, "发送成功"
|
return True, "发送成功"
|
||||||
else:
|
else:
|
||||||
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender),
|
client_msg_id, create_time, new_msg_id = await bot.send_text_message((roomid if roomid else sender),
|
||||||
|
|||||||
@@ -316,7 +316,7 @@ class MessageSignPlugin(MessagePluginInterface):
|
|||||||
output += f"\n今日词汇:{daily_vocab}"
|
output += f"\n今日词汇:{daily_vocab}"
|
||||||
|
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_at_message((roomid if roomid else sender),
|
client_msg_id, create_time, new_msg_id = await self.bot.send_at_message((roomid if roomid else sender),
|
||||||
output, sender)
|
output, [sender])
|
||||||
revoke.add_message_to_revoke(roomid, client_msg_id, create_time, new_msg_id, 60)
|
revoke.add_message_to_revoke(roomid, client_msg_id, create_time, new_msg_id, 60)
|
||||||
return True, "签到成功"
|
return True, "签到成功"
|
||||||
|
|
||||||
@@ -325,7 +325,7 @@ class MessageSignPlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
client_msg_id, create_time, new_msg_id = await self.bot.send_at_message((roomid if roomid else sender),
|
client_msg_id, create_time, new_msg_id = await self.bot.send_at_message((roomid if roomid else sender),
|
||||||
f"签到出错:{e}",
|
f"签到出错:{e}",
|
||||||
sender)
|
[sender])
|
||||||
revoke.add_message_to_revoke(roomid, client_msg_id, create_time, new_msg_id, 3)
|
revoke.add_message_to_revoke(roomid, client_msg_id, create_time, new_msg_id, 3)
|
||||||
return False, f"处理出错: {e}"
|
return False, f"处理出错: {e}"
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ from typing import Callable, Dict, Any, Tuple
|
|||||||
|
|
||||||
from db.stats_db import StatsDBOperator
|
from db.stats_db import StatsDBOperator
|
||||||
from db.connection import DBConnectionManager
|
from db.connection import DBConnectionManager
|
||||||
|
from wechat_ipad import WechatAPIClient
|
||||||
|
|
||||||
|
|
||||||
def plugin_stats_decorator(plugin_name: str) -> Callable:
|
def plugin_stats_decorator(plugin_name: str) -> Callable:
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ from typing import Callable, Dict, Any, Tuple, Union
|
|||||||
from db.connection import DBConnectionManager
|
from db.connection import DBConnectionManager
|
||||||
from db.points_db import PointsDBOperator, PointSource
|
from db.points_db import PointsDBOperator, PointSource
|
||||||
from utils.robot_cmd.robot_command import Feature, PermissionStatus, GroupBotManager
|
from utils.robot_cmd.robot_command import Feature, PermissionStatus, GroupBotManager
|
||||||
|
from wechat_ipad import WechatAPIClient
|
||||||
|
|
||||||
|
|
||||||
def points_reward_decorator(points_calculator: Union[int, Callable], source_type: str = "other",
|
def points_reward_decorator(points_calculator: Union[int, Callable], source_type: str = "other",
|
||||||
@@ -192,14 +193,17 @@ def plugin_points_cost(points: int, description: str = None, feature: Feature =
|
|||||||
return False, "没有权限"
|
return False, "没有权限"
|
||||||
|
|
||||||
# 检查是否开启了积分获取功能
|
# 检查是否开启了积分获取功能
|
||||||
if gbm and gbm.get_group_permission(roomid, Feature.SIGNIN) == PermissionStatus.DISABLED and gbm.get_group_permission(
|
if gbm and gbm.get_group_permission(roomid,
|
||||||
|
Feature.SIGNIN) == PermissionStatus.DISABLED and gbm.get_group_permission(
|
||||||
roomid, Feature.TASK_GAME) == PermissionStatus.DISABLED:
|
roomid, Feature.TASK_GAME) == PermissionStatus.DISABLED:
|
||||||
return await func(self, message)
|
return await func(self, message)
|
||||||
|
|
||||||
# 获取消息信息
|
# 获取消息信息
|
||||||
sender = message.get("sender", "")
|
sender = message.get("sender", "")
|
||||||
roomid = message.get("roomid", "")
|
roomid = message.get("roomid", "")
|
||||||
|
|
||||||
|
bot: WechatAPIClient = message.get("bot")
|
||||||
|
|
||||||
if not sender or not (roomid or sender):
|
if not sender or not (roomid or sender):
|
||||||
return await func(self, message)
|
return await func(self, message)
|
||||||
|
|
||||||
@@ -213,12 +217,12 @@ def plugin_points_cost(points: int, description: str = None, feature: Feature =
|
|||||||
user_points = points_db.get_user_points(sender, roomid)
|
user_points = points_db.get_user_points(sender, roomid)
|
||||||
if user_points["total_points"] < points:
|
if user_points["total_points"] < points:
|
||||||
# 积分不足
|
# 积分不足
|
||||||
await self.message_util.send_text(
|
await bot.send_at_message((roomid if roomid else sender),
|
||||||
f"❌ 积分不足\n无法使用 {plugin_name} 功能\n"
|
f"❌ 积分不足\n无法使用 {plugin_name} 功能\n"
|
||||||
f"🪙 先参与积分活动[签到,答题/t]赚取吧!\n"
|
f"🪙 先参与积分活动[签到,答题/t]赚取吧!\n"
|
||||||
f"💰 有: {user_points['total_points']} | 需: {points} |差: {points - user_points['total_points']} ",
|
f"💰 有: {user_points['total_points']} | 需: {points} |差: {points - user_points['total_points']} ",
|
||||||
(roomid if roomid else sender), sender
|
[sender]
|
||||||
)
|
)
|
||||||
logger.info(f"用户 {sender} 积分不足,无法使用功能")
|
logger.info(f"用户 {sender} 积分不足,无法使用功能")
|
||||||
return False, "积分不足"
|
return False, "积分不足"
|
||||||
|
|
||||||
@@ -238,9 +242,9 @@ def plugin_points_cost(points: int, description: str = None, feature: Feature =
|
|||||||
# 添加对 response 的类型检查
|
# 添加对 response 的类型检查
|
||||||
if isinstance(response, str) and "积分" not in response:
|
if isinstance(response, str) and "积分" not in response:
|
||||||
response += f"\n\n💰 已消费 {points} 积分"
|
response += f"\n\n💰 已消费 {points} 积分"
|
||||||
await self.message_util.send_text(
|
await bot.send_at_message(
|
||||||
f"💰消费 {points} 积分",
|
(roomid if roomid else sender),
|
||||||
(roomid if roomid else sender), sender
|
f"💰消费 {points} 积分", [sender]
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
logger.warning(f"用户 {sender} 积分扣除失败: {deduct_result}")
|
logger.warning(f"用户 {sender} 积分扣除失败: {deduct_result}")
|
||||||
@@ -262,10 +266,11 @@ def plugin_points_cost(points: int, description: str = None, feature: Feature =
|
|||||||
return False, "没有权限"
|
return False, "没有权限"
|
||||||
|
|
||||||
# 检查是否开启了积分获取功能
|
# 检查是否开启了积分获取功能
|
||||||
if gbm and gbm.get_group_permission(roomid, Feature.SIGNIN) == PermissionStatus.DISABLED and gbm.get_group_permission(
|
if gbm and gbm.get_group_permission(roomid,
|
||||||
|
Feature.SIGNIN) == PermissionStatus.DISABLED and gbm.get_group_permission(
|
||||||
roomid, Feature.TASK_GAME) == PermissionStatus.DISABLED:
|
roomid, Feature.TASK_GAME) == PermissionStatus.DISABLED:
|
||||||
return func(self, message)
|
return func(self, message)
|
||||||
|
|
||||||
# 获取消息信息
|
# 获取消息信息
|
||||||
sender = message.get("sender", "")
|
sender = message.get("sender", "")
|
||||||
roomid = message.get("roomid", "")
|
roomid = message.get("roomid", "")
|
||||||
|
|||||||
Reference in New Issue
Block a user