manavar_g
@manavar_g
Чайник ;)

Как просматривать ботом дискорд наличие роли у игрока, а не существование её на сервере?

Здрасьте! Вопрос такой. Бот слушается команду !start, и если у пользователя нет роли BUNKER, он не сможет её использовать и наоборот, если роль есть. Но происходит так, что роль просто Существует на сервере, у пользователя ей нет и он может писать !start, а если удалить роль с сервера, пишет что нужна роль.
@bot.command(name='start', help='Начать набор в игру.') #разрешаем передавать 
агрументы
async def start(context): #создаем асинхронную фунцию бота
creator = context.author

isCreatorCan = [ True if r.name == 'BUNKER' else False for r in 
creator.guild.roles]
if not any(isCreatorCan):
    message = await context.send("Только пользователь с ролью BUNKER может 
создавать игры.")
    return

room[creator.id] = creator

response = build_register_message()
message = await context.send(response)

await message.add_reaction("☢️")
await context.message.delete()

Помогите ради бога, а то я боюсь выкинуть этого бота в окно
  • Вопрос задан
  • 383 просмотра
Решения вопроса 1
Megum1n
@Megum1n
Использую библиотеку Discord.py
Там существует метод role.members, который возвращает list всех членов роли.

server = self.get_guild(server_id)
member = server.get_member(user_id)
role = server.get_role(role_id)

return True if member in role.members else False
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы