Отслеживание вступления и выхода из закрытого канала telegram в режиме реального времени
Мне необходимо реализовать функционал в котором пользователь нажимает на кнопку с ссылкой на закрытый канал, он туда вступает и ему автоматически придет сообщение от бота "Спасибо что подписались". В случае, если пользователь отпишется от канала, то бот должен отправить сообщение "Вы отписались от канала".
Использую aiogram 3.x через вебхук, бот с правами администратора, БД через sqlite3.
Для реализации этого функционала мне каким-то образом необходимо отслеживать in real time подписки и отписки пользователей.
Пробовал вариант с использованием telethon, но он не выводит никакие ивенты канала
from telethon import TelegramClient, events
from config import config
api_id = config.TELEGRAM_API_ID
api_hash = config.TELEGRAM_API_HASH
bot_token = config.BOT_TOKEN.get_secret_value()
client = TelegramClient('bot_session', api_id, api_hash)
async def main():
await client.start(bot_token=bot_token)
group_id = config.CHANNEL_ID
# Обработчик для новых участников
@client.on(events.ChatAction)
async def handler(event):
if event.chat_id == group_id:
if isinstance(event.action, events.ChatAction.ChatJoinedByLink):
print(f"Пользователь {event.user_id} вступил в группу по пригласительной ссылке.")
elif isinstance(event.action, events.ChatAction.ChatLeft):
print(f"Пользователь {event.user_id} вышел из группы.")
await client.run_until_disconnected()
if __name__ == '__main__':
client.loop.run_until_complete(main())
Буду рад вашим предложениям!
Вариант с кнопкой проверки подписки не подойдет, нужно чтобы бот сам отправлял сообщение пользователю