|
|
@@ -5,7 +5,8 @@ import bot_luo_core.cli.CmdCatalog.COMMANDS
|
|
|
import bot_luo_core.cli.annotation.Argument
|
|
|
import bot_luo_core.cli.annotation.Command
|
|
|
import bot_luo_core.cli.annotation.Method
|
|
|
-import bot_luo_core.cli.checkers.addon.GroupOriginalPermissionChecker
|
|
|
+import bot_luo_core.cli.checkers.PermissionChecker
|
|
|
+import bot_luo_core.cli.checkers.addon.GroupPermissionChecker
|
|
|
import bot_luo_core.cli.exceptions.CheckerFatal
|
|
|
import bot_luo_core.cli.handlers.CmdExArgHandler
|
|
|
import bot_luo_core.data.CmdDataObj
|
|
|
@@ -22,10 +23,10 @@ import kotlin.reflect.full.createInstance
|
|
|
)
|
|
|
class StatCmd(context: CmdContext) : Cmd(context) {
|
|
|
|
|
|
- suspend fun getDetail(carrier: CmdDataObj, name: String, id: String, cmds: List<CmdExecutable>): CmdReceipt {
|
|
|
+ fun getDetail(carrier: CmdDataObj, name: String, id: String, cmds: List<CmdExecutable>): CmdReceipt {
|
|
|
val filtered = cmds.filter {
|
|
|
try {
|
|
|
- justCheck.forEach { checker -> if (checker in it.checkers) checker.createInstance().check(it, context) }
|
|
|
+ justCheck.forEach { checker -> checker.createInstance().check(it, context) }
|
|
|
true
|
|
|
} catch (ignore: CheckerFatal) {
|
|
|
false
|
|
|
@@ -33,30 +34,31 @@ class StatCmd(context: CmdContext) : Cmd(context) {
|
|
|
}
|
|
|
|
|
|
return if (filtered.isEmpty()) {
|
|
|
- context.sendMessageWithLog("${name}统计 —— 403 Forbidden")
|
|
|
+ context.print("${name}统计 —— 403 Forbidden")
|
|
|
FATAL
|
|
|
} else {
|
|
|
val table = TableBuilder(4)
|
|
|
filtered.groupBy { it.cmdName }.forEach { (k, v) ->
|
|
|
table.th("${name}统计 —— $id").br()
|
|
|
+ val map = v.associateBy { it.methName }
|
|
|
table.prettyLines(
|
|
|
- "${k}:${v.sumOf { carrier.readCmdData(it).totalCount }}次",
|
|
|
- v.groupBy { it.methName }.entries
|
|
|
+ "${k}:${map.values.sumOf { carrier.readCmdData(it).totalCount }}次",
|
|
|
+ map.entries
|
|
|
) { (key, value), builder ->
|
|
|
builder.td("-$key:")
|
|
|
- .td("${value.sumOf { carrier.readCmdData(it).totalCount }}次")
|
|
|
- .td(value.maxOf { carrier.readCmdData(it).lastTime } relativeToE context.time)
|
|
|
+ .td("${carrier.readCmdData(value).totalCount}次")
|
|
|
+ .td(carrier.readCmdData(value).lastTime relativeToE context.time)
|
|
|
}
|
|
|
}
|
|
|
- context.sendMessageWithLog(table.toString())
|
|
|
+ context.print(table.toString())
|
|
|
SUCCESS
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- suspend fun getGeneral(carrier: CmdDataObj, name: String, id: String, cmds: ArrayList<CmdExecutable>): CmdReceipt {
|
|
|
+ fun getGeneral(carrier: CmdDataObj, name: String, id: String, cmds: ArrayList<CmdExecutable>): CmdReceipt {
|
|
|
val filtered = cmds.filter {
|
|
|
try {
|
|
|
- justCheck.forEach { checker -> if (checker in it.checkers) checker.createInstance().check(it, context) }
|
|
|
+ justCheck.forEach { checker -> checker.createInstance().check(it, context) }
|
|
|
true
|
|
|
} catch (ignore: CheckerFatal) {
|
|
|
false
|
|
|
@@ -64,17 +66,18 @@ class StatCmd(context: CmdContext) : Cmd(context) {
|
|
|
}
|
|
|
|
|
|
return if (filtered.isEmpty()) {
|
|
|
- context.sendMessageWithLog("${name}统计 —— 403 Forbidden")
|
|
|
+ context.print("${name}统计 —— 403 Forbidden")
|
|
|
FATAL
|
|
|
} else {
|
|
|
val table = TableBuilder(4)
|
|
|
table.th("${name}统计 —— $id").br()
|
|
|
filtered.groupBy { it.cmdName }.forEach { (k, v) ->
|
|
|
+ val map = v.associateBy { it.methName }
|
|
|
table.tr("$k:")
|
|
|
- .td("${v.sumOf { carrier.readCmdData(it).totalCount }}次")
|
|
|
- .td(v.maxOf { carrier.readCmdData(it).lastTime } relativeToE context.time)
|
|
|
+ .td("${map.values.sumOf { carrier.readCmdData(it).totalCount }}次")
|
|
|
+ .td(map.values.maxOf { carrier.readCmdData(it).lastTime } relativeToE context.time)
|
|
|
}
|
|
|
- context.sendMessageWithLog(table.toString())
|
|
|
+ context.print(table.toString())
|
|
|
SUCCESS
|
|
|
}
|
|
|
}
|
|
|
@@ -82,40 +85,40 @@ class StatCmd(context: CmdContext) : Cmd(context) {
|
|
|
/* ======================== cmd ======================== */
|
|
|
|
|
|
@Method(name = "", alias = ["cmd", "c"], pmsLevel = CmdPermissionLevel.HIGH, title = "全局统计", order = 0)
|
|
|
- suspend fun cmd (
|
|
|
+ fun cmd (
|
|
|
@Argument(name = "命令", handler = CmdExArgHandler::class)
|
|
|
cmds: List<CmdExecutable>
|
|
|
): CmdReceipt = getDetail(Cmds, "全局命令", "", cmds)
|
|
|
|
|
|
@Method(name = "", alias = ["cmd", "c"], pmsLevel = CmdPermissionLevel.HIGH, title = "全局统计", order = 1)
|
|
|
- suspend fun cmd (): CmdReceipt = getGeneral(Cmds, "全局命令", "", COMMANDS)
|
|
|
+ fun cmd (): CmdReceipt = getGeneral(Cmds, "全局命令", "", COMMANDS)
|
|
|
|
|
|
/* ======================== group ======================== */
|
|
|
|
|
|
@Method(name = "group", alias = ["g"], pmsLevel = CmdPermissionLevel.HIGH, title = "群组统计", order = 0)
|
|
|
- suspend fun group (
|
|
|
+ fun group (
|
|
|
@Argument(name = "命令", handler = CmdExArgHandler::class)
|
|
|
cmds: List<CmdExecutable>
|
|
|
): CmdReceipt = getDetail(context.group, "群组", "${context.group.name}(${context.group.id})", cmds)
|
|
|
|
|
|
@Method(name = "group", alias = ["g"], pmsLevel = CmdPermissionLevel.HIGH, title = "群组统计", order = 1)
|
|
|
- suspend fun group (): CmdReceipt = getGeneral(context.group, "群组", "${context.group.name}(${context.group.id})", COMMANDS)
|
|
|
+ fun group (): CmdReceipt = getGeneral(context.group, "群组", "${context.group.name}(${context.group.id})", COMMANDS)
|
|
|
|
|
|
/* ======================== user ======================== */
|
|
|
|
|
|
@Method(name = "user", alias = ["u"], pmsLevel = CmdPermissionLevel.HIGH, title = "用户统计", order = 0)
|
|
|
- suspend fun user (
|
|
|
+ fun user (
|
|
|
@Argument(name = "命令", handler = CmdExArgHandler::class)
|
|
|
cmds: List<CmdExecutable>
|
|
|
): CmdReceipt = getDetail(context.user, "用户", "${context.user.name}(${context.user.id})", cmds)
|
|
|
|
|
|
@Method(name = "user", alias = ["u"], pmsLevel = CmdPermissionLevel.HIGH, title = "用户统计", order = 1)
|
|
|
- suspend fun user (): CmdReceipt = getGeneral(context.user, "用户", "${context.user.name}(${context.user.id})", COMMANDS)
|
|
|
+ fun user (): CmdReceipt = getGeneral(context.user, "用户", "${context.user.name}(${context.user.id})", COMMANDS)
|
|
|
|
|
|
companion object {
|
|
|
|
|
|
val justCheck = arrayOf(
|
|
|
- GroupOriginalPermissionChecker::class
|
|
|
+ GroupPermissionChecker::class
|
|
|
)
|
|
|
}
|
|
|
}
|