Telegram бот для организации футбольных матчей в группах
Oyinshi Bot — это Telegram бот, который упрощает организацию футбольных игр в групповых чатах. Администраторы могут создавать игры с указанием даты, времени, места и количества игроков, а участники группы могут легко записываться на игру с помощью интерактивных кнопок.
- 🎯 Создание игр - Простое создание футбольных матчей с полной информацией
- 👥 Управление участниками - Автоматический подсчет записавшихся игроков
- 📊 Статистика - Личная статистика участников и администраторов
- 🏆 Система рейтингов - Звания для активных игроков
- 💬 Интерактивные опросы - Удобные кнопки для записи на игру
- 🔒 Контроль доступа - Только администраторы групп могут создавать игры
- Node.js 18.0+
- PostgreSQL или любая другая БД, поддерживаемая Prisma
- Telegram Bot Token (получить у @BotFather)
-
Клонируйте репозиторий
git clone https://github.com/murattishkul/oyinshi.git cd oyinshi -
Установите зависимости
npm install
-
Настройте переменные окружения
cp .env.example .env
Заполните
.envфайл:TELEGRAM_BOT_TOKEN=your_bot_token_here DATABASE_URL="postgresql://user:password@localhost:5432/oyinshi_bot" PORT=3000 WEBHOOK_URL=https://your-domain.com
-
Настройте базу данных
npx prisma migrate dev npx prisma generate
-
Запустите бота
npm start
- Добавьте бота в группу как администратора
- Создайте игру командой
/create_gameв личном чате с ботом - Настройте параметры игры:
- 📅 Дата и время
- 📍 Место проведения
- 👥 Количество игроков
- Запустите опрос в выбранной группе
- Найдите опрос в групповом чате
- Нажмите кнопку:
- ✅ Иду - записаться на игру
- ❌ Не иду - отказаться от участия
- 🤔 Возможно - под вопросом
- Следите за обновлениями статистики в реальном времени
/start- Главное меню и статистика/create_game- Создать новую игру/my_games- Посмотреть созданные игры/profile- Личная статистика участия/stats- Статистика администратора/help- Справка по командам
- Бот автоматически обрабатывает нажатия на кнопки опросов
- Обновляет статистику участников в реальном времени
Участники получают звания на основе количества игр:
- 🌱 Начинающий - 1+ игр
- ⚽ Активный игрок - 5+ игр
- ⭐ Звезда команды - 10+ игр
- 🏆 Легенда поля - 20+ игр
src/
├── scenarios/
│ ├── admin/ # Логика для администраторов
│ ├── group/ # Логика для групп
│ └── init/ # Инициализация и обработчики
├── utils/ # Вспомогательные функции
└── db/
└── prisma/ # Схема и конфигурация БД
- Admin Scenarios - Создание игр, управление, статистика
- Group Scenarios - Обработка участия в играх
- Database Layer - Prisma ORM для работы с БД
- Bot Handlers - Обработчики событий Telegram
При использовании webhook режима:
POST /webhook- Обработка обновлений от Telegram
- Admin - Администраторы, создающие игры
- Group - Telegram группы с активным ботом
- Game - Созданные игры
- Participant - Участники игр
heroku create your-oyinshi-bot
heroku config:set TELEGRAM_BOT_TOKEN=your_token
heroku config:set DATABASE_URL=your_database_url
git push heroku maindocker build -t oyinshi-bot .
docker run -p 3000:3000 --env-file .env oyinshi-botnpm install -g pm2
pm2 start ecosystem.config.js
pm2 save
pm2 startup- Fork репозиторий
- Создайте feature branch (
git checkout -b feature/amazing-feature) - Commit изменения (
git commit -m 'Add amazing feature') - Push в branch (
git push origin feature/amazing-feature) - Откройте Pull Request
- Node.js 18.0 или выше
- PostgreSQL 13+ (или другая БД через Prisma)
- Telegram Bot Token
- HTTPS для webhook (в продакшене)
- ✅ Базовая функциональность создания игр
- ✅ Интерактивные опросы с кнопками
- ✅ Статистика участников и администраторов
- ✅ Система рейтингов
- ✅ Поддержка множественных групп
- При большом количестве участников сообщение может стать слишком длинным
- Webhook требует HTTPS соединения
- 🐛 Баги: GitHub Issues
- 💡 Предложения: GitHub Discussions
- 📧 Email: [email protected]
Этот проект лицензирован под MIT License - смотрите LICENSE файл для деталей.
- node-telegram-bot-api - Telegram Bot API для Node.js
- Prisma - Современная ORM для Node.js
- Express.js - Веб фреймворк для Node.js
⚽ Сделано с ❤️ для футбольного сообщества Mrazi