Discord机器人运行代码无报错但不上线、不响应指令问题求助
Discord机器人不在线/不响应问题修复方案
现存代码错误列表
- 缺少
os模块导入,调用os.getenv()获取Token时会触发未定义异常 - 未配置discord.py v2.0+版本强制要求的网关意图(Intents),无权限连接网关、读取消息内容
on_ready事件内的打印语句语法错误,format调用位置、括号闭合逻辑完全错误- 全代码缩进不符合Python语法要求,所有事件回调内的逻辑未正确缩进,无法被执行
keep_alive()、client.run()被错误放置在on_message事件内部,永远不会触发执行,自然无法启动机器人- 缺少
$ping指令对应的判断逻辑,无法响应该指令
修正后可运行代码
import discord import os from keep_alive import keep_alive # 声明网关意图,需和Discord开发者后台配置保持一致 intents = discord.Intents.default() intents.message_content = True intents.members = True intents.presences = True client = discord.Client(intents=intents) @client.event async def on_ready(): print(f'we have logged in as {client.user}') @client.event async def on_message(message): if message.author == client.user: return if message.content.startswith('$cmds'): await message.channel.send("Hello! how are you, my current commands are $cmds and $ping more coming soon!") # 补充ping指令响应逻辑 if message.content.startswith('$ping'): await message.channel.send(f'Pong! {round(client.latency * 1000)}ms') # 启动服务和机器人的代码需放在全局位置 keep_alive() client.run(os.getenv("Token"))
额外配置检查项
代码修改完成后,需进入Discord开发者平台的对应机器人管理页,找到「Privileged Gateway Intents」板块,开启
Presence Intent、Server Members Intent、Message Content Intent三个权限,否则机器人依然无法正常连接、接收消息。
内容的提问来源于stack exchange,提问作者Whatic
相关产品推荐
相关产品推荐

