nonebot / adapter-qq

NoneBot2 QQ 适配器 / QQ adapter for nonebot2
MIT License
205 stars 18 forks source link

Bug: 群机器人无法使用沙箱频道 #77

Closed Polyisoprene closed 9 months ago

Polyisoprene commented 9 months ago

当在.env文件中将 c2c_group_at_messages 设置为true后,在沙箱频道触发指令会有以下报错


File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot_plugin_handle/__init__.py", line 207, in handle_handle
    await send(f"你有{game.times}次机会猜一个四字成语,请发送成语", game.draw())
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot_plugin_handle/__init__.py", line 190, in send
    await bot.send(event,msg)
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/bot.py", line 415, in send
    return await self.send_to_channel(
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/bot.py", line 326, in send_to_channel
    return await self.post_messages(
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/internal/adapter/bot.py", line 123, in call_api
    raise exception
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/internal/adapter/bot.py", line 98, in call_api
    result = await self.adapter._call_api(self, api, **data)
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/adapter.py", line 415, in _call_api
    return await api_handler(bot, **data)
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/utils.py", line 64, in __call__
    return await self.func(inst, *args, **kwds)
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/bot.py", line 918, in post_messages
    return parse_obj_as(GuildMessage, await self._request(request))
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/bot.py", line 488, in _request
    raise ex from None
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/bot.py", line 486, in _request
    return self._handle_response(response)
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/bot.py", line 450, in _handle_response
    raise UnauthorizedException(response)
nonebot.adapters.qq.exception.UnauthorizedException: <ActionFailed: 401, code=11200, message=parse appid err, data=None>

只有设置"public_guild_messages":true ,删除c2c_group_at_messages配置,才能正常向频道内发送消息

Polyisoprene commented 9 months ago

当在.env文件中将 c2c_group_at_messages 设置为true后,在沙箱频道触发指令会有以下报错

File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot_plugin_handle/__init__.py", line 207, in handle_handle
    await send(f"你有{game.times}次机会猜一个四字成语,请发送成语", game.draw())
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot_plugin_handle/__init__.py", line 190, in send
    await bot.send(event,msg)
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/bot.py", line 415, in send
    return await self.send_to_channel(
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/bot.py", line 326, in send_to_channel
    return await self.post_messages(
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/internal/adapter/bot.py", line 123, in call_api
    raise exception
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/internal/adapter/bot.py", line 98, in call_api
    result = await self.adapter._call_api(self, api, **data)
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/adapter.py", line 415, in _call_api
    return await api_handler(bot, **data)
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/utils.py", line 64, in __call__
    return await self.func(inst, *args, **kwds)
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/bot.py", line 918, in post_messages
    return parse_obj_as(GuildMessage, await self._request(request))
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/bot.py", line 488, in _request
    raise ex from None
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/bot.py", line 486, in _request
    return self._handle_response(response)
  File "/home/dmc/.envs/guild/lib/python3.11/site-packages/nonebot/adapters/qq/bot.py", line 450, in _handle_response
    raise UnauthorizedException(response)
nonebot.adapters.qq.exception.UnauthorizedException: <ActionFailed: 401, code=11200, message=parse appid err, data=None>

只有设置"public_guild_messages":true ,删除c2c_group_at_messages配置,才能正常向频道内发送消息

1 配置如图所示

yanyongyu commented 9 months ago

我寻思设置里没有public_guild_messages这个选项啊

yanyongyu commented 9 months ago

看上去是沙箱频道那边没有支持新版的授权认证流程

Polyisoprene commented 9 months ago

我寻思设置里没有public_guild_messages这个选项啊

我试了一下,配置文件只设置"intent": { "c2c_group_at_messages": false }的话也行,但是设置成true就不行了

yanyongyu commented 9 months ago

问了下其他人没有遇到这个问题,沙箱模式群和频道都能正常使用

Polyisoprene commented 9 months ago

问了下其他人没有遇到这个问题,沙箱模式群和频道都能正常使用

我用了另一台机器,重新安装了nb和adapter之后使用了另一个公域机器人 这个机器人如果设置了"c2c_group_at_messages": true 直接连接不上 控制台一直输出

Received invalid session event from server. Try to reconnect...

这个机器人的状态是 ”开发中“

第一个机器人的状态是 "审核通过"

两者都未上线

Polyisoprene commented 9 months ago

找到原因了,如果QQ_IS_SANDBOX=true则会出现这个情况