✅ Получить готовый исходник можно за донат в 50 руб. donationalerts.com/r/codewriter ‼️ В сообщении к донату прикрепить ссылку на видео + ссылку на Telegram для связи Telegram Канал — t.me/codewritercommunity Python Club — go.pyth.club/codewriter Группа в ВК — vk.com/codewriter_official #codewriter #python #aiogram Таймкоды: 00:00 Вступление 00:05 Реклама 01:05 Структура бота 01:55 Функция проверки подписки на канал 03:20 Проверяем подписку при команде /start 04:05 Вывод сообщения если пользователь не подписан 05:55 Добавление бота в администраторы канала 06:55 Кнопки для пользователя без подписки 08:50 Обработчик кнопки ПОДПИСАЛСЯ 10:50 Проверка подписки для остального функционала 11:10 Тест бота
Источник: mpeg.media
Чат-бот в Telegram с проверкой подписки на ваш канал
Доступ к боту только после подписки телеграм | Проверка подписки на телеграм канал
Рассмотрим чат-бота, который проверяет подписался ли пользователь на ваш канал в Телеграме. И, в зависимости от статуса подписки, выдаёт разный контент.
Как проверить, подписан ли пользователь на определенный канал Telegram (Python / PyTelegramBotApi)?
Пишу Telegram-бота с помощью библиотеки PyTelegramBotApi, хотелось бы реализовать функцию проверки подписки пользователя на определенный телеграм-канал, а если таковой нет, предлагать оформить подписку. Заранее благодарим за ответы!
user14472542 18 окт ’20 в 17:31 2020-10-18 17:31
2020-10-18 17:31
1 ответ
Использовать getChatMember чтобы проверить, является ли пользователь участником канала или нет.
getChatMember
Используйте этот метод, чтобы получить информацию об участнике чата. В случае успеха возвращает объект ChatMember.
import telebot bot = telebot.TeleBot(«TOKEN») CHAT_ID = -1001. USER_ID = 700. result = bot.get_chat_member(CHAT_ID, USER_ID) print(result) bot.polling()
Результат образца:
Вы получаете информацию о пользователе, если пользователь является участником
или исключение в противном случае
telebot.apihelper.ApiTelegramException: A request to the Telegram API was unsuccessful. Error code: 400 Description: Bad Request: user not found
пример того, как использовать его в вашем проекте
import telebot from telebot.apihelper import ApiTelegramException bot = telebot.TeleBot(«BOT_TOKEN») CHAT_ID = -1001. USER_ID = 700. def is_subscribed(chat_id, user_id): try: bot.get_chat_member(chat_id, user_id) return True except ApiTelegramException as e: if e.result_json[‘description’] == ‘Bad Request: user not found’: return False if not is_subscribed(CHAT_ID, USER_ID): # user is not subscribed. send message to the user bot.send_message(CHAT_ID, ‘Please subscribe to the channel’) else: # user is subscribed. continue with the rest of the logic # . bot.polling()
Источник: stackru.com