Gosha — это Discord-бот, написанный на Go, который автоматически начисляет XP за активность пользователей в чате и голосовых каналах.
Он хранит данные в PostgreSQL, управляет уровнями, назначает роли при достижении XP-порогов и предоставляет набор удобных slash-команд.
-
🎯 Система XP и уровней
- Начисление XP за сообщения в чате и участие в голосовых каналах.
- Настраиваемая шкала уровней (XP → Level).
- Автоматическое повышение уровня и уведомление пользователя.
-
🧩 Роли по уровням
- Автоматическая выдача ролей при достижении заданного уровня.
- Поддержка нескольких ролей с разными XP-порогами.
- Возможность ручного управления через админ-команды.
-
⚙️ Slash-команды
/level— показать текущий уровень и XP пользователя./clear— чистит чат./give— выдать роль вручную./remove— снять роль./top— показать топ пользователей по XP./mute— выдает роль мута пользователю и убирает остальные роли временно,пользователь не может писать в чате и говорить в войсе.
-
🛡️ Права и безопасность
- Проверка прав по
ADMIN_ROLE_IDS. - Ограничение доступа к административным командам.
- Проверка прав по
-
🗄️ База данных
- PostgreSQL для хранения пользователей, уровней и ролей.
- Таблицы:
users—user_id,xp,level,last_message_tsroles—role_id,xp_need
- Автоматическая миграция при запуске.
-
🐳 Docker
- Полная контейнеризация проекта через
docker-compose. - Изоляция сервисов (
app,db). - Переменные окружения в
.envдля гибкой настройки.
- Полная контейнеризация проекта через
- Go (Golang)
- PostgreSQL
- Discord API (через
discordgo) - Docker Compose
- .env конфигурация
- Клонирование репозитория
git clone https://github.com/<your-username>/gosha-bot.git
cd gosha-bot- Создание .env файла
Создайте файл .env в корне проекта со следующим содержимым:
DISCORD_TOKEN=your_discord_bot_token
DATABASE_URL=postgres://postgres:postgres@db:5432/gosha?sslmode=disable
ADMIN_ROLE_IDS=123456789012345678,987654321098765432
XP_CHAT_GAIN=10
XP_VOICE_GAIN=5
LEVEL_MULTIPLIER=100- Запуск через Docker Compose
docker-compose up --build