Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Discord.py将角色赋予用户-';用户';对象没有属性';公会';_Python_Discord.py - Fatal编程技术网

Python Discord.py将角色赋予用户-';用户';对象没有属性';公会';

Python Discord.py将角色赋予用户-';用户';对象没有属性';公会';,python,discord.py,Python,Discord.py,所以我正在尝试编写一个机器人,它给用户一个角色,这样他们就可以看到他们的禁令信息。除了实际赋予用户所说的角色之外,一切都在运行。我在这些论坛、reddit和docs上发现了相互矛盾的建议,但这些解决方案似乎都不起作用 这是我的密码: role = await message.guild.create_role(name=ban_str) category = discord.utils.get(message.guild.categories, name="Tickets")

所以我正在尝试编写一个机器人,它给用户一个角色,这样他们就可以看到他们的禁令信息。除了实际赋予用户所说的角色之外,一切都在运行。我在这些论坛、reddit和docs上发现了相互矛盾的建议,但这些解决方案似乎都不起作用

这是我的密码:

role = await message.guild.create_role(name=ban_str)
category = discord.utils.get(message.guild.categories, name="Tickets")
overwrites = {
    message.guild.me: discord.PermissionOverwrite(read_messages=True),
    message.guild.default_role: discord.PermissionOverwrite(read_messages=False),
    role: discord.PermissionOverwrite(read_messages=True, send_messages=False)
}
channel = await message.guild.create_text_channel(banstr, category=category, overwrites=overwrites)
user = client.get_user(int(user_id))
await discord.Member.add_roles(user, role, reason="[Ban Ticket] Added user to ticket " + banstr)
我得到了一个错误:

AttributeError: 'User' object has no attribute 'guild'
AttributeError: 'NoneType' object has no attribute '_state'
我已尝试将“用户”作为成员对象,将
user=client.get\u user(int(user\u id))
替换为
user=message.guild.get\u member(int(user\u id))
,但随后出现错误:

AttributeError: 'User' object has no attribute 'guild'
AttributeError: 'NoneType' object has no attribute '_state'

如果有人看到我在这里做错了什么,非常感谢任何帮助

使用
message.guild.get_member()


用户
没有设置工会,因为用户只是一个身份证是什么的人?你的化身是什么,等等
Member
是一个与之相关的公会。

尝试
user=wait client.fetch\u user(int(user\u id))
您可以这样尝试:

intents = discord.Intents.all()
intents.members = True
# Firstly you have to enable all intents in you bot application in the developer portal
# Secondly you should read what's there standing as description and maybe configure it for this

client = discord.Client(intents=intents)
...

role = await message.guild.create_role(name=ban_str)
category = discord.utils.get(message.guild.categories, name="Tickets")
overwrites = {
    message.guild.me: discord.PermissionOverwrite(read_messages=True),
    message.guild.default_role: discord.PermissionOverwrite(read_messages=False),
    role: discord.PermissionOverwrite(read_messages=True, send_messages=False)
}
channel = await message.guild.create_text_channel(banstr, category=category, overwrites=overwrites)
user = client.get_user(int(user_id))
await user.add_roles(role, reason="[Ban Ticket] Added user to ticket " + banstr)
否则,如果您仍然从
获取
NoneType
。获取用户()
尝试:

intents = discord.Intents.all()
intents.members = True
# Firstly you have to enable all intents in you bot application in the developer portal
# Secondly you should read what's there standing as description and maybe configure it for this

client = discord.Client(intents=intents)
...

role = await message.guild.create_role(name=ban_str)
category = discord.utils.get(message.guild.categories, name="Tickets")
overwrites = {
    message.guild.me: discord.PermissionOverwrite(read_messages=True),
    message.guild.default_role: discord.PermissionOverwrite(read_messages=False),
    role: discord.PermissionOverwrite(read_messages=True, send_messages=False)
}
channel = await message.guild.create_text_channel(banstr, category=category, overwrites=overwrites)
user = client.fetch_user(int(user_id))
# ^ This is an API Function which you shouldn't use but in such cases you have to
await user.add_roles(role, reason="[Ban Ticket] Added user to ticket " + banstr)

嘿!感谢您的响应,当我使用
user=message.guild.get\u member(int(user\u id))
而不是
client.get\u user()
时,我得到了错误
AttributeError:'NoneType'对象没有属性'\u state'
。如何从用户ID创建成员对象?@Ethan您是否启用了
成员
意图?