Проверка на подписку в тг боте python telebot
вот код
123456789101112131415
elif callback.data=='btn_check1':
def is_sub(channel_id, user_id):
try:
chat_member = bot.get_chat_member(chat_id=channel_id, user_id=user_id)
return True
#return chat_member.status in ['member', 'administrator', 'creator']
except ApiTelegramException as e:
print(e)
return False
user_id = callback.message.chat.id
print(is_sub(-1001547380830, user_id))
print(is_sub('-1002136850839', callback.message.chat.id))
if is_sub('-1001547380830', user_id):
...
и проблема в том что вывод этой функции (is_sub(..., ...)) в независимости от того состоит ли пользователь в канале функция всегда выдает:
12
A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: chat not found
False
то есть оно не может найти тг канал получается же ? Как решить эту проблему уже сутки сижу не могу решить. ПОМОГИТЕ
Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
да ну этот ваш питон
Привет)
А ты сделал бота админом канала?) ЕСЛИ ДА, ТО ПОГНАЛИ ДАЛЬШЕ)
Попробуй убрать кавычки ''
1
print(is_sub(-1002136850839, callback.message.chat.id))
Раскоментируй строку:
1
return chat_member.status in ['member', 'administrator', 'creator']
Добавь отладку, что бы понять что за ошибка возникает:
123
except ApiTelegramException as e:
print(f"Ошибка: {e.error_code}. {e.description}")
return False
Попробуй еще раз получить id канала. Т.е. повесить обработчик событий например на сообщение и из события получить id канала.
Еще можешь попробовать не callback.message.chat.id, а callback.message.from_user.id