参数传递🔗
在事件解析函数中使用类型提示是 Graia Framework 相较于其他 Python QQ SDK 最大的亮点.
提示
如果你不知道类型提示是什么, 请参看 这里
在 快速开始 一节中, 我们使用了这样的写法来处理好友的消息:
@broadcast.receiver("FriendMessage")
async def friend_message_listener(app: Ariadne, friend: Friend):
......
这是因为我们需要为参数添加 类型注解 , 才能获得对应的数据.
上面的例子中, app: Ariadne 的 Ariadne 部分, 与 friend: Friend 的 Friend 部分是不可以省略的. 用不到的参数, 可以省略. 比如说, 如果你在 friend_message_lister 中, 没有用到 friend 参数, 那么就可以写成这样:
@broadcast.receiver("FriendMessage")
async def friend_message_listener(app: Ariadne):
......
下面列出 Ariadne 中所有基于 MessageEvent 的消息可接受的参数类型.
所有类型:
T_EventType: 你所监听的事件类型, 如FriendMessage,GroupMessage等.Ariadne: 通过app = Ariadne(...)创建的 Ariadne 对象.Broadcast: 当前graia.broadcast.Broadcast实例.AbstractEventLoop: 当前事件循环.Adapter: 当前Adapter实例.MessageChain: 消息链对象, 将在 下一章 介绍.Source: 消息元数据对象, 包括发送时间等信息.
此外, 对于以下事件类型还可接受这些参数:
FriendMessageFriend: 发送者.
GroupMessageMember: 发送者.Group: 发送者所在的群组.
TempMessageMember: 发送者.Group: 通过哪个群发起的临时消息.
OtherClientMessageClient: 发送者.
StrangerMessageStranger发送者.
社区文档相关章节: 链接
提示
参数解析功能, 是由 Dispatcher 机制来实现的, 可阅读 Dispatcher 文档 , 以简要了解其原理.
在进阶教程中, 我们将要介绍的 Twilight , 也使用了 Dispatcher 机制.