Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SBORDS — Discord-бот для игрового сообщества

Бот на disnake для русскоязычного игрового сервера:

Ошибка при запуске (4014 / PrivilegedIntentsRequired)

Если в консоли: PrivilegedIntentsRequired или Websocket closed with 4014:

Вариант А — быстрый старт (рекомендуется): в .env оставьте:

ENABLE_MEMBERS_INTENT=false

Бот запустится без ЛС новичкам. Выбор игр — через /games и меню в портале.

Вариант Б — ЛС при входе:

  1. Developer Portal → Bot → SERVER MEMBERS INTENT → включить.
  2. В .env: ENABLE_MEMBERS_INTENT=true
  3. Перезапустить python bot.py.

  • отдельная роль на каждую игру;
  • отдельная категория на каждую игру (чат + голос);
  • меню выбора игр при входе;
  • голосовые каналы — 3 уровня доступа (кумулятивно: выше уровень = больше комнат).

Игры (6 отдельных ролей)

Игра Роль Категория
The Finals 🎮 The Finals 🏆 The Finals
PUBG 🎮 PUBG 🪖 PUBG
Icarus 🎮 Icarus 🌍 Icarus
Valorant 🎮 Valorant 🎯 Valorant
CS2 🎮 CS2 💣 CS2
Rust 🎮 Rust ⚙️ Rust

Служебные роли голоса: 🔊 · Разведчик (1), 🔊 · Отряд (2), 🔊 · Ядро (3). Модерация: 🛡️ Operator.

Игра Уровень для входа в ┆🔊・пати
The Finals, PUBG 1 — Разведчик
Icarus, Valorant 2 — Отряд
CS2, Rust 3 — Ядро

Уровни заданы в src/voice_tiers.py (DEFAULT_GAME_VOICE_TIER). После /deploy пересинхронизируются права на каналах.

Структура сервера после /deploy

📋・ИНФОРМАЦИЯ
├── 👋・welcome      ← меню выбора игр
└── 📜・правила

🏆 The Finals          🪖 PUBG              🌍 Icarus
├── 💬・чат            ├── 💬・чат           ├── 💬・чат
└── 🔊・голос          └── 🔊・голос         └── 🔊・голос

🎯 Valorant            💣 CS2               ⚙️ Rust
├── 💬・чат            ├── 💬・чат           ├── 💬・чат
└── 🔊・голос          └── 🔊・голос         └── 🔊・голос

Категорию игры видит только тот, у кого есть соответствующая игровая роль.


Точные права для бота

В Developer Portal → Bot → Privileged Gateway Intents

Intent Нужен?
SERVER MEMBERS INTENT ⚙️ Только если ENABLE_MEMBERS_INTENT=true
MESSAGE CONTENT INTENT ❌ Нет

Права на сервере (OAuth2 / при приглашении)

Отметьте только эти галочки (русский интерфейс Discord → английское имя):

Русский (примерно) English Зачем
1 Просматривать каналы View Channels Видеть каналы, работать с меню
2 Отправлять сообщения Send Messages Welcome, embed, ответы
3 Встраивать ссылки Embed Links Красивые embed-сообщения
4 Прикреплять файлы Attach Files На будущее / вложения
5 Читать историю сообщений Read Message History Читать каналы
6 Добавлять реакции Add Reactions Опционально для UI
7 Управлять ролями Manage Roles Выдавать игровые роли
8 Управлять каналами Manage Channels /deploy — категории и каналы
9 Подключаться Connect Проверка голосовых (не обязательно, но удобно)

Не включайте «Администратор» на постоянной основе — достаточно пунктов 1–9.

Ссылка приглашения (рекомендуемая)

Подставьте CLIENT_ID из Developer Portal → Application ID:

https://discord.com/api/oauth2/authorize?client_id=CLIENT_ID&permissions=269569104&scope=bot%20applications.commands

permissions=269569104 — это сумма прав из таблицы выше.

Если /deploy выдаёт «Недостаточно прав»

На время первой настройки можно пригласить с Администратором:

https://discord.com/api/oauth2/authorize?client_id=CLIENT_ID&permissions=8&scope=bot%20applications.commands

После успешного /deploy права можно урезать до таблицы выше (перепригласить бота или снять Administrator в настройках роли бота).

Иерархия ролей (обязательно)

В Настройки сервера → Роли перетащите роль бота выше, чем:

  • все 🎮 … игровые роли;
  • 🔊 Voice Access;
  • 🛡️ Moderator.

Иначе бот не сможет выдавать роли при выборе в меню.


Безопасность

Токен храните только в .env (файл в .gitignore). Если токен светился в чате — Reset Token в Developer Portal.

Установка

cd e:\develop\Sbords
python -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env
# В .env: DISCORD_TOKEN=...
python bot.py

Команды

Команда Кто Описание
/deploy Администратор Создаёт роли и каналы (без удаления старых). reset: true — полный сброс
/setup-welcome Управление сервером Публикует embed + меню (по умолчанию в ┆👋・портал)
/games Все Личное меню смены игр
/status Все Пинг, развёрнут ли сервер, число игр
/games-list Все Встроенные и кастомные игры
/game-add Администратор Добавить игру (роль + категория + чат + голос)
/game-remove Администратор Убрать кастомную игру (delete_discord — удалить в Discord)
/channel-add Администратор Доп. текстовый/голосовой канал в категории игры
/voice-grant Модератор Выдать уровень голоса 1–3
/voice-revoke Модератор Снять уровень (или все)
/voice-levels Все Какие игры требуют какой уровень
/refresh Администратор Перечитать data/guild_*.json, перерегистрировать меню

Логика прав

Кто Что видит / может
@everyone Только 📋・ИНФОРМАЦИЯ (welcome, правила), без отправки
🎮 Valorant (пример) Категорию 🎯 Valorant, чат и голос этой игры
Без роли игры Чужие игровые категории скрыты
Игровая роль в голосе Видит ┆🔊・пати, но connect = выкл
🔊 · Разведчик (1) Connect в комнатах с требованием 1
🔊 · Отряд (2) Connect в комнатах 1–2
🔊 · Ядро (3) Connect во всех игровых голосовых
🛡️ Operator Модерация + голос + управление каналами

Как выдать голос: /voice-grant @участник level:2 или ПКМ → Роли → нужный уровень.

Порядок настройки

  1. Создать приложение и бота в Developer Portal, включить Server Members Intent.
  2. Пригласить бота по ссылке с правами из таблицы.
  3. Поднять роль бота в списке ролей.
  4. Запустить python bot.py.
  5. /deploy
  6. /setup-welcome (или указать канал параметром).
  7. Участники выбирают игры в меню / /games.
  8. Для голоса — /voice-grant (уровень 1–3) или роли вручную.

Где запустить бота 24/7

Cloudflare Workers не подходят — боту нужен постоянный WebSocket к Discord, а не короткие HTTP-запросы.

Вариант Плюсы Минусы
Домашний ПК Бесплатно ПК должен быть включён; настройте автозапуск python bot.py
Oracle Cloud Free Бесплатный VPS навсегда Регистрация, настройка Linux
Railway / Render / Fly.io Простой деплой Бесплатный тариф часто «засыпает» или с лимитами
Hetzner / Timeweb Стабильно Платно, но недорого

Минимум для VPS: Python 3.11+, git clone, .env с DISCORD_TOKEN, systemd или pm2 для автоперезапуска. Боту нужен исходящий доступ к discord.com и gateway.discord.gg — прокси для YouTube/GitHub не нужны.

Пример unit для Linux (/etc/systemd/system/sbords.service):

[Unit]
Description=SBORDS Discord bot
After=network.target

[Service]
Type=simple
User=bot
WorkingDirectory=/home/bot/Sbords
EnvironmentFile=/home/bot/Sbords/.env
ExecStart=/home/bot/Sbords/.venv/bin/python bot.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Проект

Sbords/
├── bot.py
├── config.py              # 6 игр по умолчанию, имена каналов
├── src/deploy.py          # развёртывание, уровни голоса
├── src/voice_tiers.py     # уровни 1–3 и права на каналах
├── src/games_registry.py  # встроенные + custom_games из JSON
├── src/cogs/admin.py      # /deploy, /setup-welcome
├── src/cogs/manage.py     # /game-add, /channel-add, /refresh
├── src/cogs/games.py      # /games, /status, голос
├── src/views.py           # меню и embed
└── data/guild_*.json      # ID ролей, custom_games, extra_channels

Повторный запуск бота не ломает меню — оно persistent, ID ролей в data/.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages