управление ролями для определенного идентификатора discord

#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:

  1. Guild.id является целым числом, вы сравниваете его со строкой
  2. в Member.add_roles вам нужен объект роли, а не строка
 if ctx.guild.id == 777563438469087244:
    await member.add_roles(role)
 

Кроме того, это команда, а не событие, если вы хотите добавлять роли, когда кто-то присоединяется к гильдии, вы должны использовать on_member_join событие. Также вам необходимо включить intents.members