使用Discord.py开发机器人报错RuntimeError: Event loop is closed 如何解决?
核心问题说明
你报错的根本原因是discord.errors.LoginFailure: Improper token has been passed,即传入的机器人登录凭证无效,触发401未授权错误。末尾的RuntimeError: Event loop is closed是登录失败后程序异常退出产生的次生报错,解决凭证问题后会自动消失。
修复步骤
- 优先重置并重新复制token:你贴出的错误日志已经泄露了你当前的机器人token
KiX-TtMr8ToGsitsv6GvD8bfc9eA7_G3,所有人都可以通过这个token操控你的机器人,请立刻前往Discord开发者后台的「Bot」页面,点击「Reset Token」生成新的token,完整复制全部字符,不要遗漏字符也不要多复制前后的空格、引号等多余内容。注意不要混淆机器人token和应用的CLIENT ID、CLIENT SECRET,后两者不能用于机器人登录。 - 适配discord.py版本代码:你复制的是discord.py v1.x版本的旧代码,如果你当前安装的是v2.x版本,需要修改初始化代码开启消息意图权限,参考修改后的完整代码如下:
import discord import os # 新增意图配置 intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) @client.event async def on_ready(): print('We have logged in as {0.user}'.format(client)) @client.event async def on_message(message): if message.author == client.user: return if message.content.startswith('$hello'): await message.channel.send('Hello!') client.run("替换为你新生成的token")
- 开启后台权限开关:修改代码后回到Discord开发者后台的「Bot」页面,下滑找到「Privileged Gateway Intents」板块,打开「Message Content Intent」开关,否则机器人无法读取频道内的消息内容。
内容的提问来源于stack exchange,提问作者PokemasterLink
相关产品推荐
相关产品推荐

