@underc

Как правильно отключать бота на определенных серверах?

У меня есть json конфиг следующего формата:
[
    {
        "server_id": 123
        "active": false
    },
    {
        "server_id": 321
        "active": true
    },
]

Как мне реализовать отключение бота на серверах с active==false, чтобы при этом он не выходил с сервера?
Нужно ли мне в начале обработчика каждой команды вставлять проверку на active, или есть какой то более правильный способ применять данную логику глобально? Спасибо
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ответы на вопрос 1
@underc Автор вопроса
При помощи такого решения теперь достаточно лишь добавить декоратор к каждой команде, тогда команды перестанут работать на серверах, где active==false
import discord.ext.commands as commands

def get_whitelist():
    #  Получает список серверов с active==true
    ...

def is_active(ctx):
    return ctx.guild.id in get_whitelist()

@client.slash_command(name="isavailable", pass_context=True)
@commands.check(is_active)
async def isavalable_command_handler(ctx):
    await ctx.response.send_message('бот доступен на вашем сервере!')

Меня это вполне устраивает, но был бы рад услышать, что есть решение получше этого
Ответ написан
Ваш ответ на вопрос

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

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