Discord真心话大冒险机器人调用无响应问题求助
Discord 真心话大冒险机器人无响应问题排查与修复
问题概述
开发的Discord真心话大冒险机器人部署在Replit平台,已成功上线且配置了管理员、读取消息及发送消息权限,但执行!truth、!dare命令时机器人无任何响应,运行过程中未出现报错信息。
问题根源
代码存在两个核心问题:
- 缺少消息内容读取权限:Discord的
Intents.default()默认不包含message_content权限,而命令解析模块需要读取消息内容才能识别命令前缀与具体指令。 - 冗余的命令处理调用:在
truth和dare命令函数中调用await bot.process_commands(ctx.message)会触发重复的命令处理流程,干扰正常逻辑执行。
修复后的完整代码
import discord from discord.ext import commands import random # 配置机器人所需的意图,新增消息内容读取权限 intents = discord.Intents.default() intents.typing = False intents.presences = False intents.message_content = True # 开启消息内容读取权限,命令解析必须 bot = commands.Bot(command_prefix='!', intents=intents) # 真心话问题列表(已翻译为中文) truth_questions = [ "你有没有骗过最好的朋友?", "你最大的恐惧是什么?", "你有没有考试作弊过?", "你最尴尬的时刻是什么?", "你有没有偷过东西?", "你的隐藏天赋是什么?", "你有没有撒谎被抓现行?", "你最后悔的事是什么?", "你有没有偷听别人的对话?", "你闯过的最大祸是什么?" ] # 大冒险任务列表(已翻译为中文) dare_tasks = [ "立刻做10个俯卧撑!", "大声唱一首歌!", "给大家讲个笑话!", "跳一段搞笑的舞蹈!", "接下来5分钟用外国口音说话!", "给一个随机朋友打电话说‘我爱你!’", "靠墙做一个倒立!", "给你的暗恋对象发消息说你喜欢TA!", "吃一勺辣酱!", "在公共场所做一个侧手翻!" ] @bot.event async def on_ready(): print(f"已登录为 {bot.user.name}") @bot.command() async def truth(ctx): question = random.choice(truth_questions) await ctx.send(f"真心话:{question}") @bot.command() async def dare(ctx): task = random.choice(dare_tasks) await ctx.send(f"大冒险:{task}") # 替换为你的机器人Token bot.run('你的机器人Token')
关键配置补充
除代码修改外,需在Discord开发者平台完成以下操作:
- 进入机器人的Privileged Gateway Intents设置页面
- 开启
Message Content Intent选项并保存更改
内容的提问来源于stack exchange,提问作者Haneen Alobaidi
相关产品推荐
相关产品推荐

