You need to enable JavaScript to run this app. Python Discord bot新成员入群自动分配角色出现AttributeError报错求助
优惠活动
大模型
产品
解决方案
定价
更多

Python Discord bot新成员入群自动分配角色出现AttributeError报错求助

报错原因

你使用的是v1.0及以上版本的discord.py库,该版本将原版本中的server属性重命名为了guild,Member对象已经不存在server属性,因此触发了AttributeError。除此之外你的代码还有两处版本不兼容问题需要同步修改:

  • discord.utils.get查询角色id时,id参数需要传入整数类型,不能传入字符串
  • 新版本discord.py中给成员添加角色的方法为member.add_roles(),不再使用client.add_roles()的调用方式
修复后的完整代码
import discord
import os
from discord.utils import get

bot_acces_token = os.environ['token']

intents = discord.Intents.default()
intents.members = True

client = discord.Client(intents=intents)

@client.event
async def on_member_join(member):
  # 将server改为guild,id传入整数类型
  role = discord.utils.get(member.guild.roles, id=123456789)
  # 调用member对象自带的add_roles方法
  await member.add_roles(role)

@client.event
async def on_ready():
  print('Bot is ready')

client.run(bot_acces_token)
额外配置校验

修改代码后如果仍然无法正常分配角色,请检查以下配置:

  • 前往Discord开发者后台的Bot设置页面,开启「Server Members Intent」权限,否则on_member_join事件不会被触发
  • 邀请Bot进服时确保勾选了「Manage Roles」权限,且Bot自身的角色层级要高于你要分配的目标角色层级

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 23:36:03