Бот для сообщества «Fixed Gear Perm» помогает пользователям создавать объявления (велотовары, обмен, услуги и события), отправлять их на модерацию и публиковать в канале. Автор может пометить объявление как «Продано» через кнопку.
- Создание объявления: до 3 фото, заголовок, описание, цена
- Категории:
#продам,#куплю,#обмен,#аренда,#даром,#услуги,#гонка,#мероприятие - Модерация в отдельном чате администраторов (инлайн‑кнопки «Одобрить/Отклонить»)
- Публикация одобренных объявлений в канале сообщества
- Маркировка опубликованного объявления как «Продано»
- Удобные инлайн‑кнопки и сообщения на русском
- Python 3.10+
- Зависимости: aiogram 3.2+, python‑dotenv 1.0+
- SQLite (файл БД:
bot_data.db, создаётся автоматически)
- Клонируйте репозиторий
git clone https://github.com/yourusername/fixed-gear-perm-bot.git
cd fixed-gear-perm-bot- Установите зависимости
pip install -r requirements.txt- Создайте файл
.envи укажите переменные
BOT_TOKEN=123456:ABCDEF... # Токен бота от @BotFather
MODERATION_CHAT_ID=-1001234567890 # ID чата модерации (добавьте бота админом)
CHANNEL_ID=-1009876543210 # ID канала публикаций (добавьте бота админом)Подсказка: numeric ID чатов/каналов можно узнать через @userinfobot. Для каналов и супергрупп обычно начинается с -100.
python main.pyБаза bot_data.db будет создана в корне проекта автоматически.
Вариант 1 — docker compose (предпочтительно):
docker compose up -dУбедитесь, что рядом с docker-compose.yml лежит корректный .env.
Вариант 2 — docker run:
docker build -t fgp-bot .
docker run -d --name fgp-bot --restart always --env-file .env fgp-botПо умолчанию БД хранится внутри контейнера. Чтобы хранить БД на хосте, смонтируйте файл:
# docker-compose.yml (пример)
services:
bot:
volumes:
- ./.env:/app/.env
- ./bot_data.db:/app/bot_data.db- Создайте бота через
@BotFatherи возьмите токен →BOT_TOKEN - Создайте приватную группу модерации → добавьте бота админом → возьмите ID →
MODERATION_CHAT_ID - Создайте канал публикаций → добавьте бота админом → возьмите ID →
CHANNEL_ID
— Для пользователя:
- Нажать «Создать объявление»
- Выбрать категорию
- Загрузить до 3 фото
- Ввести заголовок (≤ 50 символов)
- Ввести описание (≤ 500 символов)
- Указать цену числом или «Даром»
- Проверить предпросмотр и отправить на модерацию
— Для модератора:
- Получить карточку в чате модерации
- Нажать «Одобрить» или «Отклонить»
- При одобрении бот публикует пост в канале и присылает автору кнопку «Продано»
#продам
🚲 <Заголовок>
📌 <Короткое описание>
💰 Цена: <Цена>
📞 Контакт: <@username или имя>
Создать объяву: @fgp_mrktbot
<фото>
Для отладки и просмотра содержимого SQLite есть утилита:
python db_manager.pyИнструмент интерактивный: показывает таблицы, статистику и позволяет очищать данные.