BlockCollBot — это Telegram-бот для работы с базой данных сотрудников/клиентов, с поддержкой экспорта в Excel, постраничной навигации по длинным сообщениям и разграничением прав доступа.
- Постраничная навигация по длинным сообщениям с помощью кнопок
<,>, выбор количества строк на странице. - Экспорт данных в Excel по команде.
- Хранение и очистка состояния пагинации для каждого пользователя.
- Уведомления администратору о запуске и ошибках.
- Логирование всех событий и ошибок в файл
bot.log. - Гибкая настройка через файл
config.py.
-
Клонируйте репозиторий:
git clone https://github.com/l1stea/BlockCollBot.git cd BlockCollBot -
Установите зависимости:
pip install -r requirements.txt
-
Настройте файл
config.py:- Укажите параметры подключения к БД.
- Вставьте токен Telegram-бота.
- Установите нужные параметры логирования.
-
Проверьте структуру базы данных и создайте необходимые таблицы (см.
CommandsDB/db.py).
python main.pyТесты находятся в папке tests. Запуск тестов:
pytest tests/Все логи сохраняются в файл bot.log в корне проекта (UTF-8).
Курсовая работа/
├── main.py
├── config.py
├── requirements.txt
├── bot.log
├── Logging/
│ └── bot_logging.py
├── CommandsDB/
│ ├── db.py
│ ├── get.py
│ └── ...
├── Handler/
│ ├── handler.py
│ └── handler_export.py
├── TelegramApi/
│ ├── telegram_api.py
│ ├── pagination.py
│ └── export.py
└── tests/
└── test_get.py
Для запуска бота требуется Python 3.8+ и доступ к MySQL.
Для хранения секретных данных (токенов, паролей, логинов) используется файл .env, который не добавляется в репозиторий.
-
Создайте файл
.envв корне проекта:TELEGRAM_TOKEN=ваш_секретный_токен DB_USER=ваш_пользователь DB_PASSWORD=ваш_пароль DB_HOST=localhost DB_NAME=ваша_база -
Убедитесь, что в
.gitignoreесть строка:.env -
Весь проект автоматически подхватит переменные из
.envчерез библиотеку python-dotenv. -
Пример использования в
config.py:from dotenv import load_dotenv import os load_dotenv() DB_CONFIG = { "host": os.getenv("DB_HOST"), "user": os.getenv("DB_USER"), "password": os.getenv("DB_PASSWORD"), "database": os.getenv("DB_NAME") } TELEGRAM_TOKEN = os.getenv("TELEGRAM_TOKEN")
Это защищает ваши пароли и токены от случайной публикации в открытом доступе!
Автор: Тимошенко Е.М.
GitHub: l1stea