Как узнать кто заблокировал моего бота?

Есть бот. Нужно,чтобы при блокировке бота юзером,в бот выходило сообщение,что бот заблокирован каким-то пользователем и чтобы бот выполнил определенную функцию. Пишу на python , библиотека telebot, база данных SQL


Ответы (1 шт):

Автор решения: Violet

пример отправки и обработки ошибок на requests:

def send(token, USER_ID, ADM_ID):
    try:
            r = requests.post('https://api.telegram.org/bot' + token + '/sendMessage', data={'chat_id': USER_ID, 'text': 'q1349229'})
            if r.status_code == 200:
                pass
            else:
                requests.post('https://api.telegram.org/bot' + token + '/sendMessage',
                              data={'chat_id': ADM_ID, 'text': 'Ошибка отправки' + '\n' + 'id: ' + str(USER_ID) + '\n' + str(r.json()['description'])})
    except Exception as error:
        requests.post('https://api.telegram.org/bot' + token + '/sendMessage', data={'chat_id': ADM_ID, 'text': 'Exception отправки' + '\n' + str(error)})
  • если код ответа на запрос (requests.post) 200 - продолжаем
  • иначе отправляем администратору (ADM_ID) сообщение "Ошибка отправки id: пользователя (USER_ID) c описанием ошибки (r.json()['description'])})"
  • в случае исключения (Exception) отправляем администратору (ADM_ID) сообщение "Exception отправки с описанием ошибки (error)"

UPD: пример на telebot

@bot.message_handler(commands=['start'])
def start(message):
    try:
        bot.send_message(123, 'test')
    except Exception as error:
        bot.send_message(message.chat.id, re.search(r'Description:\s(.*)', str(error)).group(1))


bot.polling(none_stop=True)

Примеры:

Ошибка отправки id: 20***18 Bad Request: chat not found

Ошибка отправки id: 94***66 Forbidden: bot was blocked by the user

→ Ссылка