RuntimeError: Event loop stopped before Future completed
RuntimeError: Event loop stopped before Future completed
我正在尝试为 运行 子程序设置时间表。我正在尝试使用子例程示例在触发计划时向不和谐频道发送消息。起初我试图尝试发送消息但出现错误。然后我尝试研究如何解决这个问题,并尝试了使用 asyncio 的不同方法,但都没有奏效。
如果有人能给我任何关于如何做到这一点的指示,我将不胜感激。
import discord
import asyncio
import time
import schedule # pip install schedule
client = discord.Client()
@client.event
async def on_ready():
print("Connected!")
async def example(message):
await client.get_channel(CHANNEL ID).send(message)
client.run(SECRET KEY)
def scheduledEvent():
loop = asyncio.get_event_loop()
loop.run_until_complete(example("Test Message"))
loop.close()
schedule.every().minute.do(scheduledEvent)
while True:
schedule.run_pending()
time.sleep(1)
您不能 运行 您的阻塞 schedule
代码与您的异步事件循环在同一个线程中(您当前的代码甚至不会尝试安排任务,直到机器人已经断开连接) .相反,您应该使用内置的 tasks
扩展程序,它允许您安排任务。
import discord
from discord.ext import tasks, commands
CHANNEL_ID = 1234
TOKEN = 'abc'
client = discord.Client()
@client.event
async def on_ready():
print("Connected!")
@tasks.loop(minutes=1)
async def example():
await client.get_channel(CHANNEL_ID).send("Test Message")
@example.before_loop
async def before_example():
await client.wait_until_ready()
example.start()
clinet.run(TOKEN)
我正在尝试为 运行 子程序设置时间表。我正在尝试使用子例程示例在触发计划时向不和谐频道发送消息。起初我试图尝试发送消息但出现错误。然后我尝试研究如何解决这个问题,并尝试了使用 asyncio 的不同方法,但都没有奏效。
如果有人能给我任何关于如何做到这一点的指示,我将不胜感激。
import discord
import asyncio
import time
import schedule # pip install schedule
client = discord.Client()
@client.event
async def on_ready():
print("Connected!")
async def example(message):
await client.get_channel(CHANNEL ID).send(message)
client.run(SECRET KEY)
def scheduledEvent():
loop = asyncio.get_event_loop()
loop.run_until_complete(example("Test Message"))
loop.close()
schedule.every().minute.do(scheduledEvent)
while True:
schedule.run_pending()
time.sleep(1)
您不能 运行 您的阻塞 schedule
代码与您的异步事件循环在同一个线程中(您当前的代码甚至不会尝试安排任务,直到机器人已经断开连接) .相反,您应该使用内置的 tasks
扩展程序,它允许您安排任务。
import discord
from discord.ext import tasks, commands
CHANNEL_ID = 1234
TOKEN = 'abc'
client = discord.Client()
@client.event
async def on_ready():
print("Connected!")
@tasks.loop(minutes=1)
async def example():
await client.get_channel(CHANNEL_ID).send("Test Message")
@example.before_loop
async def before_example():
await client.wait_until_ready()
example.start()
clinet.run(TOKEN)