You need to enable JavaScript to run this app. 为什么我编写的Discord自动角色分配机器人on_member_join代码不生效?
优惠活动
大模型
产品
解决方案
定价
更多

为什么我编写的Discord自动角色分配机器人on_member_join代码不生效?

问题排查及修复方案
  • 核心语法错误修复
    你代码中查询到的角色赋值给了变量rank,但调用add_roles方法时传入的是未定义的role变量,运行时会直接触发NameError报错,这是功能失效的最直接原因。
    修复后的代码示例:
@bot.event
async def on_member_join(member): 
    role = discord.utils.get(member.guild.roles, name="Unverify") 
    await member.add_roles(role)
  • 权限配置检查
    要保证机器人在对应服务器内拥有管理角色权限,且机器人自身的角色在服务器角色列表中的排序,高于你要分配的Unverify角色,否则会触发权限不足的报错。
  • 事件监听意图开启
    如果你使用的是discord.py v2.0及以上版本,需要在初始化bot实例时开启成员相关监听意图,否则on_member_join事件不会被触发,初始化参考代码:
import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.members = True
bot = commands.Bot(command_prefix='你设置的前缀', intents=intents)
  • 角色名匹配检查
    确认服务器内实际存在名为Unverify的角色,注意大小写、前后空格都要完全匹配,否则discord.utils.get会返回None,调用add_roles时会触发参数错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 21:39:03