HELPER REPORTS РАБОЧИЕ ОТЧЁТЫ /REPORTS_SETUP / WORK CATALOG / SHOP POINTS / PERSONAL THREADS
Reports — это не жалобы на игроков, а система фиксации работы staff-команды. Сотрудник открывает Каталог работ, выбирает выполненную задачу, прикрепляет доказательства, куратор проверяет карточку, а HELPER начисляет баллы через ShopCog, пишет лог и ведёт личное дело в ForumChannel.
Что делает Reports
Модуль фиксирует выполненную работу staff-сотрудников. Владелец сервера задаёт виды работ и награды, сотрудник отправляет доказательства, куратор подтверждает или отклоняет, а бот аккуратно обновляет личное дело и общий лог. Это отдельная система от жалоб/репортов на игроков.
Терминал
Публичная плашка с кнопками “Каталог работ” и “Админ-панель”.
Каталог
До 25 видов работ: название, emoji и количество баллов.
Проверка
Куратор видит proof, комментарий и кнопки approve/reject.
Личное дело
После одобрения лог сохраняется в ForumChannel и начисляются баллы.
Больше информации картинками
Ниже весь путь в визуальных блоках: setup, терминал, каталог, modal доказательств, карточка проверки, approve/reject, личное дело, admin-panel и disabled-state.
Команды Discord
Команды настройки доступны администраторам. Обычный staff работает через кнопки терминала и proof-modal.
/reports_setup terminal_channel:#staff-work check_channel:#reports-check log_channel:#work-logs forum_channel:Личные-дела mod_role:@CuratorПервичная настройка: канал терминала, скрытый канал проверки, канал логов, форум личных дел и роль куратора.
/reports_deployОбновляет опубликованную плашку по текущим настройкам сайта или JSON.
ReportTerminalView
📂 persistent_catalog_v3
⚙️ persistent_admin_v3Каталог видят сотрудники, админ-панель доступна кураторам или администраторам.
ReportApprovalView
✅ report_btn_approve_v2
❌ report_btn_reject_v2Куратор проверяет карточку отчёта, начисляет баллы или отправляет причину отказа.
Путь отчёта от работы до баллов
плашка
выбор
proof
куратор
ShopCog
Forum/log
Ephemeral UX
Каталог и админ-панель не засоряют канал, потому что отправляются приватно.
Safe footer
Карточка проверки хранит guild_id, user_id и points в footer, чтобы approval не зависел от текста.
Graceful reward
Если ShopCog недоступен, отчёт всё равно одобряется, но бот показывает предупреждение.
Что видит сотрудник
Что делает куратор
Проверяет proof
Открывает ссылку на материалы, читает комментарий и сравнивает с правилами сервера.
Одобряет
Кнопка ✅ начисляет points, создаёт лог и отправляет DM сотруднику.
Отклоняет
Кнопка ❌ открывает RejectReasonModal с причиной отказа.
Управляет каталогом
Админ-панель добавляет, редактирует и удаляет виды работ.
administratorадминистратор проходит всегда.REPORT_MOD_ROLESнесколько ролей кураторов.REPORT_MOD_ROLEстарое одиночное поле для совместимости.aliasesmoderator_role_ids / staff_role_ids / access_role_ids.Личные дела и начисление
После одобрения бот создаёт или находит личную тему сотрудника в ForumChannel, отправляет туда лог и сохраняет thread id через ShopCog, если метод set_thread доступен.
add_bal(user_id, guild_id, points)основной контракт HELPER.named paramsподдерживаются user/guild/amount сигнатуры.no guessingнеизвестные positional-сигнатуры не угадываются.false resultесли начисление не сработало, отчёт всё равно фиксируется с предупреждением.Настройка на сайте
Dashboard пишет настройки в data/reports_settings.json. Cog каждые 5 секунд нормализует настройки, проверяет deploy_requested и редактирует старый терминал по REPORT_MESSAGE_ID.
REPORT_TERMINAL_CHANNELканал, где стоит терминал staff-отчётов.REPORT_CHECK_CHANNELскрытый канал проверки новых отчётов.REPORT_LOG_CHANNELобщий лог одобренных отчётов.REPORT_FORUM_CHANNELDiscord ForumChannel для личных дел.REPORT_MOD_ROLESнесколько ролей кураторов.REPORT_MOD_ROLElegacy одиночная роль.custom_title / REPORT_TITLEзаголовок embed.custom_descriptionописание под заголовком.custom_button_textтекст кнопки каталога.custom_footerfooter плашки.custom_colorцвет embed-линии.custom_banner / REPORT_BANNERбаннер терминала.Каталог работ
REPORT_TYPES — это словарь “название → emoji + points”. Пустые, некорректные и нулевые работы отбрасываются нормализацией, а Discord Select показывает максимум 25 вариантов.
nameобрезается до 100 символов.emojiпо умолчанию 📌, максимум 10 символов.pointsдолжно быть больше 0.REPORT_TYPES_JSONможет мигрировать в REPORT_TYPES.selectберёт первые 25 работ.🛡️ Патруль35 баллов за проверку территории.🎙️ Обзвон75 баллов за проведённое интервью.🧾 Проверка анкеты40 баллов за обработку заявок.🎮 Ивент120 баллов за проведённое мероприятие.Если модуль выключен
Отключение через module_states.json не удаляет настройки, каталог, логи или личные дела. Терминал получает красный embed и disabled-кнопку, а ProtectedView блокирует новые действия.
reportsосновной ключ.reportкороткий alias.work_reports / work-reportsalias рабочих отчётов.reportingдополнительная совместимость.рабочие_отчетырусский alias.Карта технической логики
data/reports_settings.json — каналы, роли, каталог, оформление, message_id и deploy.
data/module_states.json — включение/выключение reports.
ReportsCog, site_sync_loop, /reports_setup, /reports_deploy, terminal payload и ShopCog reward.
ReportTerminalView, ReportsAdminView, SubmitReportModal, ReportApprovalView и ReportsDisabledView.
нормализация REPORT_TYPES, JSON cache, role ids, proof formatting и safe channel resolving.
DEFAULT_TITLEтерминалDEFAULT_BUTTONКаталог работDEFAULT_TYPESДроп / ПремияSYNC5 секундDEPLOY5 попытокSELECT25 optionsnormalize_all_report_settings_if_neededпишет JSON только при реальных изменениях.module_states_changedотслеживает mtime module_states.json.deploy_or_update_terminaledit старого сообщения или send нового.REPORT_MESSAGE_IDID опубликованного терминала.last_terminal_channel_idнужно для переноса панели между каналами.extract_safe_dataдостаёт user_id, report_type, points и guild_id из embed._check_staffпроверяет куратора или администратора.add_shop_balanceначисляет баллы через ShopCog.get_or_create_personal_threadсоздаёт/находит личное дело.RejectReasonModalотправляет причину отказа в DM.Ошибки и решения
Отчёт не отправляется в проверку
Проверьте REPORT_CHECK_CHANNEL и права бота писать сообщения, embed и attachments в скрытый канал проверки.
Staff не видит каталог
Каталог пустой, если REPORT_TYPES не настроен или все работы имеют points <= 0.
Куратор не может одобрить
Проверьте REPORT_MOD_ROLES / REPORT_MOD_ROLE. Администратор сервера проходит проверку автоматически.
Баллы не начислились
Проверьте, загружен ли ShopCog и поддерживает ли он add_bal(user_id, guild_id, points) или понятную именованную сигнатуру.
Личное дело не создано
Нужен Discord ForumChannel. Если выбран обычный канал или у бота нет прав create threads, тема не появится.
Сайт сохранил, но плашка не обновилась
Проверьте deploy_requested, REPORT_TERMINAL_CHANNEL, REPORT_MESSAGE_ID, last_terminal_channel_id и права бота редактировать сообщение.