Ошибки и их решения при написании бота для телеграм

Ошибки при разработке telegram бота на python

Хочу описать несколько ошибок, с которыми я столкнулся при разработке бота для телеграм. Они популярные, но все таки запишу для себя чтобы не забыть.

Это глобальные переменные, большие тексты и отсутствие try/except.

Не используйте глобальные переменные

Если ботом планируете пользоваться не только Вы, никогда не используйте глобальные переменные. Особенно, если в боте будет личная (персональная) информация. Пример: бот запрашивал имя, любое число и город. Данные сохранялись в переменные и потом выводились в конце пользователю для подтверждения.

В моем коде были глобальные переменные и пользователи могли видеть чужую информацию! Это происходило при одновременном обращении к боту. Для решения этой задачи нужно использовать классы или передавать переменные в функциях.

Я создавал новый массив и наполнял его на каждом шагу (использовал register_next_step_handler ). Первый ответ пользователя (имя) я передавал на второй шаг, дальше (число и имя с 1 шага) передавал на третий. И в конце уже разбивал данные.

Отсутствие try/except

Некоторые пользователи получали ошибки и заказчик толком не мог объяснить в чем причина. Дописав лог, проанализировал скриншоты я понял, что в причина в отсутствии логина telegram. Я не использовал try/except при выводе логина.

На unicode (для смайлов) и разметку не обращайте внимание. При выводе использовал parse_mode= ‘Html’.

Слишком большой текст для ответа в telegram

Запомните — для ответа пользователю в телеграм есть ограничение в 4096 символов! Я этого не знал. На выходных обратился ко мне заказчик и сказал что не мог получить данные по заказам (выгружали заявки за пару недель).

Решил разбивкой сообщения на несколько.

Отправляем частями или отсылаем 1 сообщение.

Если бы не заказчики, я бы и не обратил внимания.

А с какими ошибками Вы сталкивались и как решали?

0 Comments

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *