Как узнать кто заблокировал моего бота?
Есть бот. Нужно,чтобы при блокировке бота юзером,в бот выходило сообщение,что бот заблокирован каким-то пользователем и чтобы бот выполнил определенную функцию. Пишу на 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