Discord bot运行失败提示Improper token及Event loop is closed如何解决?
错误根源
你遇到的核心错误是discord.errors.LoginFailure: Improper token has been passed.,即传入的Discord Bot令牌无效,后续的RuntimeError: Event loop is closed是令牌验证失败后程序异常退出触发的次生错误,解决令牌相关问题后该报错会自动消失。
解决方案
- 第一步:替换代码中的占位令牌
你当前代码里client.run('token')的参数是占位字符串,需要替换为你在Discord开发者平台申请到的真实Bot令牌:- 登录Discord开发者平台,进入对应Bot应用的「Bot」标签页
- 点击「Reset Token」生成全新令牌,复制完整的令牌字符串
- 将令牌粘贴替换掉代码里的
token字符串,注意不要保留多余的空格、换行符或其他额外字符
注意:不要向任何人泄露你的Bot令牌,他人拿到令牌可以直接控制你的Bot。
- 第二步:如果替换真实令牌后仍报错,检查以下配置
- 确认你在Discord开发者平台的Bot设置页,已经开启了所需的权限开关,如果你用的是discord.py v2.x及以上版本,需要开启
Message Content Intent开关 - 补充网关意图配置,discord.py v2.x之后强制要求声明网关意图,修正后的完整代码如下:
import discord from discord.ext import commands # 声明网关意图 intents = discord.Intents.default() # 需要读取消息内容触发指令的话必须开启以下配置,同时对应开发者平台的Message Content Intent开关要打开 intents.message_content = True client = commands.Bot(command_prefix='!', intents=intents) @client.command() async def hello(ctx): await ctx.send('Hello') # 替换为你自己的真实Bot令牌 client.run('你复制的真实令牌')- 确认你的网络可以正常访问Discord服务,国内网络需要配置全局代理才能正常连接Discord服务器。
- 确认你在Discord开发者平台的Bot设置页,已经开启了所需的权限开关,如果你用的是discord.py v2.x及以上版本,需要开启
内容的提问来源于stack exchange,提问作者noname
相关产品推荐
相关产品推荐

