GraiaProject / Ariadne

一个优雅且完备的 Python QQ 自动化框架,基于 Mirai API HTTP v2。 Powered by Graia Project.
https://graia.cn/ariadne
GNU Affero General Public License v3.0
751 stars 45 forks source link

[Bug] 使用`HttpServerConfig`配置时,传入的`qq`头有误会导致服务端返回500错误 #230

Closed EZForever closed 1 year ago

EZForever commented 1 year ago

问题

使用HttpServerConfig(即Webhook)配置时,若MAH传入的请求来自未在Ariadne中配置的QQ号,下列代码会触发:

https://github.com/GraiaProject/Ariadne/blob/8e47d9951ec7a7081440196a9115daf000bdc500/src/graia/ariadne/connection/http.py#L35-L36

这将向其调用者返回None。而其调用者显然是不支持None的,抛出TypeError异常,进而导致返回500:

https://github.com/GraiaProject/Amnesia/blob/v0.7.1/src/graia/amnesia/builtins/aiohttp.py#L439-L448

如何复现

使用HttpServerConfig配置启动Ariadne,向其监听的端口发送任意请求。当请求头qq与Ariadne配置不同时,可以注意到返回500错误,且控制台提示异常ValueError: unsupported response type <class 'NoneType'>

预期行为

指定在此情况下的错误码。鉴于MAH Webhook Adapter文档并未指定在此种情况下应当返回的错误码,建议使用MAH API文档中提及的400错误,即替换returnreturn "Bad Request", {"status": 400}

使用环境:

同#229。

日志/截图

-