调整使用的wcf 类,使用self.message_util.send_text_msg
This commit is contained in:
@@ -8,6 +8,7 @@ from wcferry import Wcf
|
|||||||
|
|
||||||
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 message_util import MessageUtil
|
||||||
from plugin_common.message_plugin_interface import MessagePluginInterface
|
from plugin_common.message_plugin_interface import MessagePluginInterface
|
||||||
from plugin_common.plugin_interface import PluginStatus
|
from plugin_common.plugin_interface import PluginStatus
|
||||||
from utils.decorator.plugin_decorators import plugin_stats_decorator
|
from utils.decorator.plugin_decorators import plugin_stats_decorator
|
||||||
@@ -55,7 +56,7 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
# 保存上下文对象
|
# 保存上下文对象
|
||||||
self.wcf = context.get("wcf")
|
self.wcf = context.get("wcf")
|
||||||
self.event_system = context.get("event_system")
|
self.event_system = context.get("event_system")
|
||||||
self.message_util = context.get("message_util")
|
self.message_util: MessageUtil = context.get("message_util")
|
||||||
self.gbm = context.get("gbm")
|
self.gbm = context.get("gbm")
|
||||||
self.db_manager = DBConnectionManager.get_instance()
|
self.db_manager = DBConnectionManager.get_instance()
|
||||||
|
|
||||||
@@ -148,7 +149,7 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
elif command[0] in self._commands:
|
elif command[0] in self._commands:
|
||||||
return self._handle_transfer_points(message)
|
return self._handle_transfer_points(message)
|
||||||
else:
|
else:
|
||||||
wcf.send_text(f"❌未知命令!{self.command_format}",
|
self.message_util.send_text_msg(f"❌未知命令!{self.command_format}",
|
||||||
(roomid if roomid else sender), sender)
|
(roomid if roomid else sender), sender)
|
||||||
return True, "未知命令"
|
return True, "未知命令"
|
||||||
|
|
||||||
@@ -163,20 +164,20 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
# 检查命令格式
|
# 检查命令格式
|
||||||
if len(command) < 3:
|
if len(command) < 3:
|
||||||
wcf.send_text(f"❌命令格式错误!积分转账 积分数 @用户",
|
self.message_util.send_text_msg(f"❌命令格式错误!积分转账 积分数 @用户",
|
||||||
(roomid if roomid else sender), sender)
|
(roomid if roomid else sender), sender)
|
||||||
return True, "命令格式错误"
|
return True, "命令格式错误"
|
||||||
|
|
||||||
# 检查积分数是否为正整数
|
# 检查积分数是否为正整数
|
||||||
if not command[1].isdigit():
|
if not command[1].isdigit():
|
||||||
wcf.send_text(f"🈚️转账积分无效(必须为正整数!) \n积分转账 积分数 @用户",
|
self.message_util.send_text_msg(f"🈚️转账积分无效(必须为正整数!) \n积分转账 积分数 @用户",
|
||||||
(roomid if roomid else sender), sender)
|
(roomid if roomid else sender), sender)
|
||||||
return True, "积分无效"
|
return True, "积分无效"
|
||||||
|
|
||||||
# 检查@用户是否有效
|
# 检查@用户是否有效
|
||||||
at_users = self.at_list(xml)
|
at_users = self.at_list(xml)
|
||||||
if len(at_users) != 1:
|
if len(at_users) != 1:
|
||||||
wcf.send_text(f"转账失败❌\n🈚️转账人无效! \n积分转账 积分数 @用户",
|
self.message_util.send_text_msg(f"转账失败❌\n🈚️转账人无效! \n积分转账 积分数 @用户",
|
||||||
(roomid if roomid else sender), sender)
|
(roomid if roomid else sender), sender)
|
||||||
return True, "转账人无效"
|
return True, "转账人无效"
|
||||||
|
|
||||||
@@ -196,11 +197,11 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
error_msg = result.get("error", "未知错误")
|
error_msg = result.get("error", "未知错误")
|
||||||
if "积分不足" in error_msg:
|
if "积分不足" in error_msg:
|
||||||
current_points = result.get("current_points", 0)
|
current_points = result.get("current_points", 0)
|
||||||
wcf.send_text(
|
self.message_util.send_text_msg(
|
||||||
f"❌转账失败!\n你的积分不足以进行转账!当前积分:{current_points},你需要 {reward_points} 积分。",
|
f"❌转账失败!\n你的积分不足以进行转账!当前积分:{current_points},你需要 {reward_points} 积分。",
|
||||||
(roomid if roomid else sender), sender)
|
(roomid if roomid else sender), sender)
|
||||||
else:
|
else:
|
||||||
wcf.send_text(
|
self.message_util.send_text_msg(
|
||||||
f"❌转账失败!\n{error_msg}",
|
f"❌转账失败!\n{error_msg}",
|
||||||
(roomid if roomid else sender), sender)
|
(roomid if roomid else sender), sender)
|
||||||
return True, f"转账失败: {error_msg}"
|
return True, f"转账失败: {error_msg}"
|
||||||
@@ -223,12 +224,12 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
f"👤{to_user_name} 当前积分: {to_user.get('total_points', 0)}"
|
f"👤{to_user_name} 当前积分: {to_user.get('total_points', 0)}"
|
||||||
)
|
)
|
||||||
|
|
||||||
wcf.send_text(output, (roomid if roomid else sender), sender)
|
self.message_util.send_text_msg(output, (roomid if roomid else sender), sender)
|
||||||
return True, "转账成功"
|
return True, "转账成功"
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.LOG.error(f"积分交易出错: {e}")
|
self.LOG.error(f"积分交易出错: {e}")
|
||||||
wcf.send_text(f"❌积分交易失败!请稍后重试。错误: {str(e)}",
|
self.message_util.send_text_msg(f"❌积分交易失败!请稍后重试。错误: {str(e)}",
|
||||||
(roomid if roomid else sender), sender)
|
(roomid if roomid else sender), sender)
|
||||||
return True, f"处理出错: {str(e)}"
|
return True, f"处理出错: {str(e)}"
|
||||||
|
|
||||||
@@ -236,14 +237,13 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
"""处理查询个人积分命令"""
|
"""处理查询个人积分命令"""
|
||||||
sender = message.get("sender")
|
sender = message.get("sender")
|
||||||
roomid = message.get("roomid", "")
|
roomid = message.get("roomid", "")
|
||||||
wcf: Wcf = message.get("wcf")
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# 获取用户积分信息
|
# 获取用户积分信息
|
||||||
user_points = self.points_db.get_user_points(sender, roomid)
|
user_points = self.points_db.get_user_points(sender, roomid)
|
||||||
|
|
||||||
if not user_points:
|
if not user_points:
|
||||||
wcf.send_text(f"❌未找到你的积分记录!请先参与积分活动[签到,答题/t]。",
|
self.message_util.send_text_msg(f"❌未找到你的积分记录!请先参与积分活动[签到,答题/t]。",
|
||||||
(roomid if roomid else sender), sender)
|
(roomid if roomid else sender), sender)
|
||||||
return False, "未找到积分记录"
|
return False, "未找到积分记录"
|
||||||
|
|
||||||
@@ -299,12 +299,12 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
f"{recent_txs}"
|
f"{recent_txs}"
|
||||||
)
|
)
|
||||||
|
|
||||||
wcf.send_text(output, (roomid if roomid else sender), sender)
|
self.message_util.send_text_msg(output, (roomid if roomid else sender), sender)
|
||||||
return True, "查询积分成功"
|
return True, "查询积分成功"
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.LOG.error(f"查询积分出错: {e}")
|
self.LOG.error(f"查询积分出错: {e}")
|
||||||
wcf.send_text(f"❌查询积分失败!请稍后重试。错误: {str(e)}",
|
self.message_util.send_text_msg(f"❌查询积分失败!请稍后重试。错误: {str(e)}",
|
||||||
(roomid if roomid else sender), sender)
|
(roomid if roomid else sender), sender)
|
||||||
return True, f"处理出错: {str(e)}"
|
return True, f"处理出错: {str(e)}"
|
||||||
|
|
||||||
@@ -315,7 +315,7 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
wcf: Wcf = message.get("wcf")
|
wcf: Wcf = message.get("wcf")
|
||||||
|
|
||||||
if not roomid:
|
if not roomid:
|
||||||
wcf.send_text("❌积分排行榜仅在群聊中可用!", sender, "")
|
self.message_util.send_text_msg("❌积分排行榜仅在群聊中可用!", sender, "")
|
||||||
return True, "非群聊环境"
|
return True, "非群聊环境"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -323,7 +323,7 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
ranking = self.points_db.get_points_ranking(roomid, 10)
|
ranking = self.points_db.get_points_ranking(roomid, 10)
|
||||||
|
|
||||||
if not ranking:
|
if not ranking:
|
||||||
wcf.send_text("❌暂无积分排行数据!请先参与积分活动。", roomid, sender)
|
self.message_util.send_text_msg("❌暂无积分排行数据!请先参与积分活动。", roomid, sender)
|
||||||
return True, "无排行数据"
|
return True, "无排行数据"
|
||||||
|
|
||||||
# 构建排行榜消息
|
# 构建排行榜消息
|
||||||
@@ -348,12 +348,12 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
f"更新时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"
|
f"更新时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"
|
||||||
)
|
)
|
||||||
|
|
||||||
wcf.send_text(output, roomid, sender)
|
self.message_util.send_text_msg(output, roomid, sender)
|
||||||
return True, "查询排行榜成功"
|
return True, "查询排行榜成功"
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.LOG.error(f"查询积分排行榜出错: {e}")
|
self.LOG.error(f"查询积分排行榜出错: {e}")
|
||||||
wcf.send_text(f"❌查询积分排行榜失败!请稍后重试。错误: {str(e)}", roomid, sender)
|
self.message_util.send_text_msg(f"❌查询积分排行榜失败!请稍后重试。错误: {str(e)}", roomid, sender)
|
||||||
return True, f"处理出错: {str(e)}"
|
return True, f"处理出错: {str(e)}"
|
||||||
|
|
||||||
def at_list(self, xml):
|
def at_list(self, xml):
|
||||||
@@ -373,7 +373,7 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
# 现在set中存在{''}这种,请过滤掉
|
# 现在set中存在{''}这种,请过滤掉
|
||||||
atuserlist_set.discard('')
|
atuserlist_set.discard('')
|
||||||
self.LOG.info(f"解析到的 @用户列表: {atuserlist_set}")
|
self.LOG.info(f"解析到的 @用户列表: {atuserlist_set}")
|
||||||
#如果atuserlist_set 为空,就打印XML
|
# 如果atuserlist_set 为空,就打印XML
|
||||||
if not atuserlist_set:
|
if not atuserlist_set:
|
||||||
self.LOG.info(f"解析到的 @用户列表为空,XML:{xml}")
|
self.LOG.info(f"解析到的 @用户列表为空,XML:{xml}")
|
||||||
return atuserlist_set
|
return atuserlist_set
|
||||||
@@ -457,13 +457,13 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
# 检查是否在群聊中
|
# 检查是否在群聊中
|
||||||
if not roomid:
|
if not roomid:
|
||||||
wcf.send_text("❌打劫功能仅在群聊中可用!", sender, "")
|
self.message_util.send_text_msg("❌打劫功能仅在群聊中可用!", sender, "")
|
||||||
return True, "非群聊环境"
|
return True, "非群聊环境"
|
||||||
|
|
||||||
# 检查时间限制 - 只允许在18:00-21:00之间打劫
|
# 检查时间限制 - 只允许在18:00-21:00之间打劫
|
||||||
current_hour = datetime.now().hour
|
current_hour = datetime.now().hour
|
||||||
if current_hour < 18 or current_hour >= 21:
|
if current_hour < 18 or current_hour >= 21:
|
||||||
wcf.send_text("❌打劫功能仅在晚上18:00-21:00之间开放!请在开放时间再来。", roomid, sender)
|
self.message_util.send_text_msg("❌打劫功能仅在晚上18:00-21:00之间开放!请在开放时间再来。", roomid, sender)
|
||||||
return True, "时间限制"
|
return True, "时间限制"
|
||||||
|
|
||||||
# 检查是否在押
|
# 检查是否在押
|
||||||
@@ -472,7 +472,8 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
remaining_time = prison_status['end_time'] - datetime.now()
|
remaining_time = prison_status['end_time'] - datetime.now()
|
||||||
hours = int(remaining_time.total_seconds() / 3600)
|
hours = int(remaining_time.total_seconds() / 3600)
|
||||||
minutes = int((remaining_time.total_seconds() % 3600) / 60)
|
minutes = int((remaining_time.total_seconds() % 3600) / 60)
|
||||||
wcf.send_text(f"❌你正在服刑!\n剩余时间: {hours}小时{minutes}分钟\n可请求他人花费30积分保释。", roomid, sender)
|
self.message_util.send_text_msg(f"❌你正在服刑!\n剩余时间: {hours}小时{minutes}分钟\n可请求他人花费30积分保释。", roomid,
|
||||||
|
sender)
|
||||||
return True, "在押状态"
|
return True, "在押状态"
|
||||||
|
|
||||||
# 检查冷却时间
|
# 检查冷却时间
|
||||||
@@ -483,14 +484,14 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
if time_passed < self.rob_cooldown:
|
if time_passed < self.rob_cooldown:
|
||||||
remaining_time = int(self.rob_cooldown - time_passed)
|
remaining_time = int(self.rob_cooldown - time_passed)
|
||||||
minutes, seconds = divmod(remaining_time, 60)
|
minutes, seconds = divmod(remaining_time, 60)
|
||||||
wcf.send_text(f"❌你最近已经打劫过了,需要冷却 {minutes}分{seconds}秒 后才能再次打劫!",
|
self.message_util.send_text_msg(f"❌你最近已经打劫过了,需要冷却 {minutes}分{seconds}秒 后才能再次打劫!",
|
||||||
roomid, sender)
|
roomid, sender)
|
||||||
return True, "冷却中"
|
return True, "冷却中"
|
||||||
|
|
||||||
# 检查@用户是否有效
|
# 检查@用户是否有效
|
||||||
at_users = self.at_list(xml)
|
at_users = self.at_list(xml)
|
||||||
if len(at_users) != 1:
|
if len(at_users) != 1:
|
||||||
wcf.send_text(f"打劫失败❌\n请指定一个打劫目标!\n打劫 @用户",
|
self.message_util.send_text_msg(f"打劫失败❌\n请指定一个打劫目标!\n打劫 @用户",
|
||||||
roomid, sender)
|
roomid, sender)
|
||||||
return True, "目标无效"
|
return True, "目标无效"
|
||||||
|
|
||||||
@@ -499,7 +500,7 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
# 不能打劫自己
|
# 不能打劫自己
|
||||||
if target_wxid == robber_wxid:
|
if target_wxid == robber_wxid:
|
||||||
wcf.send_text("❌你不能打劫自己!", roomid, sender)
|
self.message_util.send_text_msg("❌你不能打劫自己!", roomid, sender)
|
||||||
return True, "不能打劫自己"
|
return True, "不能打劫自己"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -508,11 +509,11 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
target_points = self.points_db.get_user_points(target_wxid, roomid)
|
target_points = self.points_db.get_user_points(target_wxid, roomid)
|
||||||
|
|
||||||
if not robber_points:
|
if not robber_points:
|
||||||
wcf.send_text("❌你没有积分记录,无法进行打劫!请先参与积分活动。", roomid, sender)
|
self.message_util.send_text_msg("❌你没有积分记录,无法进行打劫!请先参与积分活动。", roomid, sender)
|
||||||
return True, "打劫者无积分"
|
return True, "打劫者无积分"
|
||||||
|
|
||||||
if not target_points:
|
if not target_points:
|
||||||
wcf.send_text("❌目标没有积分记录,无法进行打劫!", roomid, sender)
|
self.message_util.send_text_msg("❌目标没有积分记录,无法进行打劫!", roomid, sender)
|
||||||
return True, "目标无积分"
|
return True, "目标无积分"
|
||||||
|
|
||||||
robber_total = robber_points.get('total_points', 0)
|
robber_total = robber_points.get('total_points', 0)
|
||||||
@@ -520,11 +521,11 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
# 检查最低积分要求
|
# 检查最低积分要求
|
||||||
if robber_total < self.rob_min_points:
|
if robber_total < self.rob_min_points:
|
||||||
wcf.send_text(f"❌你的积分不足 {self.rob_min_points} 点,无法进行打劫!", roomid, sender)
|
self.message_util.send_text_msg(f"❌你的积分不足 {self.rob_min_points} 点,无法进行打劫!", roomid, sender)
|
||||||
return True, "打劫者积分不足"
|
return True, "打劫者积分不足"
|
||||||
|
|
||||||
if target_total < self.rob_min_points:
|
if target_total < self.rob_min_points:
|
||||||
wcf.send_text(f"❌目标积分不足 {self.rob_min_points} 点,不值得打劫!", roomid, sender)
|
self.message_util.send_text_msg(f"❌目标积分不足 {self.rob_min_points} 点,不值得打劫!", roomid, sender)
|
||||||
return True, "目标积分不足"
|
return True, "目标积分不足"
|
||||||
|
|
||||||
# 获取用户昵称
|
# 获取用户昵称
|
||||||
@@ -580,10 +581,10 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
f"👤{target_name} 当前积分: {from_user.get('total_points', 0)}"
|
f"👤{target_name} 当前积分: {from_user.get('total_points', 0)}"
|
||||||
)
|
)
|
||||||
|
|
||||||
wcf.send_text(output, roomid, sender)
|
self.message_util.send_text_msg(output, roomid, sender)
|
||||||
return True, "打劫成功"
|
return True, "打劫成功"
|
||||||
else:
|
else:
|
||||||
wcf.send_text(f"❌打劫过程中出现问题:{result.get('error', '未知错误')}", roomid, sender)
|
self.message_util.send_text_msg(f"❌打劫过程中出现问题:{result.get('error', '未知错误')}", roomid, sender)
|
||||||
return True, "打劫失败"
|
return True, "打劫失败"
|
||||||
else:
|
else:
|
||||||
|
|
||||||
@@ -617,15 +618,15 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
f"👤{robber_name} 当前积分: {from_user.get('total_points', 0)}"
|
f"👤{robber_name} 当前积分: {from_user.get('total_points', 0)}"
|
||||||
)
|
)
|
||||||
|
|
||||||
wcf.send_text(output, roomid, sender)
|
self.message_util.send_text_msg(output, roomid, sender)
|
||||||
return True, "打劫失败"
|
return True, "打劫失败"
|
||||||
else:
|
else:
|
||||||
wcf.send_text(f"❌处理打劫惩罚时出现问题:{result.get('error', '未知错误')}", roomid, sender)
|
self.message_util.send_text_msg(f"❌处理打劫惩罚时出现问题:{result.get('error', '未知错误')}", roomid, sender)
|
||||||
return True, "处理惩罚失败"
|
return True, "处理惩罚失败"
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.LOG.error(f"处理打劫请求出错: {e}")
|
self.LOG.error(f"处理打劫请求出错: {e}")
|
||||||
wcf.send_text(f"❌打劫过程中出现意外:{str(e)}", roomid, sender)
|
self.message_util.send_text_msg(f"❌打劫过程中出现意外:{str(e)}", roomid, sender)
|
||||||
return True, f"处理出错: {str(e)}"
|
return True, f"处理出错: {str(e)}"
|
||||||
|
|
||||||
def _handle_bailout(self, message: Dict[str, Any]) -> Tuple[bool, Optional[str]]:
|
def _handle_bailout(self, message: Dict[str, Any]) -> Tuple[bool, Optional[str]]:
|
||||||
@@ -637,13 +638,13 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
# 检查是否在群聊中
|
# 检查是否在群聊中
|
||||||
if not roomid:
|
if not roomid:
|
||||||
wcf.send_text("❌保释功能仅在群聊中可用!", sender, "")
|
self.message_util.send_text_msg("❌保释功能仅在群聊中可用!", sender, "")
|
||||||
return True, "非群聊环境"
|
return True, "非群聊环境"
|
||||||
|
|
||||||
# 检查@用户是否有效
|
# 检查@用户是否有效
|
||||||
at_users = self.at_list(xml)
|
at_users = self.at_list(xml)
|
||||||
if len(at_users) != 1:
|
if len(at_users) != 1:
|
||||||
wcf.send_text(f"保释失败❌\n请指定一个保释目标!\n保释 @用户",
|
self.message_util.send_text_msg(f"保释失败❌\n请指定一个保释目标!\n保释 @用户",
|
||||||
roomid, sender)
|
roomid, sender)
|
||||||
return True, "目标无效"
|
return True, "目标无效"
|
||||||
|
|
||||||
@@ -652,7 +653,7 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
# 不能保释自己
|
# 不能保释自己
|
||||||
if prisoner_wxid == bailout_wxid:
|
if prisoner_wxid == bailout_wxid:
|
||||||
wcf.send_text("❌你不能保释自己!", roomid, sender)
|
self.message_util.send_text_msg("❌你不能保释自己!", roomid, sender)
|
||||||
return True, "不能保释自己"
|
return True, "不能保释自己"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -671,13 +672,13 @@ class PointTradePlugin(MessagePluginInterface):
|
|||||||
f"✅ 保释成功!\n"
|
f"✅ 保释成功!\n"
|
||||||
f"👤{bailout_name} 花费30积分保释了 👤{prisoner_name}"
|
f"👤{bailout_name} 花费30积分保释了 👤{prisoner_name}"
|
||||||
)
|
)
|
||||||
wcf.send_text(output, roomid, sender)
|
self.message_util.send_text_msg(output, roomid, sender)
|
||||||
return True, "保释成功"
|
return True, "保释成功"
|
||||||
else:
|
else:
|
||||||
wcf.send_text(f"❌保释失败: {message}", roomid, sender)
|
self.message_util.send_text_msg(f"❌保释失败: {message}", roomid, sender)
|
||||||
return True, "保释失败"
|
return True, "保释失败"
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.LOG.error(f"处理保释请求出错: {e}")
|
self.LOG.error(f"处理保释请求出错: {e}")
|
||||||
wcf.send_text(f"❌保释过程中出现意外:{str(e)}", roomid, sender)
|
self.message_util.send_text_msg(f"❌保释过程中出现意外:{str(e)}", roomid, sender)
|
||||||
return True, f"处理出错: {str(e)}"
|
return True, f"处理出错: {str(e)}"
|
||||||
|
|||||||
Reference in New Issue
Block a user