Untitled

 avatar
unknown
python
2 years ago
970 B
4
Indexable
class IsSubscribe(BaseFilter):
    async def __call__(self, obj: Message, repo: Repo, config: Config, bot: Bot) -> bool:
        await repo.add_user_start(tg_id=obj.from_user.id)
        if await check_admin(obj, config):
            return True
        else:
            channels_info = await repo.get_all_channel_ids_and_links()
            return await is_user_subscribed(obj.from_user.id, bot, channels_info)
            



async def is_user_subscribed(user_id: int, bot: Bot, channels_info: List[Tuple[int, str]]) -> bool:
    for chat_id, _ in channels_info:
        try:
            member = await bot.get_chat_member(chat_id=chat_id, user_id=user_id)
            if member.status == 'left':
                return False
        except Exception as e:
            print(f"Ошибка при проверке подписки для пользователя {user_id} и канала {chat_id}: {e}")
            return False
    return True
Editor is loading...