【发布时间】:2021-06-07 02:42:11
【问题描述】:
我在 Linux Mint 上使用 Discord.py,我想使用后台任务,但我似乎无法让它们工作。出于某种原因,while 循环(见下文)显然从未进入过。
我尝试了许多非常基本的后台任务示例,但没有任何效果,除了 discord.py 工作得很好,我可以做很多可以很好地工作的事情。 甚至 while 循环中的 print 语句也没有显示出来,这很奇怪。
import discord
import asyncio
TOKEN = '<my-token>'
client = discord.Client()
async def my_background_task():
await client.wait_until_ready()
print("I am showing up!")
while not client.is_closed:
print("I am not showing up!")
servers = client.get_all_servers()
for server in servers:
for channel in server.channels:
await client.send_message(channel, "Some message")
await asyncio.sleep(1) # task runs every second
@client.event
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
client.loop.create_task(my_background_task())
client.run(TOKEN)
所以机器人正确启动,如果我有一个 on_message 方法它会工作(我没有添加它,因为它无关紧要)。但是由于某种原因,后台任务从未完成。甚至没有显示一条错误消息。好像后台任务被忽略了。我在谷歌上搜索过,但似乎没有人遇到过这个问题。
编辑:已解决。 client.is_closed 后面少了一对括号,虽然我找到的所有在线示例都没有使用。
【问题讨论】:
-
您使用的是哪个版本的
discord.py?您的代码在过去的版本中有一些不推荐使用的方法,但如果您的版本不匹配,我希望您会看到错误。 -
我的
discord.py版本是1.2.3,我的python 版本是3.6.7。哪些方法已弃用?因为我没有一个警告。 -
send_message等方法来自 1.0 版本之前。请参阅迁移指南:discordpy.readthedocs.io/en/latest/migrating.html
标签: python discord discord.py