no_SNITCH
@no_SNITCH
начинающий программист

Как сделать команды в python боте discord доступными только для администратора сервера?

необходимо, чтобы некоторые команды, который вводил обычный пользователь сервера были ему недоступны.
  • Вопрос задан
  • 1331 просмотр
Решения вопроса 2
@dreameddd
Если по ролям, то можно использовать has_any_role (для 2-ух ролей) или has_role (для 1-ой роли), в случае, если у пользователя нет нужной роли - то бот не будет реагировать на команду от этого пользователя.
admin = # id роли
moder = # id роли

# для 2-ух ролей:
@bot.command()
@commands.has_any_role(admin or moder)
async def test(ctx):
    await ctx.send("Hello!")

# для 1-ой роли:
@bot.command()
@commands.has_role(admin)
async def test(ctx):
    await ctx.send("Hello!")
Ответ написан
SoreMix
@SoreMix Куратор тега Python
yellow
Вариантов много, хоть внутри функции с обработкой команды, хоть декоратором. Думаю, декоратором будет правильнее. В discordpy есть специальный декоратор для этого, чтобы свой не придумывать
@commands.has_guild_permissions(administrator=True)


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

from discord.ext import commands

@bot.command()
@commands.has_guild_permissions(administrator=True)
async def test(ctx):
    ctx.send('hello world')


@test.error
async def test_error(ctx, error):
    if isinstance(error, commands.errors.MissingPermissions):
        await ctx.send('Недостаточно прав')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
yupiter7575
@yupiter7575
Python программист
Вы слышали про if else?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы