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)