Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
e1eabfe
Enforce admin remove LP reset command and translate README to Russian
rufus1981vlom-ship-it Mar 9, 2026
70676a7
Harden VK manage routing and admin removal safety checks
rufus1981vlom-ship-it Mar 9, 2026
d0d8cd4
Document Java 17 requirement and enforce build JDK version
rufus1981vlom-ship-it Mar 9, 2026
75ca631
Add RU/EN/KK localization and configurable role permission matrix
rufus1981vlom-ship-it Mar 9, 2026
ab06e41
Pin ordavk builds to Maven 3 wrapper and document Maven 4 issue
rufus1981vlom-ship-it Mar 9, 2026
ef2401d
Rework OrdaVK manage commands, admin removal flow, and long poll
rufus1981vlom-ship-it Mar 9, 2026
30f7260
Fix SupportTicketService constructor call syntax
rufus1981vlom-ship-it Mar 9, 2026
ad3a743
Align role defaults and pin Maven default plugin versions
rufus1981vlom-ship-it Mar 9, 2026
2c51fd7
Fix admin command reply ordering in VkMessageRouter
rufus1981vlom-ship-it Mar 9, 2026
c68dabe
Harden permission matrix minimum-role checks
rufus1981vlom-ship-it Mar 9, 2026
f255967
Add structured dangerous-action event logging for OrdaVK bridge
rufus1981vlom-ship-it Mar 10, 2026
f819fcc
Add OrdaVK Manager bootstrap/reload control command
rufus1981vlom-ship-it Mar 10, 2026
538eb59
docs(ordavk): refresh README with full current feature set
rufus1981vlom-ship-it Mar 10, 2026
1ae078f
fix(ordavk): improve admin chat matching and log dangerous server com…
rufus1981vlom-ship-it Mar 11, 2026
282d8e2
fix(ordavk): accept vk mention/id links and nick in admin set
rufus1981vlom-ship-it Mar 11, 2026
3385288
fix(ordavk): ignore non-command messages and format help list
rufus1981vlom-ship-it Mar 11, 2026
3121891
fix(ordavk): parse rname args with flexible whitespace
rufus1981vlom-ship-it Mar 11, 2026
1da6e9f
Add delayed offline-reply delivery window and configurable join delay
rufus1981vlom-ship-it Mar 11, 2026
5c05ed9
Add YAML pending moderation actions and Russian offline-safe behavior
rufus1981vlom-ship-it Mar 11, 2026
ac8ceed
Harden pending-action ordering, retries, and immediate YAML persistence
rufus1981vlom-ship-it Mar 11, 2026
9e4effc
Add /rep and /ac aliases with Russian usage and preserved ticket logic
rufus1981vlom-ship-it Mar 11, 2026
7c8c04d
Fix handleSupport variable shadowing compile error in VkMessageRouter
rufus1981vlom-ship-it Mar 11, 2026
d03d794
Fix handleSupport variable shadowing compile error
rufus1981vlom-ship-it Mar 11, 2026
b1edad4
Fix remaining t references in VkMessageRouter manage handler
rufus1981vlom-ship-it Mar 11, 2026
f54848e
Fix plugin descriptor names to remove spaces for Paper
rufus1981vlom-ship-it Mar 11, 2026
66d9b15
Align VkMessageRouter event logging with test expectations
rufus1981vlom-ship-it Mar 11, 2026
b1315a4
Fix support help and split manage chat routing
rufus1981vlom-ship-it Mar 12, 2026
f45bb78
Fix !cmd policy gating to preserve event logging
rufus1981vlom-ship-it Mar 12, 2026
17ba362
Keep !cmd event/audit logging reachable for allowed roles
rufus1981vlom-ship-it Mar 12, 2026
a45817c
Add Russian diagnostics and online stats command scaffolding
rufus1981vlom-ship-it Mar 12, 2026
316b984
Fix raw-command policy regression in VkMessageRouter
rufus1981vlom-ship-it Mar 12, 2026
9f66596
Fix router event test by creating online mock player
rufus1981vlom-ship-it Mar 12, 2026
66a0954
Refine OrdaVK Lite UX, templates, punish presets, and retention
rufus1981vlom-ship-it Mar 14, 2026
efe447d
Advance OrdaVK PRO commands, audit/discipline, and sqlite runtime sto…
rufus1981vlom-ship-it Mar 15, 2026
22197be
Stabilize PRO command flow, role help, and sqlite pending persistence
rufus1981vlom-ship-it Mar 15, 2026
03e4630
Add auto-suspend on 3 reprimands with manual suspend/restore workflow
rufus1981vlom-ship-it Mar 15, 2026
10babe3
Add lightweight staffstatus and revokecheck control commands
rufus1981vlom-ship-it Mar 15, 2026
7e3ebcb
Add safe VK callback buttons for ticket and staff UX
rufus1981vlom-ship-it Mar 15, 2026
eab34f8
Bump plugin version to OrdaVK-2.0Pro
rufus1981vlom-ship-it Mar 15, 2026
2d1f914
Set Maven plugin version to 2.0Pro
rufus1981vlom-ship-it Mar 15, 2026
33704fa
Polish Stage-2 callbacks and discipline/audit keyboards
rufus1981vlom-ship-it Mar 15, 2026
eb71f0e
Add P0 IP/restriction moderation commands and persistence
rufus1981vlom-ship-it Mar 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
subprojects {
apply plugin: 'java'

group 'com.vk.api'
version '1.0.16'
group = 'com.vk.api'
version = '1.0.16'

sourceCompatibility = 1.8
targetCompatibility = 1.8
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
Expand Down Expand Up @@ -34,4 +36,4 @@ subprojects {
jacksonVersion = '2.8.5'
jettyVersion = '9.4.0.v20161208'
}
}
}
115 changes: 115 additions & 0 deletions orda-vk-plugin/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
# OrdaVK 2.0 PRO (на базе Lite)

## Что добавлено поверх Lite
- Сохранены все Lite-команды и маршруты (`/ac`, `/helpop`, `/report`, `/rep`).
- Ticket workflow PRO: `!take`, `!unassign`, `!reopen`, `!replyclose`, фильтры `!tickets`, `!ticket full`.
- Templates UX: `!rlist`, placeholders `{player}`, `{ticket}`, `{staff}`.
- Audit commands: `!audit`, `!audit recent`, `!audit <staff>`, `!audit ticket <id>`, `!audit player <nick>`, `!audit punish <nick>`.
- Discipline commands: `!staffnote`, `!staffwarn`, `!staffreprimand`, `!staffdiscipline`, `!staffforgive`.
- Punishment flow: `!unmute`, `!pardon`, `!unwarn`, `!punishlog` + tracking reversals.
- Явные VK-алиасы для chat moderation: `!vkick`, `!vkban`, `!vkunban` (старые команды оставлены).
- Расширен `!lookup`: режимы command/tickets/punish и лимит.
- Расширен `!staffstats`: support/report, replies, first response, punish/reverted, discipline, quality/recommendation.
- SQLite storage для операционных данных: tickets/history, pending, punishments, discipline, audit.

## Команды
### Help
- `!help`
- `!help support`
- `!help mod`
- `!help admin`
- `!help punish`
- `!help audit`

### Tickets
- `!tickets`
- `!tickets mine|open|unassigned|support|report`
- `!ticket <id>`
- `!ticket full <id>` / `!ticket <id> full`
- `!reply <id> <text>`
- `!replyclose <id> <text>`
- `!assign <id> <vk_id>`
- `!take <id>`
- `!unassign <id>`
- `!close <id> [comment]`
- `!reopen <id>`
- `!move <id> support|report [--reason ...]`
- `!r <id> <template>`
- `!rlist`

### Player / Staff
- `!check <nick>`
- `!check tech <nick>`
- `!lookup <nick>`
- `!lookup <nick> 20`
- `!lookup <nick> tickets`
- `!lookup <nick> punish`
- `!staffstats <vk_id|nick> [full]`

### Audit / Discipline
- `!audit`
- `!audit recent`
- `!audit <vk_id|nick>`
- `!audit ticket <id>`
- `!audit player <nick>`
- `!audit punish <nick>`
- `!staffnote <vk_id|nick> <text>`
- `!staffwarn <vk_id|nick> <text>`
- `!staffreprimand <vk_id|nick> <text>`
- `!staffdiscipline <vk_id|nick>`
- `!staffforgive <record_id>`
- `!staffsuspend <vk_id|nick> [reason]`
- `!staffrestore <vk_id|nick> [reason]`
- `!staffstatus <vk_id|nick>`
- `!staffrevokecheck <vk_id|nick>`

### Punishments
- `!mute <nick> <preset|time reason>`
- `!ban <nick> <preset|time reason>`
- `!warn <nick> <preset|reason>`
- `!unmute <nick> [reason]`
- `!pardon <nick> [reason]`
- `!unwarn <nick> [reason]`
- `!punishlog <nick>`

### Admin / VK / Raw
- `!admins`
- `!admin set|level|remove`
- `!rnick`
- `!kick` / `!ban @id` / `!unban`
- `!vkick` / `!vkban` / `!vkunban`
- `!noname`
- `!cmd <raw>`

## Хранение данных
SQLite (`ordavk-pro.db`):
- `tickets`
- `ticket_history`
- `audit_log`
- `punishments`
- `discipline`
- `pending`

YAML:
- config/presets/templates/policies/retention.


## Auto-suspend staff
- 3 активных `REPRIMAND` => автоматический `SUSPENDED`.
- Бот удаляет staff из VK staff-чатов и запускает revoke-команды сервера из `config.yml`.
- Восстановление только вручную: `!staffrestore` (по умолчанию без авто-возврата серверных прав).

- Быстрый контроль: `!staffstatus` и `!staffrevokecheck` для senior staff.

## VK buttons (safe UX)
- Кнопки добавлены как ускорение (не замена команд) для: `!ticket`, `!tickets`, `!staffstatus`.
- Опасные действия через 2 шага подтверждения: закрытие/перенос тикета, suspend/restore staff.
- При устаревшем payload бот отвечает коротко и безопасно (без падений/дублей).
- Stage-2: добавлены utility-кнопки для `!check` (lookup + punish preset/confirm), `!staffdiscipline` (status/revokecheck/suspend/restore) и фильтры для `!audit`/`!audit recent`.


## P0 moderation controls
- `!getip <nick>` — показать последний известный IP игрока (senior only).
- `!banip <ip|nick> <reason>` / `!unbanip <ip> [reason]` — IP ban через config-команды.
- `!offreport <nick> <time> [reason]` / `!onreport <nick> [reason]` — временный блок `/report` и `/rep`.
- `!offhelpop <nick> <time> [reason]` / `!onhelpop <nick> [reason]` — временный блок `/helpop` и `/ac`.
37 changes: 37 additions & 0 deletions orda-vk-plugin/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
plugins {
id 'java'
}

group = 'com.orda.vk'
version = '2.0Pro'

repositories {
mavenCentral()
maven {
url = 'https://repo.papermc.io/repository/maven-public/'
}
}

dependencies {
implementation project(':sdk')
compileOnly 'io.papermc.paper:paper-api:1.20.4-R0.1-SNAPSHOT'
implementation 'com.google.code.gson:gson:2.9.0'
implementation 'org.xerial:sqlite-jdbc:3.46.1.3'
}

java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}

tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8'
options.release = 17
}

processResources {
filteringCharset = 'UTF-8'
filesMatching('plugin.yml') {
expand(version: version)
}
}
29 changes: 29 additions & 0 deletions orda-vk-plugin/src/main/java/com/orda/vkplugin/OrdaVkPlugin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.orda.vkplugin;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.orda.vkplugin.listener.GameEventListener;
import org.bukkit.plugin.java.JavaPlugin;

public class OrdaVkPlugin extends JavaPlugin {
private VkBridgeService vkBridgeService;

@Override
public void onEnable() {
saveDefaultConfig();
Gson gson = new GsonBuilder().create();

vkBridgeService = new VkBridgeService(this, gson);
getServer().getPluginManager().registerEvents(new GameEventListener(vkBridgeService), this);
vkBridgeService.start();
getLogger().info("Orda VK запущен.");
}

@Override
public void onDisable() {
if (vkBridgeService != null) {
vkBridgeService.stop();
}
getLogger().info("Orda VK остановлен.");
}
}
Loading