我正在为不和谐的机器人。基本上是与此问题相同的问题:How can I run an async function using the schedule library?
,但上面的链接中无任何作用。就我而言,我收到“从未等待过我的功能”
async def birthday():
channel = client.get_channel(xxxxxx)
fileName = open("birthdayFile.txt", "r")
today = time.strftime('%m%d')
for line in fileName:
if today in line:
line = line.split(' ')
line[-1] = line[-1].strip()
if line[-1] != line[1]:
bdayperson = line[1]+' '+line[2]
else:
bdayperson = line[1]
await channel.send(f"Happy Birthday to "+ bdayperson + "! ??" )
schedule.every().day.at("18:36").do(client.loop.call_soon_threadsafe, birthday)
答案 0 :(得分:0)
您的生日方法是一种异步方法,也称为协程。这与“普通” /非异步方法不同。
您使用的计划库仅适用于非异步方法。您必须将生日异步方法包装在普通方法中。常规方法可以由您的日程表库调用。
但是,为了使discord.py库起作用,它需要一个运行中的事件循环。但是,计划库是一种阻止方法。它具有自己的内部逻辑,并阻止其他脚本执行。这意味着您不能将调度模块与discord模块一起使用。
您需要找到具有内置asyncio支持的库,或者编写自己的用于调度的逻辑。
您可以通过使用另一个Stackoverflow问题中链接的不同线程来解决阻塞问题:How can I run an async function using the schedule library?
您还没有关注。
通常,这是一个非常棘手的方法,我建议您编写自己的调度逻辑。计划模块不能与discord模块配合使用。