You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.py自动添加角色的验证命令无响应问题求助

Discord验证命令无响应的排查与修复方案

你的验证命令执行后毫无反应,大概率是权限、配置或代码细节出了问题,下面是具体排查方向和修复方法:

1. 机器人权限与角色位置问题

  • 确保机器人拥有管理角色权限,并且机器人自身的角色位置要高于verified角色(不然没法给用户添加这个角色)。
  • 检查机器人是否有删除消息和发送私信的权限,缺少这些权限会导致对应步骤失败。

2. 频道ID与角色名称匹配错误

  • 核对频道ID是否完全正确,不要出现数字多打、少打的情况。
  • 确认verified角色的名称完全一致,注意大小写(比如Verified和verified会被视为不同角色),也不要有多余的空格。可以在代码里加一句print(role),如果输出None,说明没找到对应角色。

3. Intents配置缺失(Discord.py v2.0+必看)

从Discord.py v2.0开始,必须启用message_content意图才能读取消息内容,否则机器人根本拿不到用户发送的"verify"文本。

  • 代码开头添加意图配置:
    intents = discord.Intents.default()
    intents.message_content = True
    client = discord.Client(intents=intents)
    
  • 同时要去Discord开发者后台的机器人页面,开启Message Content Intent权限。

4. 代码细节优化

给你调整后的代码,增加了错误处理和细节优化:

@client.event
async def on_message(message):
    # 跳过机器人自身的消息,避免循环触发
    if message.author.bot:
        return
    
    if message.channel.id == 1099599418551963699:
        # 用strip处理用户可能输入的前后空格
        if message.content.strip() == "verify":
            role = discord.utils.get(message.guild.roles, name="verified")
            if role:
                await message.author.add_roles(role)
                # 处理用户拒收私信的情况
                try:
                    embed = discord.Embed(title="Verified", description=f"You have been verified", color=0x0000FF)
                    await message.author.send(embed=embed)
                except discord.Forbidden:
                    await message.channel.send(f"{message.author.mention} 无法给你发送私信,请检查隐私设置!", delete_after=5)
            else:
                print("错误:找不到名为'verified'的角色")
        # 删除当前频道内的消息
        await message.delete()

内容的提问来源于stack exchange,提问作者Bailey Norris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 22:45:11