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

Python 3.9.x下使用discord.py开发准入系统出现AttributeError求助

错误原因

你遇到的AttributeError: 'Client' object has no attribute 'add_roles'报错,是因为discord.py库的add_roles方法属于成员(Member)对象,而非全局的客户端(Client)对象,你调用的对象错误。

修复步骤
  • 替换添加身份组的代码行:将原代码中await client.add_roles(message.author, role)修改为await message.author.add_roles(role)
  • 补充角色存在判断,避免角色不存在时触发参数异常
  • 确认权限配置:
    • 机器人账号需要在服务器内持有「管理身份组」权限
    • 机器人自身的身份组在服务器身份组排序中,必须高于要分配的Hoplite身份组
  • 若使用discord.py 2.0及以上版本,还需要在Discord开发者后台开启消息内容意图,同时初始化Client时传入对应的intents配置,否则机器人无法读取消息内容触发指令。
修复后完整代码
import discord
from discord.utils import get
import os

# 2.0以下版本可删除intents相关配置,直接使用client = discord.Client()
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)

@client.event
async def on_ready():
  print('we are logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.content == 'give me admin':
        role = get(message.guild.roles, name='Hoplite')
        # 新增角色非空判断
        if role:
            await message.author.add_roles(role)
        else:
            await message.channel.send("未找到对应身份组")

client.run(os.getenv('Token'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:54:03