MoveBro — это Telegram-бот, который объединяет отправителей и путешественников для безопасной и удобной передачи посылок. Мы помогаем людям делиться маршрутами и поручениями, экономя время и ресурсы. Добро пожаловать в мир P2P логистики!
- 🔍 Поиск подходящего путешественника по маршруту
- 🧳 Размещение заявок на путешествие
- 📬 Создание и отслеживание заявок на доставку
- 🔐 Безопасная система подтверждений и уведомлений
- 📊 Удобное отслеживание своих заявок
Аня хочет передать посылку из Москвы в Казань. Она создает заявку в боте, указывая вес, размеры и срок доставки.
Игорь планирует поездку по этому маршруту и принимает заказ от Ани. Совершается сделка, посылка отвозится и все довольны!
Проект реализован как модульное Telegram-приложение, построенное по принципу разделения ответственности.
- Create Request - создание собственной заявки на отправку
- Find Journeys - посмотреть маршруты доставщиков и создать заявку на любой понравившийся
- Check Requests - отслеживание своих посылок
- Feedback - оставить отзыв/пожелание или указать на наши ошибки
- Create Journey - создание собственного маршрута
- Check Journeys - отслеживать созданные маршруты
- Check Requests - посмотреть и откликнуться на заявки от заказчиков
- Delivered Packages - просмотреть и изменить статус доставляемых посылок
-
Core-bot (MoveBro-bot)
- Юридические тонкости касательно перевозки
- Основной пользовательский функционал сервиса.
-
Marketing-bot
- Рассылки и привлечение новых пользователей — инструмент для продвижения.
-
Grabber-bot
- Сбор и аналитика сообщений — парсер, анализ и валидация чатов/пользователей.
-
Visualisers
- Визуализация данных (карты, диаграммы) по доставкам и маршрутам.
- Подключить обработку платежей
- Добавить языковую модель для улучшения анализа сообщений
- Core-bot (MoveBro-bot): MVP
- Marketing-bot: прототип, основные команды реализованы
- Grabber-bot: работает парсинг чатов, поиск и валидация ссылок, анализ маршрутов
- Visualisers: визуализация работает
- Отсутствие провайдера платежей
- Риск блокировок при массовых рассылках
- Отсутствует анализ сообщений на тип перевозимого груза
- Низкая точность распознавания сущностей Spacy
- Нет механизма автоматической повторной обработки сообщений при таймаутах
- Python / Aiogram / Aiogram-dialog — реализация Telegram-бота и логика обработки
- Pyrogram - релизация маркетинговвого бот
- PostgreSQL — хранение заявок, маршрутов и пользователей
- Redis — кеширование, хранение сессий и очереди уведомлений
- Docker — контейнеризация проекта
- SQLAlchemy — работа с базой данных
Позволяет проводить рассылку сообщений в выбранные чаты для поиска заинтересованных в отправке / доставке.
- /add @username - добавление чата в базу
- /remove @username - удаление чата из базы
- /show - отображение всех добавленных чатов
- /temp - отображение id заготовленных для рассылки сообщений
- /send_all id - рассылка выбранного сообщения по чатам
Также бот самостоятельно обрабатывает сообщения, сообщения, отправленные ему в ответ или напрямую в личные сообщения.
Создайте .env файл MarketingBot/bots/.env.bot1 следующего содержания:
API_ID=account_api_id
API_HASH=account_api_hash
ADMIN_ID=admin_account_id
BOT_USERNAME=bot_username
В самом боте пропишите путь до .env
load_dotenv("bots/.env.bot1")
Запуск бота:
python3 marketingbot.py
Бот управляется через телеграм указанным раннее admin-аккаунтом
# Например
/add @username
позволяет собирать информацию из выбранных чатов, а так же находить новые
- #add_chat @username - добавить чат
- #collect - провести сбор сообщений
python3 parser.py
Управление через чат с ботом
# Например:
#add_chat @username
#collect
При сохранении сообщений в базу они автоматически анализируются с помощью SpiCy, находя информацию о местах отправки/получения посылок
При анализе сообщений, парсер будет находить ссылки и юзернеймы групп/чатов/пользователей и сохранять все в базе. Для их валидации используются следующие скрипты:
- links.py и users.py позволяет валидировать найденные ссылки
python3 links.py # или users.py
В скрипте уже указан путь до базы
Скрипты в Visualisation позволяют визуализировать полученные данные в виде карты/диаграммы мест доставок/отправок, в том числе за определенные промежутки времени
Внутри скрипта укажите нужный период времени и запустите нужный визуалайзер6
python3 visualize_map.py
# Клонируем репозиторий
git clone https://github.com/PyotrAndreev/move-bro.git
cd move_bro
# Запускаем с Docker
docker-compose up --build
Создайте файл .env с переменными:
TOKEN=your_telegram_bot_token
CONNECTION_STRING=sqlite:///DataBase.db
REDIS_STORAGE=redis://localhost:6379
PROVIDER_TOKEN=provider_token
Мы приветствуем вклад сообщества! Если вы нашли баг, предложите улучшение или создайте Pull Request.
- Telegram: @pyotr_job
- Telegram: @StOpaq
- Telegram: @gtbtop