Для проверки на то, подписан ли пользователь на определенный канал, можно использовать метод get_chat_member().
Например:
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()
У бота должны быть права администратора в канале, в котором он будет проверять подписку.
python2009monsterУченик (47)
11 месяцев назад
вот код (я не весь код вставлял а только ту часть которая нужна):
channel_username='-1002022328830'
try:
@bot.message_handler(commands=['start1'])
def start1(message):
def is_sub(channel_username, user_id):
bot.get_chat_member(channel_username=channel_username, user_id=message.chat.id)
return True
user_id=message.chat.id
if not is_sub(channel_username, user_id):
bot.reply_to(message, 'подпишитесь на канал')
else:
bot.reply_to(message, 'вы подписаны')