Discord-бот для прогнозов через реакции. Администратор через GUI регистрирует сообщение и время, в течение которого принимаются ответы. Пользователи голосуют реакциями 1️⃣ / 2️⃣, а когда время выходит и правильный вариант отмечен, угадавшие получают очко.
- Окно управления на CustomTkinter: добавление сообщений и выбор правильного ответа (
Team 1/Team 2) - Учёт реакций пользователей (засчитывается последняя реакция)
- Автоматический подсчёт очков каждые 10 секунд по истечении времени
- Команда
!score [@user]— показать количество очков - Хранение данных в PostgreSQL через SQLAlchemy
- Python 3.10+
- PostgreSQL
- Токен Discord-бота с включённым Message Content Intent (Developer Portal → Bot → Privileged Gateway Intents)
git clone <url-репозитория>
cd DiscordEmoteBot
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # Linux / macOS
pip install -r requirements.txt- Создайте базу данных в PostgreSQL (например,
EmoteBotDB). Таблицы создаются автоматически при первом запуске. - Скопируйте
.env.exampleв.envи заполните значения:
DISCORD_TOKEN=your-discord-bot-token
DATABASE_URL=postgresql+psycopg2://user:password@localhost:5432/EmoteBotDB| Переменная | Описание |
|---|---|
DISCORD_TOKEN |
Токен бота из Discord Developer Portal |
DATABASE_URL |
Строка подключения SQLAlchemy к PostgreSQL |
cd src
python bot_controller.pyБот запускается в отдельном потоке, параллельно открывается окно управления.
- Опубликуйте в Discord сообщение с вопросом и скопируйте его ID (режим разработчика → «Копировать ID»).
- В окне бота введите Message id и Duration (длительность в секундах), нажмите Submit.
- Пользователи ставят реакции
1️⃣или2️⃣. - В таблице выберите правильный вариант (
Team 1илиTeam 2). - После окончания времени бот начислит очки угадавшим. Посмотреть счёт —
!scoreили!score @user.
src/
├── bot_controller.py # логика бота, обработка реакций, подсчёт очков, точка входа
├── gui.py # окно управления (CustomTkinter)
└── models.py # модели SQLAlchemy и подключение к БД