discord.py 在使用 add_roles 时等待“AttributeError:'list' 对象没有属性 'id'”

Posted

技术标签:

【中文标题】discord.py 在使用 add_roles 时等待“AttributeError:\'list\' 对象没有属性 \'id\'”【英文标题】:discord.py await "AttributeError: 'list' object has no attribute 'id'" while using add_rolesdiscord.py 在使用 add_roles 时等待“AttributeError:'list' 对象没有属性 'id'” 【发布时间】:2021-04-18 17:44:39 【问题描述】:

我尝试使用 discord.py 创建机器人,并尝试使用 discord.ext 命令使用 add_roles 成员函数。

这是我的代码:

import os

import discord
from dotenv import load_dotenv

from discord.ext import commands

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
GUILD = os.getenv('DISCORD_GUILD')

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


@client.event


async def on_ready():
    guild = discord.utils.get(client.guilds, name=GUILD)

    print(
        f'client.user is connected to the following guild:\n'
        f'guild.name (id: guild.id)'
    )
    members = guild.members
    for member in members:
        role = discord.utils.get(member.guild.roles, name='test 2')
        await member.add_roles([role],False)

当它调用“await member.add_roles([role], False)”时,会出现如下错误:

    Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/discord/client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "/Users/tanay/Documents/Python CYOA/bot.py", line 31, in on_ready
    await member.add_roles([role],False)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/discord/member.py", line 676, in add_roles
    await req(guild_id, user_id, role.id, reason=reason)
AttributeError: 'list' object has no attribute 'id'

我一直在进行大量互联网搜索,但找不到解决此问题的方法。有谁知道我做错了什么?

非常感谢!

【问题讨论】:

澄清一下,await member.add_roles(role, False) 中的False 是做什么的? 这是来自 discord API 的引用:“atomic (bool) – 是否自动添加角色。这将确保无论缓存的当前状态如何,都将始终应用多个操作。” 【参考方案1】:

当您添加一个角色时,您不必将其放入[]。这就是您收到此错误的原因。所以你只需要删除括号。

...
for member in members:
    role = discord.utils.get(member.guild.roles, name='test 2')
    await member.add_roles(role)

【讨论】:

如果我这样做,它会显示“AttributeError: 'bool' object has no attribute 'id'”将“list”替换为“bool”。

以上是关于discord.py 在使用 add_roles 时等待“AttributeError:'list' 对象没有属性 'id'”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 discord.py 中将字符串更改为不和谐 id

discord.py,同时使用斜杠命令和前缀

如何在 discord.py 中使用高级命令处理

调整图像大小 discord.py

Discord bot 添加对消息 discord.py 的反应(无自定义表情符号)

discord.py - FFmpegPCMAudio 使用大量 CPU