首页 > 解决方案 > AttributeError:“DiscordClient”对象没有属性“edit_role”

问题描述

我尝试使用discord.py在 Discord 服务器上更改角色颜色。但是运行后我得到了错误: AttributeError: 'DiscordClient' object has no attribute 'edit_role'

代码:

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)
        role = discord.utils.get(server.roles)
        print(role)
        await self.edit_role(server=server, role=role, 
                             hoist=True, colour=discord.Colour(0xe91e63))

client = DiscordClient()
client.run(discord_token)

Bot 成功登录,打印server并按role预期进行。谷歌搜索并查看文档后找不到答案。我拥有编辑角色的所有权限(我在自己的服务器上测试了机器人)。这没有被弃用,在来自githubedit_role的已关闭问题上,我也找不到任何有用的东西

标签: pythondiscord.py

解决方案


Client.edit_role已从Role.edit1.0 版本中删除并替换为(您可以使用 来检查您的版本print(discord.__version__))。

无论您使用什么资源都是过时的。您应该阅读迁移指南以了解所做的更改,如果您怀疑方法或协程已被移动,请搜索文档。

class DiscordClient(discord.Client):
    async def on_ready(self):
        print("Login as")
        print(self.user)
        print("-------")
        server = discord.utils.get(self.guilds)
        print(server)
        role = discord.utils.get(server.roles)
        print(role)
        await role.edit(hoist=True, colour=discord.Colour(0xe91e63))

推荐阅读