fix: 修复Mod模块

This commit is contained in:
叁玖领域 2025-09-13 15:43:26 +08:00
parent 9f83026e56
commit 88f574eea1
6 changed files with 139 additions and 20 deletions

View File

@ -88,9 +88,10 @@ fun main() = GlobalManager.runBlockingMain {
maxBanMinutes = 15,
)
val modGroupHandlerModule = ModGroupHandlerModule(
moduleName = "ModGrouup",
moduleName = "ModGroup",
targetGroupId = 339340846,
answers = listOf("戏鸢", "一只戏鸢", "折戏鸢", "LostInLinearPast", "lostinlinearpast"),
pollIntervalMillis = 15_000L,
)
// 注册模块到全局模块管理器

View File

@ -136,10 +136,12 @@ class ModGroupHandlerModule(
provider?.getAllRequests()?.forEach { request ->
if (!request.checked && request.groupId == targetGroupId) {
LoggerUtil.logger.info("[$name] 处理请求: requestId=${request.requestId}, actor=${request.actor}")
val answerAllow = answers.contains(request.message)
if(answerAllow) {
val info = napCatClient.send<GetStrangerInfoEvent>(GetStrangerInfoRequest(ID.long(request.requestId)))
LoggerUtil.logger.info("[$name] 处理请求: requestId=${request.requestId},requestQQ =${request.invitorUin}")
val pattern = """答案:(.*)""".toRegex()
val answer = pattern.find(request.message)?.groupValues?.get(1) ?: ""
val answerAllow = answers.contains(answer)
if (answerAllow) {
val info = napCatClient.send<GetStrangerInfoEvent>(GetStrangerInfoRequest(ID.long(request.invitorUin)))
val levelAllow = info.data.qqLevel >= 16
val setRequest = SetGroupAddRequestRequest(
levelAllow,
@ -147,32 +149,57 @@ class ModGroupHandlerModule(
if(!levelAllow) "QQ等级低于16级" else ""
)
napCatClient.send<NapCatEvent>(setRequest)
if (levelAllow) napCatClient.send<NapCatEvent>(SendGroupMsgRequest(listOf(MessageElement.text(formatRejectRecordMessage(request.requestId))), ID.long(targetGroupId)))
LoggerUtil.logger.info("[$name] 已${if (levelAllow) "同意" else "拒绝"}请求${if(!levelAllow) ",等级不够,${info.data.qqLevel}" else "" }: ${request.requestId}")
if (levelAllow) {
napCatClient.send<NapCatEvent>(
SendGroupMsgRequest(
listOf(
MessageElement.at(ID.long(request.invitorUin), request.requesterNick),
MessageElement.text("\n"),
MessageElement.text(
formatRejectRecordMessage(request.invitorUin)
)
), ID.long(targetGroupId)
)
)
}
LoggerUtil.logger.info("[$name] 已${if (levelAllow) "同意" else "拒绝"} 请求${if(!levelAllow) ",等级不够,${info.data.qqLevel}" else "" }: ${request.requestId}")
if(levelAllow) stateCache?.records?.remove(request.invitorUin)
} else {
napCatClient.sendUnit(SetGroupAddRequestRequest(false, request.requestId.toString(), "答案错误,拒绝次数:${getRejectRecord(request.requestId)?.rejectCount}"))
addReject(request.actor, "答案错误:${request.message}")
LoggerUtil.logger.info("[$name] 答案错误:${request.message},已拒绝请求: ${request.requestId}")
val rejectCount = (getRejectRecord(request.invitorUin)?.rejectCount ?: 0) + 1
napCatClient.sendUnit(SetGroupAddRequestRequest(false, request.requestId.toString(), "答案错误,请输入标准答案,拒绝次数:${rejectCount}"))
addReject(request.invitorUin, answer)
LoggerUtil.logger.info("[$name] 答案错误:${answer},已拒绝请求: ${request.requestId}")
}
}
}
}
fun formatRejectRecordMessage(userId: Long): String {
private fun formatRejectRecordMessage(userId: Long): String {
val record = getRejectRecord(userId)
return if (record != null) {
"""
用户QQ号${record.userId}
尝试次数${record.rejectCount}
最终评分${rate(record.rejectCount)}
尝试答案${record.reason.joinToString("")}
""".trimIndent()
📊 用户审核记录
🔹 用户QQ号${record.userId}
🔹 尝试次数${record.rejectCount}
🔹 最终评分${rate(record.rejectCount)}
📝 尝试答案
${ "\n" + record.reason.joinToString("\n") { "$it" }}
提示请仔细阅读文档后再在群里提问否则你会失去你的大脑🧠
""".trimIndent()
} else {
"""
用户QQ号${userId}
尝试次数0
最终评分SSS
""".trimIndent()
📊 用户审核记录
🔹 用户QQ号${userId}
🔹 尝试次数0
🔹 最终评分SSS
💡 该用户尚未有审核记录
提示请仔细阅读文档后再在群里提问否则你会失去你的大脑🧠
""".trimIndent()
}
}
private fun rate(count: Int): String = when (count) {

View File

@ -20,6 +20,14 @@ class ModuleManager {
modules[module.name] = module
LoggerUtil.logger.info("模块注册: ${module.name}")
}
/**
* 注册多模块到管理器
*/
fun registerModules(moduleList: List<BaseModule>) {
for (module in moduleList) {
registerModule(module)
}
}
/**
* 加载指定模块

View File

@ -0,0 +1,7 @@
package top.r394realms.ltdmanagertest.help
import top.r3944realms.ltdmanager.GlobalManager
fun main() = GlobalManager.runBlockingMain {
}

View File

@ -0,0 +1,25 @@
package top.r394realms.ltdmanagertest.mod
import top.r3944realms.ltdmanager.GlobalManager
import top.r3944realms.ltdmanager.module.ModGroupHandlerModule
fun main() = GlobalManager.runBlockingMain {
val groupId:Long = 538751386
val selfQQId = 3327379836
val selfNickName = "闲趣老土豆"
// 创建模块实例
val modGroupHandlerModule = ModGroupHandlerModule(
moduleName = "ModGroup",
targetGroupId = 339340846,
answers = listOf("戏鸢", "一只戏鸢", "折戏鸢", "LostInLinearPast", "lostinlinearpast"),
)
// 注册模块到全局模块管理器
GlobalManager.moduleManager.registerModule(modGroupHandlerModule)
// 加载模块
GlobalManager.moduleManager.loadModule(modGroupHandlerModule.name)
}

View File

@ -0,0 +1,51 @@
package top.r394realms.ltdmanagertest.msg
import top.r3944realms.ltdmanager.GlobalManager
import top.r3944realms.ltdmanager.napcat.NapCatClient
import top.r3944realms.ltdmanager.napcat.data.ID
import top.r3944realms.ltdmanager.napcat.data.MessageElement
import top.r3944realms.ltdmanager.napcat.request.other.SendGroupMsgRequest
fun main() = GlobalManager.runBlockingMain {
val napCatClient = NapCatClient.create()
// 生成9x9乘法表字符串
val multiplicationTable = buildString {
for (i in 1..9) {
for (j in 1..i) {
append("$j×$i=${i * j}\t")
}
appendLine() // 换行
}
}
// 生成对齐检查字符
val alignmentCheck = buildString {
appendLine("📏 对齐检查(每个数字占位):")
appendLine("1234567890") // 数字标尺
appendLine("".repeat(20)) // 分隔线
for (i in 1..9) {
for (j in 1..i) {
val product = i * j
val placeholder = "X".repeat("$j×$i=$product".length)
append("$placeholder\t")
}
appendLine()
}
}
napCatClient.sendUnit(
SendGroupMsgRequest(
listOf(
MessageElement.at(ID.long(2561098830), "幸福亮亮"),
MessageElement.text("\n"),
MessageElement.text("9×9乘法表\n"),
MessageElement.text(multiplicationTable),
MessageElement.text("\n────────────────────\n"),
MessageElement.text(alignmentCheck),
MessageElement.text("\n提问前,请看文档,不看文档就提问直接肘击(")
),
ID.long(339340846)
)
)
}