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