flyska
@flyska

Как сделать команду которую могут использовать пользователи с определенной ролью discord.py?

Хочу сделать так что-бы пользователи с определенной ролью мог использовать команду
Мой бот находится на нескольких серверах и я хочу что-бы на всех серверах это работала и только пользователи с определенной ролью на сервере бота мог использовать команду
код команды
@bot.command()
@commands.has_any_role(811835508064911370)
async def изменитьактивность(ctx, *, arg):
    await bot.change_presence(activity=discord.Game(name=f"{arg}"))
    embed=discord.Embed(title="Активность бота изменена успешна", color=0x00ff00)
    embed.add_field(name="Активность изменена на", value=f"{arg}", inline=False)
    await ctx.send(embed=embed)
    print(f'[Logs:info] {ctx.author} Изменил активность бота на {arg}')

@изменитьактивность.error
async def изменитьактивность_error(ctx, error):
    if isinstance(error, commands.MissingAnyRole):
        embed = discord.Embed(title="Ошибка", description="У вас отсутствуем роль для использовании команды", color=0xff0000)
        await ctx.send(embed=embed)
  • Вопрос задан
  • 2023 просмотра
Решения вопроса 1
Создайте собственную проверку на наличие определённой роли на определенном сервере:

def is_special():
    async def predicate(ctx):
        guild = bot.get_guild(365017572336731127)
        if not (member := guild.get_member(ctx.author.id)):
            return
        return guild.get_role(129386605897151407) in member.roles
    return commands.check(predicate)

@bot.command()
@is_special()
async def cmd(ctx, ...):
    ...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы