Есть ли способ выгнать всех с определенной ролью в discord.py ?

#python #discord #discord.py #discord.py-rewrite

#python #Discord #discord.py

Вопрос:

Я пытаюсь создать команду, которая выгнала всех участников с определенной ролью. Это не очень хорошо — это мой текущий код:

 import discord 
from discord.ext import commands
from discord.ext.commands import has_permissions

client = commands.Bot(command_prefix = "k!")

@client.command(pass_context=True)
@has_permissions(administrator=True)
async def kickall(ctx):
    role_id = 754061046704242799
    for role_id in roles: #roles undefined lol
        try:
            await member.kick()
        except:
            continue
  

Ответ №1:

Вы можете перебирать всех участников и проверять, имеют ли они указанную роль. Если они это сделают, вы можете выгнать их.

 @client.command(pass_context=True)
@has_permissions(administrator=True)
async def kick(ctx, role: discord.Role, reason: str=None):
    for member in ctx.guild.members:
        if role in member.roles: # does member have the specified role?
            await ctx.guild.kick(member, reason=reason)
  

Использование будет k! kick <role> <reason(optional)>

Я бы рекомендовал посмотреть документацию для получения более подробной информации.

Параметры ( ctx, role: discord.Role, reason: str=None ) следующие:

  • ctx — передается по умолчанию. Это содержит всю контекстную информацию, такую как автор сообщения, сервер, на который было отправлено сообщение и т. Д
  • role: discord.Role — пользователь должен указать роль для выгрузки при вызове команды. Двоеточие указывает python и discord.py тип, в который нужно попытаться преобразовать параметр, что означает, что он преобразует имя роли (то есть строку) в discord.Role объект, чтобы вы могли выполнять с ним операции, такие как сравнение ролей.
  • reason: str=None — необязательный параметр (по умолчанию None ). Если это предусмотрено, пользователи, которых выгнали, увидят эту строку в качестве сообщения о причине выгнали.

Комментарии:

1. Не могли бы вы добавить немного больше контекста, например, MWE?