#python #discord #discord.py
#python #Discord #discord.py
Вопрос:
Это то, что у меня есть, но оно все еще не работает
@client.command()
async def addrole(ctx, member : discord.Member, role : discord.Role):
if ctx.guild.id == "777563438469087244":
await member.add_roles("799957984062865448")
else:
return
Я хочу предоставить любому, кто присоединяется к роли участника, но ТОЛЬКО с этим идентификатором сервера
Ответ №1:
ctx.guild.id
возвращает данные целочисленного типа. В вашем коде вы пытались сравнить его со строкой. Вам просто нужно удалить кавычки. Тогда вы не сможете добавить роль с идентификатором роли. Вы должны добавить саму роль.
@client.command()
async def addrole(ctx, member : discord.Member, role : discord.Role):
if ctx.guild.id == 777563438469087244:
await member.add_roles(role)
Комментарии:
1. Как мне сделать это событием при присоединении к участнику?
Ответ №2:
Guild.id
является целым числом, вы сравниваете его со строкой- в
Member.add_roles
вам нужен объект роли, а не строка
if ctx.guild.id == 777563438469087244:
await member.add_roles(role)
Кроме того, это команда, а не событие, если вы хотите добавлять роли, когда кто-то присоединяется к гильдии, вы должны использовать on_member_join
событие. Также вам необходимо включить intents.members