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

使用discord.py修改Discord角色颜色遇AttributeError报错求助

解决discord.py中AttributeError: 'DiscordClient' object has no attribute 'edit_role'的问题

你碰到这个错误是因为discord.py v1.0及以上版本已经移除了Client.edit_role()方法,旧版本的API写法不再适用啦。现在修改角色属性的正确方式是直接调用角色对象自身的edit()方法。

问题分析

你的代码里尝试通过客户端对象self调用edit_role(),这是discord.py早期版本的用法。在新版本中,角色的编辑操作已经被封装到discord.Role对象内部,不需要再通过客户端来中转。

修正后的代码

只需要把原来的编辑角色那一行替换成角色对象的edit()调用即可:

import discord
import os
import asyncio
from dotenv import load_dotenv, find_dotenv
load_dotenv()
discord_token = os.environ['your_discord_bot_token']

class DiscordClient(discord.Client):
    async def on_ready(self):
        print("Login as")
        print(self.user)
        print("-------")
        server = discord.utils.get(self.guilds)
        print(server)
        # 建议指定角色名称/ID来精准获取目标角色,避免拿到@everyone
        role = discord.utils.get(server.roles, name="测试角色")
        # 或者用ID获取:role = server.get_role(1234567890)
        print(role)
        # 直接调用角色对象的edit方法
        await role.edit(hoist=True, colour=discord.Colour(0xe91e63))

client = DiscordClient()
client.run(discord_token)

额外提醒

  • 如果你用discord.utils.get(server.roles)不指定筛选条件,默认会拿到服务器的@everyone角色,这个角色的部分属性(比如hoist)是无法修改的,建议通过角色名称或ID精准定位你要修改的角色。
  • 确保机器人账号确实拥有管理角色的权限,并且机器人的角色位置要高于目标角色(否则无法修改该角色)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:31:40