bot_report — Telegram-бот выгрузки отчёта из Google Sheets

Telegram-бот на Python с доступом по паролю, который по кнопке выгружает защищённую Google-таблицу и отдаёт её пользователю файлом Excel.

bot_report — Telegram-бот выгрузки отчёта из Google Sheets — фото 1
нажмите для просмотра в полном размере

Слайд 1 из 2

ОПИСАНИЕ

Бот выдаёт сводный отчёт компании, хранящийся в Google Sheets. Реализован на чистом requests: собственный цикл long polling getUpdates с ведением offset и дедупликацией обновлений по update_id (множество обработанных id с обрезкой до последних 1000, чтобы не накапливать память). Доступ к боту закрыт паролем. Список авторизованных пользователей персистится в JSON-файле (authorized_users.json); проверка пароля нормализует ввод (убирает пробелы, приводит к нижнему регистру). После авторизации пользователю выдаётся постоянная ReplyKeyboard с кнопкой выгрузки. Таблица защищена, поэтому скачивание идёт через Google Drive API: сервисный аккаунт (api_gg.json) авторизуется в scope drive.readonly, файл экспортируется методом files().export_media в формат xlsx (сохраняя все листы и стили) и загружается чанками через MediaIoBaseDownload во временный файл, который затем отправляется документом и удаляется. Ошибки на каждом этапе перехватываются и возвращаются пользователю понятным сообщением.

ИСПОЛЬЗУЕМЫЕ ИНСТРУМЕНТЫ

  • Python
  • Telegram Bot API
  • requests
  • Google Drive API
  • google-auth
  • google-api-python-client
  • JSON
  • Git

РЕЗУЛЬТАТ

  • Реализована выгрузка защищённой Google-таблицы через Drive API (export_media в xlsx) с чанковой загрузкой во временный файл.
  • Реализован доступ по паролю с персистентным списком авторизованных пользователей в JSON и нормализацией ввода пароля.
  • Реализован long polling с дедупликацией обновлений по update_id и ограничением размера буфера обработанных id.
  • Реализованы постоянная ReplyKeyboard и обработка ошибок выгрузки с возвратом сообщения пользователю.

AI АССИСТЕНТ

Задать вопрос по этой работе