HELPER Discord Bot
К списку Wiki
TEMP ROOMS CORE // DYNAMIC VOICE // OWNER CONTROL PANEL

HELPER TEMP ROOMS ПРИВАТНЫЕ КОМНАТЫ /ROOMS_SETUP / VOICE HUB / OWNER PANEL / AUTO CLEANUP / WEB SYNC

Temp Rooms создаёт приватные voice-комнаты по кнопке. Игрок выбирает пресет или вводит своё название, HELPER создаёт голосовой канал в нужной категории, назначает владельца, выдаёт пульт управления и автоматически удаляет пустые комнаты. Владелец комнаты может закрыть, скрыть, переименовать, изменить лимит, пригласить, кикнуть, заблокировать пользователя или передать права другому участнику.

/roomssetup / deploy
10ssite sync loop
1mempty cleanup default
99voice user limit
Panel/rooms_setup публикует voice-hub
Createпресеты или modal name/limit
Ownerличный пульт управления
Cleanupпустые комнаты удаляются сами
Safeсоздание блокируется при disabled

Что делает Temp Rooms

Модуль убирает ручную работу staff по voice-комнатам. Пользователь сам создаёт комнату, получает права владельца и управляет доступом через кнопки. Настройки хранятся по guild_id: канал панели, категория создания, роли доступа/запрета/менеджеров, лимит комнат и время автоудаления.

01

Voice hub

Публичная плашка с кнопками “Создать”, 2/2, 5/5, 10/10 и Private.

02

Создание

Бот создаёт voice-канал, owner overwrite и manager permissions.

03

Пульт

Владелец управляет замком, видимостью, лимитом, именем и пользователями.

04

Очистка

Пустые комнаты удаляются автоматически, а запись исчезает из temp_rooms.json.

Больше информации картинками

Полный визуальный путь: setup, публичная панель, создание через modal, быстрые пресеты, пульт владельца, invite/kick/block/transfer, автоудаление и disabled-state.

01 / setupАдмин вводит /rooms_setup
💬
slash command/rooms_setup

Установка панели персональных комнат

Нужно выбрать текстовый канал для плашки создания и категорию, где бот будет создавать voice-каналы.

/rooms_setup control_channel:#создать-комнату category:🎮 Приватные комнаты
update_module_state(temp_rooms=true) → deploy_panel
02 / public panelПанель создания
🎮
#создать-комнатуPERSONAL ROOMS

🎮 ПЕРСОНАЛЬНЫЕ КОМНАТЫ

Создайте приватный голосовой канал за пару секунд. Выберите быстрый пресет или ручную настройку.

TEMP ROOMS BANNER
➕ Создать
👤 2/2
👥 5/5
🏢 10/10
🔒 Private
03 / modalРучное создание
📝
CreateRoomModalНастройка приватной комнаты

Поля формы

Название комнаты: Чиллаут
Лимит участников: 5
create_temp_room(name, limit)
04 / room createdКомната создана

✅ Комната успешно создана

Подключайтесь: 🎙️ Чиллаут. Пульт находится в текстовом чате комнаты или fallback-канале панели.

active_rooms[guild_id:channel_id] saved
05 / owner panelПульт управления
🎛️
voice text-chatROOM CONTROL CENTER

🎛️ ЦЕНТР УПРАВЛЕНИЯ КОМНАТОЙ

👑 Владелец: @Sasi • 📍 Комната: 🎙️ Чиллаут • 👥 Лимит: 5 чел.

🔒 Закрыть
👻 Скрыть
📝 Название
👥 Лимит
👤 Пригласить
🗑️ Удалить
06 / member actionsInvite / Kick / Block / Transfer
MemberActionSelectViewmax 25timeout 90s
👤 Inviteвыдаёт view_channel + connect выбранному пользователю
access
👢 Kickперемещает участника из комнаты
move
⛔ Blockставит view_channel=false и connect=false
deny
👑 Transferпередаёт owner и manage_channels новому владельцу
owner
07 / cleanupПустая комната

🧹 auto_delete_loop

Когда в комнате никого нет, бот запоминает empty_since. После empty_delete_minutes канал удаляется.

default: 1 minute
08 / disabledСоздание выключено

🔌 ПРИВАТНЫЕ КОМНАТЫ ОБЕСТОЧЕНЫ

Новые комнаты не создаются, но уже созданные комнаты можно закрыть/почистить через их пульт управления.

🔌 ПРИВАТНЫЕ КОМНАТЫ ОБЕСТОЧЕНЫ

Команды Discord

Slash-команды нужны только администратору для публикации и обновления панели. Обычный игрок работает через кнопки.

setup/rooms_setup
/rooms_setup control_channel:#создать-комнату category:🎮 Приватные комнаты

Сохраняет control_channel_id, CONTROL_CHANNEL_ID, control_category_id, CONTROL_CATEGORY_ID, включает temp_rooms и публикует панель.

redeploy/rooms_deploy
/rooms_deploy

Принудительно обновляет панель приватных комнат по текущим настройкам. Если канал не задан, просит сначала выполнить /rooms_setup или настроить сайт.

public buttonsRoomsCreationView
➕ Создать 👤 2/2 👥 5/5 🏢 10/10 🔒 Private

Публичные кнопки создания voice-комнаты. Private создаёт комнату, скрытую от @everyone.

room buttonsInVoiceControlView
lock / hide / rename / limit invite / kick / block / transfer / delete

Пульт уже созданной комнаты. Им пользуется владелец, администратор или room-manager.

Путь комнаты от кнопки до автоудаления

1Panel

button

2Checks

state/roles

3Create

voice channel

4Record

temp_rooms.json

5Control

owner panel

6Cleanup

empty delete

A

Access checks

Проверяются module state, blocked roles, allowed roles, лимит комнат пользователя и лимит сервера.

B

Voice overwrite

@everyone, владелец, бот и manager-роли получают свои PermissionOverwrite.

C

Fallback control

Если Discord не дал отправить пульт в voice-chat, бот отправит его в канал панели.

Что видит обычный игрок

create own roomСоздать свою комнату

➕ Создать

Игрок вводит название и лимит. Канал появляется в выбранной категории и сразу готов для подключения.

🎙️ Чиллаут / 5 участников
quick presetsБыстрые пресеты

Меньше кликов

Для быстрых игровых ситуаций игрок может сразу нажать 2/2, 5/5, 10/10 или Private.

👤 2/2
👥 5/5
🏢 10/10
🔒 Private
blockedЕсли нет доступа

❌ Создание заблокировано

Игрок может быть в blocked_role_ids или не иметь allowed_role_ids, если владелец включил доступ только по ролям.

allowed / blocked role gate
limitЕсли лимит достигнут

❌ Уже есть активная комната

По умолчанию один игрок может иметь одну комнату, но админ может поднять max_rooms_per_user до 10.

max_rooms_per_user

Пульт владельца комнаты

Пульт остаётся доступен владельцу, администраторам и room-manager ролям. Даже если модуль выключен, уже созданные комнаты можно закрыть, почистить или удалить.

basic controlsОсновные кнопки
🔒 Закрыть / открытьпереключает connect для @everyone.
👻 Скрыть / показатьпереключает view_channel для @everyone.
📝 Названиеоткрывает RenameRoomModal, имя до 30 символов.
👥 Лимитоткрывает ChangeLimitModal, диапазон 0–99.
🗑️ Удалитьпоказывает DeleteRoomConfirmView.
people controlsУправление людьми
👤 Inviteвыдаёт доступ конкретному пользователю.
👢 Kickвыкидывает из voice, но не ставит deny.
⛔ Blockзапрещает видеть и подключаться, при необходимости выкидывает.
👑 Transferснимает manage_channels у старого owner и передаёт новому.
rename limitDiscord rate-limit

⚠️ Переименование

Discord ограничивает переименование каналов. Если пойман код 50024, бот сообщает, что можно переименовывать только 2 раза в 10 минут.

HTTP 50024 safe message
cooldownАнтиспам пульта

3 действия за 5 секунд

Если владелец слишком быстро жмёт кнопки, бот попросит притормозить.

cooldowns[user_id] window 5 sec

Что делает админ или manager

01

Настраивает категорию

Выбирает, где создаются voice-комнаты.

02

Настраивает роли

allowed, blocked и manager role groups.

03

Следит за логами

log_action пишет создание, rename, limit, invite, kick, block, transfer и delete.

04

Может управлять

Админ или manager может пользоваться пультом любой комнаты.

Практический совет

Для больших серверов создай отдельную роль “Room Manager” и добавь её в manager_role_ids. Тогда staff сможет помогать игрокам, не выдавая всем Administrator.

Настройка на сайте

Dashboard сохраняет настройки в data/temp_rooms_settings.json, а активные комнаты — в data/temp_rooms.json. Сайт может поставить deploy_requested, после чего loop каждые 10 секунд обновит панель.

channelsКаналы и категория
control_channel_idтекстовый канал с публичной панелью создания.
CONTROL_CHANNEL_IDuppercase alias для совместимости.
control_category_idкатегория, где создаются voice-каналы.
CONTROL_CATEGORY_IDuppercase alias категории.
control_message_idID опубликованной панели.
last_control_channel_idнужен при переносе панели в другой канал.
log_channel_idканал логов действий с комнатами.
visual settingsОформление панели
custom_title / TEMP_ROOMS_TITLEзаголовок embed.
custom_description / custom_descописание панели создания.
custom_button_textтекст основной кнопки “Создать”.
custom_footerfooter панели.
custom_colorцвет embed-линии.
custom_banner / TEMP_ROOMS_BANNERбаннер из сайта или BannerManagerCog.
json previewtemp_rooms_settings.json
data/temp_rooms_settings.json
{ "123456789": { "control_channel_id": "111", "CONTROL_CHANNEL_ID": "111", "control_category_id": "222", "CONTROL_CATEGORY_ID": "222", "control_message_id": "333", "last_control_channel_id": "111", "log_channel_id": "444", "allowed_role_ids": ["555"], "blocked_role_ids": ["666"], "manager_role_ids": ["777"], "max_rooms_per_user": 1, "max_rooms_per_guild": 50, "empty_delete_minutes": 1, "deploy_requested": true } }
active roomstemp_rooms.json
data/temp_rooms.json
{ "123456789:987654321": { "owner": 111111111, "guild_id": 123456789, "channel_id": 987654321, "created_at": "2026-06-03T22:00:00+00:00", "empty_since": "", "name": "Чиллаут", "limit": 5, "control_message_id": 222222222, "control_channel_id": 987654321 } }

Лимиты и роли доступа

Настройки нормализуются безопасно: ID приводятся к строкам, роли собираются из legacy и новых ключей, а лимиты зажимаются в разумные диапазоны.

role groupsГруппы ролей
allowed_role_idsесли список задан, создавать комнаты могут только эти роли или админ.
blocked_role_idsэти роли не могут создавать комнаты.
manager_role_idsмогут управлять чужими комнатами.
aliasesaccess_role_ids, create_role_ids, deny_role_ids, staff_role_ids, admin_role_ids.
numeric limitsЧисловые лимиты
max_rooms_per_userот 1 до 10, по умолчанию 1.
max_rooms_per_guildот 1 до 500, по умолчанию 50.
empty_delete_minutesот 1 до 1440 минут, по умолчанию 1.
voice limitлимит людей в комнате 0–99.
namingНазвания каналов

sanitize_channel_name

Название чистится от @, #, переносов и лишних пробелов, затем обрезается до 30 символов.

🎙️ Чиллаут
private modePrivate preset

🔒 Закрытая комната

Для @everyone сразу ставится view_channel=false и connect=false, а владелец и managers получают доступ.

private=True

Автоудаление пустых комнат

voice eventon_voice_state_update

Участник вошёл или вышел

Бот проверяет затронутые channel_id. Если это активная комната, вызывает handle_room_voice_update.

before.channel / after.channel → affected_ids
empty timerempty_since

Комната стала пустой

В temp_rooms.json появляется empty_since. Если кто-то вернулся, таймер очищается.

empty_since = utc_now().isoformat()
delete loopauto_delete_loop

Удаление мусора

Loop удаляет пустой voice-канал после empty_delete_minutes и убирает запись из active_rooms.

default empty_delete_minutes = 1
dead recordsЧистка битых записей

Канал уже удалён

Если запись осталась, но voice-канала нет, бот удаляет dead record и сохраняет temp_rooms.json.

normalize_room_record / dead_records

Права бота и безопасность

01

Manage Channels

Нужно для создания, удаления, переименования и изменения прав каналов.

02

View Channels

Бот должен видеть категорию и каналы, где публикует пульт.

03

Connect

Нужно для корректных voice overwrites и доступов.

04

Send Messages

Нужно для панели создания, fallback-пульта и логов.

who can controlКто нажимает пульт
ownerпользователь, который создал комнату.
administratorадмин сервера проходит проверку.
manager_role_idsroom-manager роли из настроек.
other usersполучают отказ: “только владелец, администратор или manager”.
logsЧто логируется
🎙️ Комната созданаканал, владелец, лимит и тип.
📝 Rename / 👥 Limitновое имя или новый лимит.
👤 Invite / 👢 Kick / ⛔ Blockдействие по пользователю.
👑 Transfer / 🗑️ Deleteпередача владельца или удаление комнаты.

Если модуль выключен

Отключение через module_states.json не удаляет temp_rooms_settings.json и temp_rooms.json. Новые комнаты не создаются, панель переходит в красный disabled-state, но пульты уже созданных комнат остаются рабочими, чтобы игроки или staff могли закрыть/почистить комнаты.

disabled panelЧто видят игроки
🔌
safe stateTemp Rooms disabled

🔌 ПРИВАТНЫЕ КОМНАТЫ ОБЕСТОЧЕНЫ

Система приватных комнат временно отключена администратором сервера. Создание новых комнат недоступно.

🔌 ПРИВАТНЫЕ КОМНАТЫ ОБЕСТОЧЕНЫ
state aliasesКлючи состояния
temp_roomsосновной ключ.
temp-rooms / roomsкороткие alias.
voice_rooms / voice-roomsalias voice-комнат.
private_rooms / private-roomsalias приваток.
приватные_комнатырусский alias.

Карта технической логики

filesФайлы модуля
__init__.py

Экспортирует TempRoomsCog и setup.

cog.py

TempRoomsCog, active_rooms, deploy_panel, create_temp_room, loops и slash-команды.

views.py

RoomsCreationView, InVoiceControlView, MemberActionSelectView, DeleteRoomConfirmView и TempRoomsDisabledView.

modals.py

CreateRoomModal, RenameRoomModal и ChangeLimitModal.

settings.py

normalize_settings, role aliases, panel_hash, module aliases и deploy flags.

embeds.py / utils.py

creation/control/disabled/log embeds, JSON helpers, parse helpers и sanitize_channel_name.

constantsГлавные константы
🎮
SETTINGS_FILEtemp_rooms_settings.json
🎙️
ROOMS_FILEtemp_rooms.json
🔌
MODULES_FILEmodule_states.json
🧹
EMPTY_DELETE1 min default
⚠️
DEPLOY5 attempts
⏱️
SITE_SYNC10 sec
deploy logicWeb → Discord
deploy_requestedсайт просит обновить панель.
panel_hashhash по PANEL_HASH_KEYS, чтобы не делать лишний deploy.
control_message_idID панели для edit.
last_control_channel_idесли канал изменился, старое сообщение удаляется.
deploy_attemptsпосле 5 ошибок deploy_requested выключается.
room recordАктивная комната
ownerID владельца комнаты.
guild_id / channel_idключ voice-комнаты.
created_at / empty_sinceвремя создания и таймер пустоты.
name / limitимя и лимит комнаты.
control_message_idID пульта управления.

Ошибки и решения

/rooms_setup не публикует панель

Проверьте, что control_channel — текстовый канал, у бота есть Send Messages и Embed Links, а category — категория сервера.

Комната не создаётся

Проверьте module state, blocked_role_ids, allowed_role_ids, max_rooms_per_user, max_rooms_per_guild и права Manage Channels.

Пульт не появился в комнате

Discord может не разрешить отправить сообщение в voice-chat. Тогда бот пытается отправить пульт в fallback control_channel.

Переименование пишет лимит Discord API

Это стандартный rate-limit Discord: канал можно переименовывать только 2 раза в 10 минут.

Игрок не может пользоваться пультом

Пульт доступен владельцу комнаты, администратору или role из manager_role_ids. Остальные получают отказ.

Пустые комнаты не удаляются

Проверьте auto_delete_loop, empty_delete_minutes, записи empty_since и права бота удалять voice-каналы.

После сайта панель не обновилась

Проверьте deploy_requested, deploy_attempts, last_deploy_error, control_channel_id и control_message_id.

Модуль выключен, но пульт комнаты работает

Это специально: новые комнаты заблокированы, но старые можно закрыть, почистить или удалить безопасно.

// WIKI_NAVIGATION

Вернуться к списку Wiki

Ты дошёл до конца страницы Temp Rooms. Можно вернуться в общий центр документации, открыть Dashboard или подняться наверх к началу этой страницы.