как я могу выйти или сломать команду в discord.py - PullRequest
2 голосов
/ 06 августа 2020

Я хочу знать, есть ли способ прервать выполнение команды, если она соответствует условию

, например, я хочу прервать эту команду, когда пользователь не является администратором

@client.command
async def test_me(ctx):
    user = ctx.author.id
    if user not in admins:
       await ctx.send("you're not admin")
       break command 
    else:
       None
    await ctx.send('Hi admin')

поэтому Я не хочу добавлять все это в оператор if, поэтому я спросил

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Вы не можете break использовать функцию. Вы должны быть в al oop, чтобы использовать break, также вам не нужен оператор else, если он пуст.

Если вы просто хотите выйти из функции, вы можете использовать return

примерно так должно работать

@client.command
async def test_me(ctx):
    user = ctx.author.id
    if user not in admins:
       await ctx.send("you're not admin")
       return 
    await ctx.send('Hi admin')
0 голосов
/ 06 августа 2020

У них есть встроенная система для требования разрешений

@commands.has_guild_permissions(manage_roles=True)

Просто замените разрешения администратором и поместите этот декоратор в свои функции.

Вот как я его использовал

@commands.bot_has_guild_permissions(manage_roles=True)
    async def remove(
        self, ctx, roles: Greedy[RoleConverter], members: Greedy[MemberConverter]
    ):
...