首页 文章

Discord bot和多线程

提问于
浏览
0

我目前正在使用Rapptz library实现一个不和谐机器人,并且我确实错过了一些东西!

我查看一个抽搐 Channels 列表,看看它们是否已启动,如果其中一个是,我希望机器人在特定 Channels 中发送消息 . 为此,我运行一个线程,每隔X秒轮询Twitch API,但我不能让机器人发送消息 . 我是异步编程的新手,所以这可能就是原因 .

这里是我想做的简化示例

class MyThread(Thread):

def __init__(self, client):
    Thread.__init__(self)
    self.client = client

def run(self):
    while True:
        self.client.send_message(channel, "Sending message every 10 seconds!")
        time.sleep(10)

问题是我知道 send_message 方法是异步的但是:

  • 当我将 await 关键字放在 send_message 调用之前时,我还需要将 run 方法定义为协程 . 当我尝试运行它时,我收到了消息 . RuntimeWarning: coroutine MyThread.run was never awaited

  • 当我没有说出来时,我没有收到错误,但邮件仍未发送 .

我认为事件循环有一个问题,但我完全迷失了 . 当我读到有关异步编程的文章时,它看起来很清楚,但我无法适应我的问题......

1 回答

  • -1

    该函数需要以等待开始才能使用异步

相关问题