【发布时间】:2021-05-29 23:53:37
【问题描述】:
我正在运行 discord.py 1.6。 我加载了一个 Cog,它在 Discord 上维护一个仪表板样式的消息(定期更新)。
卸载此 Cog 时,我想使用默认值自动删除此仪表板消息
await message.delete()
方法,这是一个异步调用。
根据文档,自动运行 Cog-cleanup 代码基本上有 2 个选项:
-
扩展清理功能
teardown()- 不是异步的。 https://discordpy.readthedocs.io/en/latest/ext/commands/extensions.html#cleaning-up -
Cog 方法
cog_unload()- 也不是异步的。 https://discordpy.readthedocs.io/en/latest/ext/commands/api.html#discord.ext.commands.Cog.cog_unload
但是,在加载 Cog 时,有 async 调用前和调用后挂钩可用。
https://discordpy.readthedocs.io/en/latest/ext/commands/api.html#discord.ext.commands.Cog.cog_before_invoke
因此,我的问题是:
卸载 Cogs时有什么方法可以自动运行(await)异步代码?
编辑: 通过构建自定义扩展重新加载器,调用 exit()、reload() 和 init() 解决了这个问题。
谢谢!
【问题讨论】:
标签: discord.py