Задать вопрос
p1ugg
@p1ugg

Как заблокировать все функции бота пока пользователь не подпишется на канал?

Всех приветствую, возможно не совсем корректно сформулировал вопрос, айм сорри. В общем я хочу сделать так, чтобы функции бота, не были доступны, пока пользователь не подпишется на канал. Пробовал реализовать это через глобальную переменную - флажок, но как-будто есть другая функция для реализации этого, перечитал доки, не могу найти что-то. Буду благодарен за помощь.

@dp.message(CommandStart())
async def command_start_handler(message: Message):
    kb_start = InlineKeyboardBuilder()
    kb_start.add(InlineKeyboardButton(
        text='Подписаться',
        url='....')
    )
    kb_start.add(InlineKeyboardButton(
        text='Проверить',
        callback_data='check')
    )
    ...
@dp.callback_query(F.data == "check")
async def check_subscribe(callback: types.CallbackQuery, bot: Bot):
    member_status = await bot.get_chat_member(chat_id='@...', user_id=callback.message.chat.id)
        if member_status.status != 'left':
            await callback.answer("Вы являетесь участником канала ☑️")
        else:
            await callback.answer("Вы не являетесь участником канала ❌")
            ...
  • Вопрос задан
  • 227 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@Everything_is_bad
пробовал реализовать это через глобальную переменную
да когда вы уже поймете, что вам нужно персистеное хранилище (а глобальными переменные новички вообще пользоваться не умеют), упал твой бот или ты его перезапустил, всё, обнулилась твоя переменная. Используй нормальную СУБД, причем не sqlite, с ней будет проблема, потому что боты работают в конкурентной среде, а тут еще и async
Ответ написан
Ваш ответ на вопрос

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

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