Discord Bot Check Permissions в команде Kick - PullRequest
0 голосов
/ 07 марта 2019

Это моя команда удара.Но я пытался создать команду, которая проверяет, является ли забаненный участник администратором (разрешение администратора) или нет.Я не получаю никакой ошибки с кодом ниже.Но я не могу найти код, который делает это. Если я допустил какие-либо ошибки, пожалуйста, дайте мне знать, чтобы я мог исправить его как с помощью кода, так и после отправки вопроса.

@bot.command(pass_context=True)
async def kick(context, member: discord.Member):

    if context.message.author.server_permissions.kick_members:

        await bot.say('You have kick Perms so now starting the command')
        if member== context.message.server.owner:
            await bot.say('U cant ban a moderator')
        else:
            await bot.say('Almost done!')
            time.sleep(1)
            try:
                await bot.kick(member)
                await bot.send_message(bot.get_channel('553090886683197451'),'has been kicked')
            except Exception:
                    await bot.say('the member is a mod or the bot has crashed')
    else:
        await bot.say("U don't perms :sweat_smile:")

1 Ответ

1 голос
/ 07 марта 2019

Вы можете проверить разрешения для целей так же, как вы проверяете права авторов в своем текущем коде, используя атрибут sevrer_permissions:

from discord import Member
from discord.ext.commands import Bot, has_permissions, CheckFailure, BadArgument

bot = Bot("!")

@bot.command(pass_context=True, name="kick")
@has_permissions(kick_members=True)
async def kick_command(ctx, *, target: Member):
    if target.server_permissions.administrator:
        await bot.say("Target is an admin")
    else:
        try:
            await bot.kick(target)
            await bot.say("Kicked")
        except Exception:
            await bot.say("Something went wrong")

@kick_command.error
async def kick_error(error, ctx):
    if isinstance(error, CheckFailure):
         await bot.send_message(ctx.message.channel, "You do not have permissions")
    elif isinstance(error, BadArgument):
        await bot.send_message(ctx.message.channel, "Could not identify target")
    else:
        raise error
...