@varmiloff

Как сделать анти-слив систему Дискорд?

Привет. Хочу сделать анти-слив систему для моего бота Дискорд. Чтобы при выдачи определенной роли каким-то пользователем, она снималась. Я написал некий код, но все равно когда выдаю роль - она не снимается. В консоль ошибки нет.
Вот код:
#anti sliv system
@client.event
async def on_member_update(before,after):
  bad_role = discord.utils.get(client.guild.roles, id =742695680635568139)
  member = after.roles
  roles = discord.Role
  for role in after.roles:
    if role.mention == bad_role:
        await member.remove_roles(bad_role)
        await member.remove_roles(role)
        return
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
@Andriy_Kosmenyuk
if role.mention == bad_role:
role.mention
``` Returns a string that allows you to mention the member. ```
Я думаю что проблема в условии. Вместо перебора лучше сделать условие
guild_roles_ids = [role.id for role in guild.roles]
if role.id in guild_roles_ids: ...

Та и само условие лучше вынести в отдельную функцию.
И что делат роль плохой "bad_role"? Я думаю тут лучше назвать что то вдухе forbidden_role, not_allowed_role, role_ with_restrict_access
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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