Многофункциональный Telegram бот на Python, реализующий 4 основных сценария работы:
- Сбор контактных данных - Заполнение анкеты с именем, телефоном и email
- Обработка заявок/заказов - Выбор типа услуги, сбор деталей и отправка уведомлений
- Анкетирование/опрос - Проведение опроса с серией вопросов
- Валидация телефонов - Проверка и нормализация номеров телефонов
- Язык: Python 3.8+
- Библиотека: aiogram 3.4.1
- База данных: SQLite3
- Валидация: phonenumbers (если доступно), email-validator
- Управление состоянием: Простой FSM (Finite State Machine)
Команды:
/start- Начало диалога/contact- Заполнение анкеты/cancel- Отмена текущего действия
Процесс:
- Запрос имени пользователя
- Проверка имени (2-50 символов)
- Запрос номера телефона
- Валидация и нормализация номера
- Запрос email (опционально)
- Сохранение данных
- Подтверждение регистрации
Команды:
/order- Начало оформления заявки/cancel- Отмена текущего действия
Процесс:
- Выбор типа услуги (inline клавиатура)
- Сбор деталей заказа
- Запрос контактных данных
- Подтверждение заявки
Типы услуг:
- IT-услуги
- Дизайн
- Маркетинг
- Ремонт
- Обучение
Команды:
/survey- Начало опроса/cancel- Отмена текущего действия
Процесс:
- Последовательный опрос
- Сбор ответов
- Сохранение результатов
Команды:
/validate- Начало валидации/cancel- Отмена текущего действия
Процесс:
- Запрос номера телефона
- Валидация формата
- Нормализация номера
- Сохранение проверенного номера
- Прием текстовых сообщений
- Отправка форматированных ответов (HTML, Markdown)
- Обработка команд
- Логирование событий
- Работа с inline клавиатурами
- Работа с reply клавиатурами
- Кнопки для навигации
- Inline клавиатуры для выбора опций
- Состояния диалога
- База данных SQLite
- Формат: международный (+7...)
- Длина: 10-15 цифр
- Нормализация в E164 формат
- Определение страны
- Базовая проверка формата
- Проверка длины (максимум 254 символа)
- Проверка на одноразовые домены
git clone https://github.com/your-repo/telegram-bot
cd telegram-botpip install -r requirements.txtcp .env.example .env
# Отредактируйте .env файл с вашим токеномpython bot.pytelegram-bot/
├── bot.py # Основной файл бота
├── database.py # Работа с базой данных
├── validators.py # Валидация данных
├── keyboards.py # Клавиатуры
├── requirements.txt # Зависимости
├── .env.example # Пример конфигурации
├── test_bot.py # Тестовый скрипт
└── README.md # Этот файл
Создайте файл .env на основе .env.example:
BOT_TOKEN=your_telegram_bot_token_here
DATABASE_URL=sqlite:///bot.db
DEBUG=True
DEFAULT_REGION=RU
ALLOW_DELIVERY_DOMAIN=TrueБот использует SQLite3 для хранения:
- Контактных данных
- Заявок
- Результатов опросов
- Валидированных номеров телефонов
- Токен бота хранится в переменных окружения
- Валидация всех входных данных
- Защита от SQL-инъекций
- Обработка ошибок без раскрытия информации
Бот логирует все важные события:
- Запуск и остановка
- Обработка команд
- Ошибки валидации
- Сохранение данных
Для добавления нового сценария:
- Добавьте команду в
get_main_keyboard() - Создайте обработчик с декоратором
@router.message(Command("new_command")) - Реализуйте логику обработки в новом файле
- Добавьте состояние в классы
ContactForm,OrderFormи т.д.
@router.message(Command("status"))
async def status_handler(message):
"""Handle /status command"""
await message.answer("Бот работает нормально! ✅")При возникновении проблем:
- Проверьте логи бота
- Убедитесь, что токен правильный
- Проверьте подключение к базе данных
- Проверьте настройки валидации
MIT License - свободное использование и модификация
Запустите тестовый скрипт для проверки функциональности:
python test_bot.pyТест проверяет:
- Инициализацию базы данных
- Валидацию номеров телефонов
- Корректность работы FSM
- ✅ Стабильность - Обработка ошибок и граничных случаев
- 🔒 Безопасность - Валидация всех входных данных
- 📊 Масштабируемость - Эффективная работа с базой данных
- 🎨 UX - Интуитивные интерфейсы и понятные сообщения
- Добавить webhook режим для повышения надежности
- Реализовать систему администрирования
- Добавить аналитику и статистику
- Интеграция с внешними CRM системами
- Поддержка многоязычности
- Кэширование частых запросов
При возникновении проблем с реализацией:
- Технические вопросы - архитектура, алгоритмы
- Проблемы с aiogram - использование библиотеки, обработчики
- Вопросы по базе данных - SQLite, запросы
- Общие вопросы - развёртывание, отладка
Бот готов к работе! 🚀