Не могу никак сделать так чтобы при нажатии кнопки, "я подписался" проверялась подписка, он автоматически всех считает что подписаны. А если убрать бота из админов канала на который идёт подписка, то он всех считает неподписанными.
import telebot
from telebot.apihelper import ApiTelegramException
from telebot import types
import time
bot = telebot.TeleBot("Token")
CHAT_ID = '@channel_name'
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
@bot.message_handler(commands=['start'])
def start_message_handler(message):
try:
keyboard = types.InlineKeyboardMarkup(row_width=1)
url_button = types.InlineKeyboardButton(text="ПОДПИСАТЬСЯ", url="Sylka")
check_button = types.InlineKeyboardButton(text="Я ПОДПИСАЛСЯ", callback_data="check_subscribe")
keyboard.add(url_button, check_button)
bot.send_message(message.chat.id, "Для того чтобы посмотреть фильм, подпишься на канал!", reply_markup=keyboard)
except:
pass
@bot.callback_query_handler(func=lambda call: True)
def callback_query(call):
try:
if not is_subscribed(CHAT_ID, call.from_user.id):
keyboard = types.InlineKeyboardMarkup(row_width=1)
url_button = types.InlineKeyboardButton(text="ПОДПИСАТЬСЯ", url="Sylkaa")
check_button = types.InlineKeyboardButton(text="Я ПОДПИСАЛСЯ", callback_data="check_subscribe")
keyboard.add(url_button, check_button)
bot.send_message(call.from_user.id, 'Не подписан, попробуй снова', reply_markup=keyboard)
else:
keyboard = types.InlineKeyboardMarkup()
url_button_add = types.InlineKeyboardButton(text="СМОТРЕТЬ ФИЛЬМ", url="sylka")
keyboard.add(url_button_add)
bot.send_message(call.from_user.id, '', reply_markup=keyboard)
except:
pass
if __name__ == '__main__':
try:
bot.polling()
except Exception as e:
print(e)
time.sleep(10)