我一年前做的discord bot部署到Heroku上,一直工作到现在。但是,在更改了一些齿轮并将python更新到3.9.10版本后,我在Heroku日志中得到了以下警告:
app[worker.1]: /app/m_bot.py:120: RuntimeWarning: coroutine 'BotBase.load_extension' was never awaited
app[worker.1]: client.load_extension(f"cogs.{filename[:-3]}")
app[worker.1]: RuntimeWarning: Enable tracemalloc to get the object allocation traceback
app[worker.1]: Bot is ready.
app[api]: Build succeeded>
120行的块是:
for filename in os.listdir("./cogs"):
if filename.endswith(".py"):
# cut of the .py from the file name
client.load_extension(f"cogs.{filename[:-3]}")
机器人上线了,但没有回应任何命令。除了上面列出的,我没有做任何其他的修改。
当我在PC上运行我的机器人时,它工作正常,所以我怀疑可能是版本问题。
如何解决此问题?
1条答案
按热度按时间oug3syen1#
说明
从discord.py 2.0版本开始,
Bot.load_extension
现在是一个协程,必须等待。这是为了允许Cog
子类用协程覆盖cog_unload
。编号
await
必须用在client.load_extension
前面,如下所示:"在你的每一个齿轮里“
将标准
setup
函数替换为异步函数:如果要使用常规约定添加扩展,则需要使用以下代码:
在您客户的档案中:
您还应该将您的登录 Package 在一个异步的'main'函数中,您将在其中调用此函数。请注意,下面的代码没有设置日志记录you need to do so yourself:
这两个功能取代了旧的方式:
沿着您在问题中发布的代码。
参考
discord.py 2.0 async changes(感谢ChrisDewa在评论中提到这一点)