Top.Mail.Ru
Ответы

Проверка на подписку в тг боте 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