Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проверка на подписку в тг боте python telebot

python2009monster Ученик (5), открыт 1 неделю назад
вот код
 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(..., ...)) в независимости от того состоит ли пользователь в канале функция всегда выдает:
 A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: chat not found 
False
то есть оно не может найти тг канал получается же ? Как решить эту проблему уже сутки сижу не могу решить. ПОМОГИТЕ
3 ответа
СЕО Знаток (258) 1 неделю назад
да ну этот ваш питон
Алексей ВоронцовМастер (1274) 1 неделю назад
согласен, язык программирование - русский самый лучший
python2009monsterУченик (5) 1 неделю назад
психолог который слушал меня после этих слов сказал что со мной работать не будет
СЕО Знаток (258) python2009monster, хахп
Сергей Диордий Знаток (299) 1 неделю назад
Попробуй еще раз получить id канала. Т.е. повесить обработчик событий например на сообщение и из события получить id канала.
Еще можешь попробовать не callback.message.chat.id, а callback.message.from_user.id
Chudo_Chudnoe Мастер (1950) 1 неделю назад
Привет)

А ты сделал бота админом канала?) ЕСЛИ ДА, ТО ПОГНАЛИ ДАЛЬШЕ)

Попробуй убрать кавычки ''

 print(is_sub(-1002136850839, callback.message.chat.id)) 

Раскоментируй строку:

 return chat_member.status in ['member', 'administrator', 'creator'] 

Добавь отладку, что бы понять что за ошибка возникает:

 except ApiTelegramException as e: 
print(f"Ошибка: {e.error_code}. {e.description}")
return False
Похожие вопросы