Update version to v0.3.0

Add user message support
Add default server setting
This commit is contained in:
2022-09-16 23:38:08 +08:00
parent 78a3c09b43
commit 25498086a2
5 changed files with 63 additions and 20 deletions

View File

@@ -40,7 +40,7 @@ object JGrasscutterCommand : KotlinPlugin(
JvmPluginDescription(
id = "top.jie65535.mirai.grasscutter-command",
name = "J Grasscutter Command",
version = "0.2.1",
version = "0.3.0",
) {
author("jie65535")
info("""聊天执行GC命令""")
@@ -53,18 +53,24 @@ object JGrasscutterCommand : KotlinPlugin(
val eventChannel = GlobalEventChannel.parentScope(this)
// 监听群消息
eventChannel.subscribeAlways<GroupMessageEvent> {
eventChannel.subscribeAlways<MessageEvent> {
// 忽略被拉黑的用户发送的消息
if (PluginConfig.blacklist.contains(sender.id))
return@subscribeAlways
// 忽略未启用的群消息
val groupConfig = PluginData.groups.find { it.id == group.id }
if (groupConfig == null || !groupConfig.isEnabled)
return@subscribeAlways
val server = if (this is GroupMessageEvent) {
// 若为群消息,忽略未启用的群
val groupConfig = PluginData.groups.find { it.id == group.id }
if (groupConfig == null || !groupConfig.isEnabled)
return@subscribeAlways
// 获取群绑定的服务器
PluginData.servers.find { it.id == groupConfig.serverId }
} else {
// 否则为私聊消息,使用默认服务器
PluginData.servers.find { it.id == PluginConfig.defaultServerId }
}
// 忽略未启用的服务器
val server = PluginData.servers.find { it.id == groupConfig.serverId }
if (server == null || !server.isEnabled)
return@subscribeAlways

View File

@@ -242,13 +242,26 @@ object PluginCommands : CompositeCommand(
}
}
@SubCommand
@Description("设置默认服务器(初始值为首个创建的服务器)")
suspend fun CommandSender.setDefaultServer(id: Int) {
val server = PluginData.servers.find { it.id == id }
if (server == null) {
sendMessage("未找到指定服务器")
} else {
PluginConfig.defaultServerId = id
logger.info("已将 [$id] ${server.name} 设置为默认服务器")
sendMessage("OK")
}
}
// endregion 服务器相关命令
// region 群相关命令
@SubCommand("linkGroup", "bindGroup", "addGroup")
@Description("绑定服务器到群")
suspend fun CommandSender.linkGroup(serverId: Int, group: Group? = getGroupOrNull()) {
@Description("绑定服务器到群若未指定服务器则使用默认服务器ID")
suspend fun CommandSender.linkGroup(serverId: Int = PluginConfig.defaultServerId, group: Group? = getGroupOrNull()) {
if (group == null) {
sendMessage("必须指定群")
return
@@ -256,7 +269,7 @@ object PluginCommands : CompositeCommand(
val server = PluginData.servers.find { it.id == serverId }
if (server == null) {
sendMessage("指定服务器ID不存在,请先添加服务器(使用addServer子命令)")
sendMessage("指定服务器不存在,请先添加服务器(使用addServer子命令)")
return
}
@@ -272,14 +285,23 @@ object PluginCommands : CompositeCommand(
}
@SubCommand
@Description("启用指定群执行")
@Description("启用指定群执行,若未绑定,则自动绑定到默认服务器")
suspend fun CommandSender.enable(group: Group? = getGroupOrNull()) {
if (group == null) {
sendMessage("必须指定群")
} else {
val g = PluginData.groups.find { it.id == group.id }
if (g == null) {
sendMessage("请先绑定群到服务器(使用linkGroup子命令)")
// 当启用的群是未初始化的群时,使用默认服务器进行初始化
val server = PluginData.servers.find { it.id == PluginConfig.defaultServerId }
if (server != null) {
// 绑定到默认服务器
logger.info("将默认服务器[${server.id}] ${server.name} ${server.address} 绑定到群 ${group.name}(${group.id})")
PluginData.groups.add(GroupConfig(group.id, server.id))
sendMessage("OK已绑定到默认服务器")
} else {
sendMessage("请先绑定群到服务器(使用linkGroup子命令)")
}
} else {
logger.info("启用插件在群 ${group.name}(${group.id})")
g.isEnabled = true

View File

@@ -54,4 +54,8 @@ object PluginConfig : AutoSavePluginConfig("config") {
val publicCommands: MutableSet<String> by value(mutableSetOf(
"list", "list uid"
))
@ValueDescription("默认服务器ID未指定服务器ID的命令将使用默认服务器执行。\n" +
"私聊默认使用该服务器。")
var defaultServerId: Int by value(1)
}