修复未成功, 添加调试
This commit is contained in:
@@ -215,7 +215,20 @@ if game_type == 'gomoku':
|
||||
- 修改所有用户显示,从 `@用户{user_id}` 改为 `<at user_id="{user_id}"></at>`,以正确显示用户的群名称
|
||||
- 涉及修改:开始游戏、落子、显示棋盘、认输、列出对战等所有用户显示位置
|
||||
- 原因:修复用户识别失败和显示错误的问题
|
||||
- 阻碍因素:无
|
||||
- 阻碍因素:用户识别仍然失败
|
||||
- 状态:不成功
|
||||
|
||||
## [2025-10-28 17:42:24]
|
||||
- 已修改:
|
||||
- games/gomoku.py - 改进用户ID解析和添加调试日志
|
||||
- routers/callback.py - 增强日志输出
|
||||
- 更改:
|
||||
- 改进 `_parse_opponent()` 方法,支持多种@用户格式(双引号、单引号、不同的标签格式)
|
||||
- 在 `handle()` 方法中添加详细的调试日志(command, args, action, opponent_id)
|
||||
- 改进错误提示,显示实际接收到的参数内容
|
||||
- 将 callback.py 中的消息内容日志级别从 DEBUG 改为 INFO,便于追踪
|
||||
- 原因:进一步诊断用户ID识别失败的问题,添加调试信息帮助定位问题
|
||||
- 阻碍因素:需要用户测试并提供日志输出来确定实际的消息格式
|
||||
- 状态:未确认
|
||||
|
||||
# 最终审查
|
||||
|
||||
@@ -37,6 +37,10 @@ class GomokuGame(BaseGame):
|
||||
_, args = CommandParser.extract_command_args(command)
|
||||
args = args.strip()
|
||||
|
||||
# 调试日志
|
||||
logger.info(f"五子棋指令解析 - command: {command}")
|
||||
logger.info(f"五子棋指令解析 - args: {args}")
|
||||
|
||||
# 没有参数,显示帮助
|
||||
if not args:
|
||||
return self.get_help()
|
||||
@@ -44,6 +48,7 @@ class GomokuGame(BaseGame):
|
||||
# 解析参数
|
||||
parts = args.split(maxsplit=1)
|
||||
action = parts[0].lower()
|
||||
logger.info(f"五子棋指令解析 - action: {action}")
|
||||
|
||||
# 帮助
|
||||
if action in ['help', '帮助']:
|
||||
@@ -72,11 +77,13 @@ class GomokuGame(BaseGame):
|
||||
|
||||
# 尝试解析为@对手(开始游戏)
|
||||
opponent_id = self._parse_opponent(args)
|
||||
logger.info(f"五子棋指令解析 - opponent_id: {opponent_id}")
|
||||
if opponent_id is not None:
|
||||
return self._start_game(chat_id, user_id, opponent_id)
|
||||
|
||||
# 未识别的指令
|
||||
return f"❌ 未识别的指令\n\n{self.get_help()}"
|
||||
logger.warning(f"五子棋未识别的指令 - args: {args}")
|
||||
return f"❌ 未识别的指令:{args}\n\n💡 提示:\n- 要开始游戏,请使用 `.gomoku` 然后@对手\n- 要落子,请使用 `.gomoku A1`(坐标格式)\n- 要查看帮助,请使用 `.gomoku help`"
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"处理五子棋指令错误: {e}", exc_info=True)
|
||||
@@ -91,13 +98,23 @@ class GomokuGame(BaseGame):
|
||||
Returns:
|
||||
用户ID或None
|
||||
"""
|
||||
# WPS格式:<at user_id="123456"></at>
|
||||
match = re.search(r'<at\s+user_id="(\d+)"\s*></at>', args)
|
||||
if match:
|
||||
try:
|
||||
return int(match.group(1))
|
||||
except ValueError:
|
||||
pass
|
||||
# WPS格式:<at user_id="123456"></at> 或其他变体
|
||||
# 尝试多种格式
|
||||
patterns = [
|
||||
r'<at\s+user_id="(\d+)"[^>]*>', # <at user_id="123456"> 或 <at user_id="123456"></at>
|
||||
r'<at\s+user_id=\'(\d+)\'[^>]*>', # <at user_id='123456'>
|
||||
r'user_id="(\d+)"', # 直接查找 user_id="xxx"
|
||||
r'user_id=\'(\d+)\'', # 直接查找 user_id='xxx'
|
||||
]
|
||||
|
||||
for pattern in patterns:
|
||||
match = re.search(pattern, args)
|
||||
if match:
|
||||
try:
|
||||
return int(match.group(1))
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
return None
|
||||
|
||||
def _get_game_pool(self, chat_id: int) -> Dict[str, Any]:
|
||||
|
||||
@@ -28,7 +28,7 @@ async def callback_receive(request: Request):
|
||||
# 解析请求数据
|
||||
data = await request.json()
|
||||
logger.info(f"收到消息: chatid={data.get('chatid')}, creator={data.get('creator')}")
|
||||
logger.debug(f"消息内容: {data.get('content')}")
|
||||
logger.info(f"消息内容: {data.get('content')}")
|
||||
|
||||
# 验证请求
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user