nonebot / adapter-qq

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

使用 `Bot` 基类发送文本消息错误 #70

Closed Yuri-YuzuChaN closed 12 months ago

Yuri-YuzuChaN commented 12 months ago

示例


from nonebot.adapters import Bot, Event, Message
from nonebot.adapters.qq import MessageSegment

@best50.handle()
async def _(bot: Bot, event: Event, arg: Message = CommandArg()):

    """代码处理"""

    data: Union[BytesIO, str] = test()

    if isinstance(data, BytesIO):
        msg = MessageSegment.file_image(data)
    else:
        msg = data
    print(msg)
    await bot.send(event, msg, reply_message=True)

报错:

找到此玩家,请确保此玩家的用户名和查分器中的用户名相同。
如未绑定,请前往查分器官网进行绑定
https://www.diving-fish.com/maimaidx/prober/
10-24 21:42:03 [INFO] nonebot | Matcher(type='message', module=src.plugins.nonebot-plugin-maimaidx.nonebot_plugin_maimaidx, lineno=70) running complete
10-24 21:42:03 [ERROR] nonebot | Running Matcher(type='message', module=src.plugins.nonebot-plugin-maimaidx.nonebot_plugin_maimaidx, lineno=70) failed.
Traceback (most recent call last):
  File "C:\Program Files\Python38\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Program Files\Python38\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "c:\Users\Yuzu\.vscode\extensions\ms-python.python-2023.18.0\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy\__main__.py", line 39, in <module>
    cli.main()
  File "c:\Users\Yuzu\.vscode\extensions\ms-python.python-2023.18.0\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 430, in main
    run()
  File "c:\Users\Yuzu\.vscode\extensions\ms-python.python-2023.18.0\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 284, in run_file
    runpy.run_path(target, run_name="__main__")
  File "c:\Users\Yuzu\.vscode\extensions\ms-python.python-2023.18.0\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 321, in run_path
    return _run_module_code(code, init_globals, run_name,
  File "c:\Users\Yuzu\.vscode\extensions\ms-python.python-2023.18.0\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 135, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "c:\Users\Yuzu\.vscode\extensions\ms-python.python-2023.18.0\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 124, in _run_code
    exec(code, run_globals)
  File "C:\sakurabot\bot.py", line 15, in <module>
    nonebot.run()
  File "C:\Program Files\Python38\lib\site-packages\nonebot\__init__.py", line 331, in run
    get_driver().run(*args, **kwargs)
  File "C:\Program Files\Python38\lib\site-packages\nonebot\drivers\fastapi.py", line 201, in run
    uvicorn.run(
  File "C:\Program Files\Python38\lib\site-packages\uvicorn\main.py", line 587, in run
    server.run()
  File "C:\Program Files\Python38\lib\site-packages\uvicorn\server.py", line 61, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "C:\Program Files\Python38\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "C:\Program Files\Python38\lib\asyncio\base_events.py", line 603, in run_until_complete
    self.run_forever()
  File "C:\Program Files\Python38\lib\asyncio\windows_events.py", line 316, in run_forever
    super().run_forever()
  File "C:\Program Files\Python38\lib\asyncio\base_events.py", line 570, in run_forever
    self._run_once()
  File "C:\Program Files\Python38\lib\asyncio\base_events.py", line 1859, in _run_once
    handle._run()
  File "C:\Program Files\Python38\lib\asyncio\events.py", line 81, in _run
    self._context.run(self._callback, *self._args)
  File "C:\Program Files\Python38\lib\site-packages\nonebot\message.py", line 476, in check_and_run_matcher
    await _run_matcher(
> File "C:\Program Files\Python38\lib\site-packages\nonebot\message.py", line 428, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
  File "C:\Program Files\Python38\lib\site-packages\nonebot\internal\matcher\matcher.py", line 846, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
  File "C:\Program Files\Python38\lib\site-packages\nonebot\internal\matcher\matcher.py", line 821, in simple_run
    await handler(
  File "C:\Program Files\Python38\lib\site-packages\nonebot\dependencies\__init__.py", line 113, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
  File "C:\sakurabot\src\plugins\nonebot-plugin-maimaidx\nonebot_plugin_maimaidx\__init__.py", line 635, in _
    await bot.send(event, msg, reply_message=True)
  File "C:\Program Files\Python38\lib\site-packages\nonebot\adapters\qq\bot.py", line 411, in send
    return await self.send_to_channel(
  File "C:\Program Files\Python38\lib\site-packages\nonebot\adapters\qq\bot.py", line 322, in send_to_channel
    return await self.post_messages(
  File "C:\Program Files\Python38\lib\site-packages\nonebot\internal\adapter\bot.py", line 123, in call_api
    raise exception
  File "C:\Program Files\Python38\lib\site-packages\nonebot\internal\adapter\bot.py", line 98, in call_api
    result = await self.adapter._call_api(self, api, **data)
  File "C:\Program Files\Python38\lib\site-packages\nonebot\adapters\qq\adapter.py", line 415, in _call_api
    return await api_handler(bot, **data)
  File "C:\Program Files\Python38\lib\site-packages\nonebot\adapters\qq\utils.py", line 64, in __call__
    return await self.func(inst, *args, **kwds)
  File "C:\Program Files\Python38\lib\site-packages\nonebot\adapters\qq\bot.py", line 914, in post_messages
    return parse_obj_as(GuildMessage, await self._request(request))
  File "C:\Program Files\Python38\lib\site-packages\nonebot\adapters\qq\bot.py", line 463, in _request
    return self._handle_response(response)
  File "C:\Program Files\Python38\lib\site-packages\nonebot\adapters\qq\bot.py", line 452, in _handle_response
    raise ActionFailed(response)
nonebot.adapters.qq.exception.ActionFailed: <ActionFailed: 403, code=304003, message=url not allowed, data=None>

datastr 类型的时候,正常应该是使用发送消息的API发送文本消息,但还是使用了发送图片消息的参数,如果 dataBytesIO 使用 MessageSegment.file_image() 发送图片是正常的

yanyongyu commented 12 months ago

QQ频道禁止发送未在后台备案的 url 链接,请阅读官方文档

Yuri-YuzuChaN commented 12 months ago

不是,如果是 str 类型的纯文本消息也是用了image参数发送

Yuri-YuzuChaN commented 12 months ago

噢你是说我发的这个链接是未备案的是吗,我回头测试一下