nonebot / nonebot2

跨平台 Python 异步聊天机器人框架 / Asynchronous multi-platform chatbot framework written in Python
https://nonebot.dev
MIT License
5.72k stars 540 forks source link

Bug: 不知道为什么只要收到消息`on_command`匹配就报错 #1377

Closed lgc2333 closed 1 year ago

lgc2333 commented 1 year ago

描述问题:

如题 报AssertionError

如何复现?

插件代码:

from nonebot import on_command
from nonebot.permission import SUPERUSER
from nonebot.matcher import Matcher

h_ping = on_command("ping", aliases={"Ping", "PING"}, rule=SUPERUSER)

@h_ping.handle()
async def _(matcher: Matcher):
    await matcher.finish("Pong~")

安装了 OneBot Adapter 使用 OneBot v11 协议连接了 gocq v1.0.0-rc3

期望的结果

A clear and concise description of what you expected to happen.

环境信息:

协议端信息:

截图或日志

11-08 23:37:53 [SUCCESS] nonebot | OneBot V11 754024781 | [message.group.normal]: Message 1391917664 from 2149656630@[群:1169535498] "如果b来找你"
11-08 23:38:01 [ERROR] nonebot | Rule check failed for Matcher(type='message', module=src.plugins.ping).
Traceback (most recent call last):
  File "C:\Users\lgc2333\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\lgc2333\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\Scripts\nb.exe\__main__.py", line 7, in <module>
    sys.exit(main())
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\click\core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\click\core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\click\core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\click\core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\click\core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\nb_cli\commands\main.py", line 30, in run
    run_bot(file, app)
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\nb_cli\handlers\deploy.py", line 25, in run_bot
    nonebot.run(app=f"{module_name}:{app}")
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\nonebot\__init__.py", line 273, in run
    get_driver().run(*args, **kwargs)
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\nonebot\drivers\fastapi.py", line 172, in run
    uvicorn.run(
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\uvicorn\main.py", line 576, in run
    server.run()
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\uvicorn\server.py", line 60, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "C:\Users\lgc2333\AppData\Local\Programs\Python\Python310\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "C:\Users\lgc2333\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 636, in run_until_complete
    self.run_forever()
  File "C:\Users\lgc2333\AppData\Local\Programs\Python\Python310\lib\asyncio\windows_events.py", line 321, in run_forever
    super().run_forever()
  File "C:\Users\lgc2333\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 603, in run_forever
    self._run_once()
  File "C:\Users\lgc2333\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 1899, in _run_once
    handle._run()
  File "C:\Users\lgc2333\AppData\Local\Programs\Python\Python310\lib\asyncio\events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
> File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\nonebot\message.py", line 131, in _check_matcher
    ) or not await Matcher.check_rule(bot, event, state, stack, dependency_cache):
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\nonebot\internal\matcher.py", line 293, in check_rule
    return event_type == (cls.type or event_type) and await cls.rule(
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\nonebot\internal\rule.py", line 73, in __call__
    results = await asyncio.gather(
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\nonebot\dependencies\__init__.py", line 104, in __call__
    values = await self.solve(**kwargs)
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\nonebot\dependencies\__init__.py", line 219, in solve
    values = await asyncio.gather(
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\nonebot\dependencies\__init__.py", line 211, in _solve_field
    return check_field_type(field, value)
  File "D:\Programs\nonebot2-oneclick-win-main\venv\virtualenvs\nb2-oneclick-7q2IGbEy-py3.10\lib\site-packages\nonebot\dependencies\utils.py", line 50, in check_field_type
    _, errs_ = field.validate(value, {}, loc=())
  File "pydantic\fields.py", line 832, in pydantic.fields.ModelField.validate
    assert cls is not None
AssertionError

image image

lgc2333 commented 1 year ago

https://github.com/lgc2333/nonebot2-oneclick-win

lgc2333 commented 1 year ago

好像是 SUPERUSER 的问题 写成rule了 抱歉