当前位置: 首页 > 知识库问答 >
问题:

Discord bot“RuntimeError:无法关闭正在运行的事件循环”错误

宗政永望
2023-03-14

每当我运行下面的代码,尝试了许多解决方案,但都没有成功时,我总是会遇到这样的错误“RuntimeError:无法关闭正在运行的事件循环”。

我正在使用jupyter笔记本,print(discord.\uuuuu版本)--

提前谢谢。

import nest_asyncio
nest_asyncio.apply()

import discord
import os
from dotenv import load_dotenv

# https://stackoverflow.com/questions/63530888/how-would-i-go-about-creating-an-env-file-for-my-discord-bot-token


client = discord.Client()

@client.event
async def on_ready():
    print('Logged in as {0.user}'.format(client))
    
    
@client.event
async def on_message(message):
    if message.author == message.user:
        return
    if message.content.startswith('$hello'):
        await message.channel.send('Hello!')
        
        
TOKEN = os.getenv("token")

client.run('TOKEN')

代码输出:

以后从未检索到任务异常:

上述异常是以下异常的直接原因:

RuntimeError                              Traceback (most recent call last)
<ipython-input-10-ccfa19a2810e> in <module>
     26 TOKEN = os.getenv("token")
     27 
---> 28 client.run('TOKEN')
     29 
     30 

~\anaconda3\lib\site-packages\discord\client.py in run(self, *args, **kwargs)
    717             future.remove_done_callback(stop_loop_on_completion)
    718             log.info('Cleaning up tasks.')
--> 719             _cleanup_loop(loop)
    720 
    721         if not future.cancelled():

~\anaconda3\lib\site-packages\discord\client.py in _cleanup_loop(loop)
     93     finally:
     94         log.info('Closing the event loop.')
---> 95         loop.close()
     96 
     97 class _ClientEventTask(asyncio.Task):

~\anaconda3\lib\asyncio\selector_events.py in close(self)
     87     def close(self):
     88         if self.is_running():
---> 89             raise RuntimeError("Cannot close a running event loop")
     90         if self.is_closed():
     91             return

RuntimeError: Cannot close a running event loop

共有1个答案

丁翊歌
2023-03-14

将最后一行从client.run('TOKEN')改为client.run(TOKEN)。您正在使用字符串"TOKEN"而不是变量TOKEN

 类似资料:
  • 问题内容: 我正在尝试解决此错误:在我的异步过程中。我相信这是因为在任务仍未完成时发生故障,然后尝试关闭事件循环。我以为我需要在关闭事件循环之前等待其余的响应,但是我不确定如何在我的特定情况下正确完成该操作。 我该如何处理错误并正确关闭事件循环,以便可以启动一个新程序并从本质上重新启动整个程序并继续。 编辑: 根据这个答案,这就是我现在正在尝试的方法。不幸的是,这种错误很少发生,因此,除非我可以强

  • 我试图在Spyder中创建代码以启动discord bot,但遇到以下错误: 回溯(最近一次呼叫最后一次): 文件“”,第1行,在runfile中('C:/Users/Nathan/Desktop/HW/Python stuff/my_discord\u bot.py',wdir='C:/Users/Nathan/Desktop/HW/Python stuff') 文件“C:\ProgramDat

  • 问题内容: 我有以下5个文件: gui.py functions.py 线程处理程序 variables.py 和start.py 执行start.py之后,我收到消息:“ QCoreApplication:exec:事件循环已在运行 ” 我发现,这与计时器有关 从 start.py 和功能 在 functions.py中 有人可以向我解释问题是什么吗?我不知道代码有什么问题… 问题答案: 我认为

  • 我有一个程序,当你点击按钮,它将执行一个名为

  • 我正在quarkus中实现一个gprc服务器()。我的服务是以反应式风格编写的(smallrye mutiny)。这是我的服务类 现在,写入中的实际逻辑是位阻塞,导致vertx阻塞事件循环警告(以及一些其他错误)。如quarkus grpc服务器指南中所述(https://quarkus.io/guides/grpc-getting-started)我用对该方法进行了注释。 在添加此注释之前,我在

  • 我知道这在StackOverflow上被问过很多次,但我尝试过很多不同的解决方案,没有一个奏效。所以我决定问问社区该怎么做。下面是我的代码中的相关片段。 请注意,这只是我的代码中从控制台输入的部分,不包含任何其他内容。我有其他东西设置,要求代码是这种格式。 将Input.HasNext()替换为Input.HasNextLine() 将input.hasnext()替换为input.next()!