python telebot не работает проверика подписки на каналы
Пишу телеграмм бота на python telebot, написал код который должен проверять подписку на канал у человека, бот является владельцем канала и у него есть все права, пользователи для проверки уже были подписаны на канал. Но почему при нажатии проверить ничего не работает
markups = types.InlineKeyboardMarkup(row_width=True)
link_keyboard1 = types.InlineKeyboardButton(text='1 канал?', url='ссылка на канал')
link_keyboard2 = types.InlineKeyboardButton(text='2 канал?', url='ссылка')
markups.row(link_keyboard1, link_keyboard2)
check_keyboard = types.InlineKeyboardButton(text='Проверить✅', callback_data='check')
markups.row(check_keyboard)
return markups
@bot.message_handler(commands=['start'])
def start(message):
chat_id = message.chat.id
first_name = message.chat.first_name
bot.send_message(chat_id, f"Привет, {first_name}\nдля пользования ботом подпишитесь на каналы!", reply_markup= start_markup())
def check(call):
status = ['creator, administrator, member']
for i in status:
if i == bot.get_chat_member(chat_id=id, user_id=call.message.chat.id).status:
check2(call)
break
else:
bot.send_message(call.message.id, 'Подпишитесь на каналы!', reply_markup=start_markup())
def check2(call):
status = ['creator, administrator, member']
for i in status:
if i == bot.get_chat_member(chat_id=id, user_id=call.message.chat.id).status:
bot.send_message(call.message.id, 'Спасибо, что подписались')
break
else:
bot.send_message(call.message.id, 'Подпишитесь на каналы!', reply_markup=start_markup())
@bot.callback_query_handler(func= lambda call: True)
def callback(call):
if call.data == 'check':
#bot.send_message(call.message.id, 'Спасибо, что подписались')
bot.delete_message(chat_id=call.message.chat.id, message_id=call.message.id)
check(call)
bot.polling(none_stop=True)```
адреса написаны в программе, так и id просто в посту решил скрыть.
Ответы (1 шт):
Автор решения: LUX
→ Ссылка
def check_subscription(user_id):
try:
chat_member_1 = bot.get_chat_member(channel_id, user_id)
#chat_member_2 = bot.get_chat_member(channel_id_2, user_id)
if chat_member_1.status in ['member', 'administrator', 'creator']:
return True
except Exception as e:
print(f'Ошибка проверки подпиÑки: {e}')
return False
можно попробовать использовать такую функцию проверки , вроде как работает нормально