Skip to content

Excited669/Tg_bot_Choco_wow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 Telegram Бот для Промоакции "ChocoWow Бегемотики"

Мой первый коммерческий Telegram-бот, разработанный для автоматизации процесса сбора заявок на участие в промоакции, их модерации и массовых рассылок. Вот ссылка на него если он еще работает: @beegeemotk_bot.

✨ Реализованные Функции и Улучшения

Данный проект воплощает в себе следующие ключевые возможности и улучшения, разработанные на основе требований заказчика:

  1. Множественная Загрузка Фотографий:

    • Пользователи теперь могут отправлять несколько фотографий для своей коллекции игрушек (пункт 1) и несколько фото чеков (пункт 2) в рамках одной заявки.
    • Реализован механизм FSM, который ожидает дополнительные фото до тех пор, пока пользователь не нажмет специальную кнопку "✅ Готово, отправить фото".
    • Все file_id загруженных фотографий хранятся в базе данных SQLite в виде JSON-строк (TEXT), что позволяет гибко масштабировать количество фото.
    • При отправке заявки админам на email, все прикрепленные фото из списка загружаются и отправляются.
    • При экспорте данных в CSV (/get_users_db), ссылки на все загруженные фотографии также корректно генерируются и отображаются в соответствующей колонке.
  2. user_id в Уведомлениях и Экспорте:

    • user_id пользователя теперь явно включается в тему email-уведомлений для администраторов для более легкой идентификации заявки.
    • При экспорте базы данных в CSV, user_id присутствует как отдельный столбец, упрощая анализ данных.
  3. Модерация с Указанием Причины Отклонения:

    • Администраторы имеют возможность указать конкретную причину при отклонении заявки.
    • После нажатия кнопки "❌ Отклонить", бот переходит в новое FSM-состояние (AdminStates.waiting_for_rejection_reason), ожидая текстовый ввод от админа.
    • Указанная причина включается в сообщение, отправляемое пользователю, объясняя, почему его заявка была отклонена и предлагая попробовать снова.
  4. Упрощенная Функция "Бонусного Приза":

    • Механизм выдачи бонусного приза был оптимизирован. Теперь при выборе "🎁 С доп. призом" администратору не требуется собирать дополнительные данные от пользователя.
    • Пользователю автоматически отправляется сообщение с поздравлением и прямым контактом менеджера, который будет заниматься организацией выдачи приза. Это снижает избыточность процесса для единичного пользователя.
  5. Единая Команда Рассылки с Дифференцированными Сообщениями (Пункт 9):

    • Реализована единая административная команда /send_raffle_reminder, которая инициирует рассылку сразу для двух категорий пользователей:
      • Подтвержденным участникам (approved, bonus): Отправляется напоминание о скором розыгрыше с ссылкой на основной Telegram-канал.
      • Отклоненным участникам (rejected): Отправляется мотивирующее сообщение с предложением попробовать отправить заявку снова, так как розыгрыш состоится сегодня, также с ссылкой на Telegram-канал.
    • Это позволяет эффективно коммуницировать с разными группами пользователей одной командой.
  6. Оповещение о Завершении Розыгрыша:

    • Добавлена административная команда /send_results, предназначенная для оповещения всех участников о завершении розыгрыша.
    • Команда отправляет сообщение всем подтвержденным участникам (статус approved и bonus) с ссылкой на страницу или канал, где будут опубликованы итоги.

🛠 Технический Стек

  • Python: Язык программирования
  • Aiogram: Асинхронный фреймворк для разработки Telegram ботов.
  • Aiosqlite: Асинхронный драйвер для работы с SQLite базой данных.
  • python-dotenv: Для управления переменными окружения.
  • SMTP: Для отправки email-уведомлений.

⚙ Конфигурация и Запуск

Проект конфигурируется через файл .env. Важные переменные включают BOT_TOKEN, ADMIN_IDS, настройки SMTP для email, а также ссылки на Telegram-каналы и контакт менеджера.

# Установка зависимостей (пример)
pip install aiogram aiosqlite python-dotenv

# Создание .env файла с необходимыми переменными
# (см. детали в комментариях к config.py или в предыдущих инструкциях)

# Запуск бота
python main.py

About

My first commercial project. Implemented a system for processing photos from users, as well as an admin panel for moderating these photos TG: @beegeemotk_bot

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages