当前位置: 首页 > 知识库问答 >
问题:

discord.py-卸载具有异步清理功能的科格斯

帅令雪
2023-03-14

我跑了1.6discord.py。我加载了一个Cog,它在不和谐上维护仪表板样式的消息(定期更新)。

卸载此Cog时,我希望使用默认的wait消息自动删除此仪表板消息。delete()方法,这是一个异步调用。

根据文档,自动运行Cog清理代码基本上有两个选项:

>

  • 扩展清理功能teardown()-非异步。https://discordpy.readthedocs.io/en/latest/ext/commands/extensions.html#cleaning-向上

    Cog方法Cog_unload()-也不是异步的。https://discordpy.readthedocs.io/en/latest/ext/commands/api.html#discord.ext.commands.Cog.cog_unload

    然而,在加载Cog时,有asyncpre-invoke钩子和post-invoke钩子可用。https://discordpy.readthedocs.io/en/latest/ext/commands/api.html#discord.ext.commands.Cog.cog_before_invoke

    因此,我的问题是:在卸载COG时,有没有办法自动运行(wait)异步代码?

    编辑:通过构建一个自定义扩展reloader,调用出口(),reload()和init()来解决这个问题。

    谢谢!

  • 共有2个答案

    纪俊良
    2023-03-14

    异步。create_任务计划要运行的协同程序,但不等待它运行。如果您使用的是Python 3.6或更低版本,请使用asyncio。确保未来()。

    子车安和
    2023-03-14

    你试过asyncio吗。运行()?在同步线程中尝试调用async函数时,这通常是一种解决方案,因为您不需要等待run()函数

     类似资料:
    • 我是新来的反应钩。并且当我从一节跳到另一节时会显示此警告。不用等它完成就能上马。 index.js:1警告:无法对未挂载的组件执行React状态更新。这是一个no-op,但它表明您的应用程序中存在内存泄漏。若要修复,请取消useEffect清理函数中的所有订阅和异步任务。在FadeItems(在AboutSection.jsx:32)在div(由CardBody创建)在CardBody(在Abou

    • 我正在做一些测试,安装和卸载功能及其行为。 我从一个干净servicemix 7.0.0.m1安装开始,默认情况下它有cxf 3.1.4和camel 2.16.2。 之后,如果我输入bundle:requirements44,它表示所有与cxf相关的东西都由3.1.9版解决了。 我尝试卸载cxf/3.1.9,卸载后,当我键入feature:list-i时,它显示了与cxf 3.1.9相关的特性,我

    • 我正在做一个函数(Java-Android),它应该返回一个由Firebase中的数据填充的对象列表。我的问题是,我需要在遍历for中的所有项目后将结果发送给监听器,看看代码: 我需要执行这一行:

    • 我正在尝试做一个简单的应用程序,加载数据并对其执行一个操作.所以我的想法是做这个异步。 我有3个数据源,我想异步加载它们。例如data1.xml、data2.xml和data3.xml所有文件加载起来都相当大,所以需要一些时间(这就是为什么我想要异步的原因)。 例如,我创建了一个包含3个文本框的窗口,这些文本框都绑定到一个特定的属性(Text1、Text2、Text3)和一个按钮。当我点击按钮时,

    • 现在我每10秒调用一个间隔函数。我的问题是在使用效果我有一个依赖数组,有通道ID。那么,当组件卸载时,是否会调用这个clearInterval函数?

    • 我有一个Spring Boot服务,其中包含一些用于并行异步调用的代码,如下所示: CompletableFuture future1=accountManager。getResult(url1); CompletableFuture future2=accountManager。getResult(url2); 复杂的Future.allOf(未来1,未来2)。 字符串result1=futur