@romka13323

Как проверить выполнение условия у пользователя бота, который ранее уже пользовался им?

Бот проверяет условия пользователя (в данном случае - проверку подписки на чат). Если пользователь в чате, то запускается функционал бота, если нет, то бот просит подписаться на чат.

Дело в том, что с новыми пользователями, все работает хорошо. Подписка проверяется и просит подписаться в случае, если это не было сделано. Но пользователи, которые ранее запускали бота, когда еще не было проверки этого условия, могут пользоваться ботом без проблем, даже если у них нет подписки.

Как проверять старых пользователей на подписку на чат тоже?

import crypto_parser 

from keyboards import sub_verification_menu 
from aiogram import Bot, Dispatcher, types 
from aiogram.utils import executor 



API_TOKEN = 'ч' 



bot = Bot(token=API_TOKEN, parse_mode='HTML') 
dp = Dispatcher(bot) 


def sub_verification(chat_member): 
    if chat_member["status"] != "left": 
        return True 
    else: 
        return False 


@dp.message_handler(commands=["start"]) 
async def send_welcome(message: types.Message): 
    if message.chat.type == 'private': 
        if sub_verification(await bot.get_chat_member(chat_id="ч", user_id=message.from_user.id)): 
            await message.reply(" Hi! I’m here and ready to work! Send me any token address\n") 
        else: 
            await message.answer("Bot only works for users who have a private subscription", reply_markup=sub_verification_menu) 


@dp.message_handler() 
async def echo_message(msg: types.Message): 
    if msg.chat.type == 'private': 
        if sub_verification(await bot.get_chat_member(chat_id="ч", user_id=msg.from_user.id)): 
            Основной функционал бота

                return data 
        else: 
            await msg.answer("Bot only works for users who have a private subscription", reply_markup=sub_verification_menu) 
            

@dp.callback_query_handler(text="sub_check") 
async def sub_check(message: types.Message): 
    await bot.delete_message(message.from_user.id, message.message.message_id) 
    if sub_verification(await bot.get_chat_member(chat_id="ч", user_id=message.from_user.id)): 
        await bot.send_message(message.from_user.id, " Hi! I’m here and ready to work! Send me any token address\n") 
    else: 
        await bot.send_message(message.from_user.id, "Bot only works for users who have a private subscription", reply_markup=sub_verification_menu) 


if __name__ == '__main__': 
    executor.start_polling(dp, skip_updates=True)
  • Вопрос задан
  • 10 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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