@Kadabrov

Как ограничить доступ к каналу пользователям с одинаковыми никами?

Есть функция, которая автоматически раздает роли, тем кто присутствует в списке, с помощью роли пользователи получают доступ к приватному голосовому каналу

@bot.event
async def on_voice_state_update(member, before, after):
    clients = ['Dr','1','2']
    if not before.channel and after.channel:
        role = discord.utils.get(member.guild.roles, name="Клиент")
        if member.display_name in clients:
            await member.add_roles(role)
    elif before.channel and not after.channel:
        role = discord.utils.get(member.guild.roles, name="Клиент")
        await member.remove_roles(role)

Возникает проблема, когда умный пользователь ставит себе ник такой же, как у пользователя с ролью, и получает доступ.
Я пытался получить список пользователей приватного канала и проверить, если есть такой на канале, то не давать. Также пытался получить ID пользователя записать его и проверить, но у member нет такого атрибута как ID.
  • Вопрос задан
  • 919 просмотров
Решения вопроса 1
У discord.Member есть аттрибут id.

@bot.event
async def on_voice_state_update(member, before, after):
    clients = [969338428647912064, 424184503818564866, 424184503818564866]
    role = bot.get_role(240688302893711904)
    if not before.channel and after.channel:
        if member.id in clients:
            await member.add_roles(role)
    elif before.channel and not after.channel:
        await member.remove_roles(role)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы