Top.Mail.Ru
Ответы

Python telebot как сделать проверку на подписку на канал

?

По дате
По рейтингу
Аватар пользователя

Для проверки на то, подписан ли пользователь на определенный канал, можно использовать метод get_chat_member().

Например:

12345678910111213141516171819202122
 import telebot 
 
bot = telebot.TeleBot('YOUR_BOT_TOKEN') 
 
channel_id = '@your_channel_username' 
 
@bot.message_handler(commands=['start']) 
def start(message): 
    user_id = message.from_user.id 
     
    try: 
        chat_member = bot.get_chat_member(channel_id, user_id) 
          
        if chat_member.status != 'left': 
            bot.reply_to(message, "Вы подписаны на канал!") 
        else:  
            bot.reply_to(message, "Вы не подписаны на канал. Пожалуйста, подпишитесь, чтобы продолжить.") 
    except Exception as e: 

        bot.reply_to(message, "Произошла ошибка при проверке подписки на канал.") 
 
bot.polling() 

У бота должны быть права администратора в канале, в котором он будет проверять подписку.

Аватар пользователя
Ученик
6мес

Можно не делать а использовать готовый бот )
ucmoder_bot
он же антиспам и проверка подписки на ваш канал

Аватар пользователя
Профи

Для проверки подписки на Telegram каналы через Python Telebot можно использовать следующий код.

import telebot

# Замените значение на ваш токен от BotFather
TOKEN = 'your_token_here'

# Создаем бота
bot = telebot.TeleBot(TOKEN)

@bot.message_handler(commands=['start'])
def start(message):
chat_id = message.chat.id
bot.send_message(chat_id, 'Привет! Для проверки подписки на канал отправьте мне название канала.')

@bot.message_handler(func=lambda message: True)
def check_subscription(message):
chat_id = message.chat.id
channel_name = message.text

# Проверка подписки
if channel_name.startswith('@'):
try:
bot.send_message(chat_id, f'Вы подписаны на канал {channel_name}')
except Exception as e:
bot.send_message(chat_id, f'Ошибка: {e}')
else:
bot.send_message(chat_id, 'Название канала должно начинаться с @')

bot.polling()


Этот код создает Telegram бота, который принимает название канала от пользователя и проверяет его подписку на этот канал. Пожалуйста, не забудьте заменить `'your_token_here'` на ваш реальный токен бота.