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

@ -12,7 +12,7 @@ Mirai机器人相关文档请参阅 [用户手册](https://github.com/mamoe/mira
## 首先使用指令添加一个服务器 ## 首先使用指令添加一个服务器
```shell ```shell
# 用法 # 用法
/jgc addServer <address> [name] [description] # 添加服务器 /jgc addServer <address> [name] [description] # 添加服务器,首个服务器为默认服务器,可切换默认服务器
# 示例 # 示例
/jgc addServer http://127.0.0.1:443 测试服 本地测试服务器 /jgc addServer http://127.0.0.1:443 测试服 本地测试服务器
# 成功返回 "服务器已添加ID为[1]使用servers子命令查看服务器列表" # 成功返回 "服务器已添加ID为[1]使用servers子命令查看服务器列表"
@ -33,18 +33,22 @@ Mirai机器人相关文档请参阅 [用户手册](https://github.com/mamoe/mira
## 将服务器绑定到机器人所在群聊 ## 将服务器绑定到机器人所在群聊
```shell ```shell
# 用法 # 用法
/jgc linkGroup/bindGroup/addGroup <serverId> [group] # 绑定服务器到群,在群内执行可忽略群参数 /jgc linkGroup/bindGroup/addGroup [serverId] [group] # 绑定服务器到群若未指定服务器则使用默认服务器ID,在群内执行可忽略群参数
# 示例(控制台) # 示例(控制台)
/jgc linkGroup 1 群号 /jgc linkGroup 1 123456 # 指定将服务器[1]绑定到群[123456]
# 示例(群里) # 示例(群里)
/jgc linkGroup 1 /jgc linkGroup 1 # 指定绑定到服务器[1]
/jgc linkGroup # 忽略服务器参数,将使用默认服务器
/jgc enable # 若启用的群未绑定,将自动绑定到默认服务器
# 成功返回 "OK" # 成功返回 "OK"
``` ```
在聊天环境执行 Mirai-Console 命令需要另一个插件 [Chat Command](https://github.com/project-mirai/chat-command) 在聊天环境执行 Mirai-Console 命令需要另一个插件 [Chat Command](https://github.com/project-mirai/chat-command)
执行GC命令不需要这个见后文 执行GC命令不需要这个见后文
## 绑定账号 ## 绑定账号
玩家想要在群里执行命令需要绑定自己的游戏UID需要在群里发送 `绑定 <uid>` 来向目标账号发送验证码,然后将验证码发到群里完成验证,如图所示 玩家想要在群里执行命令需要绑定自己的游戏UID
需要在群里发送 `绑定 <uid>` 来向目标账号发送验证码,
然后将验证码发到群里完成验证,如图所示
![群内验证示例图](screenshot/verification.png) ![群内验证示例图](screenshot/verification.png)
@ -79,6 +83,10 @@ _可以通过 `/jgc setBindCommand <prefix>` 来修改执行命令前缀 _
![At群员示例图](screenshot/runAt.png) ![At群员示例图](screenshot/runAt.png)
## 私聊执行
v0.3.0 开始,玩家可以**私聊机器人**进行账号的绑定和命令的执行,
但是目前只能在**默认服务器**中执行,无法指定执行的服务器。
## 拉黑用户 ## 拉黑用户
如果你想禁止某个用户使用本插件执行命令,可以使用 `/ban <qq>` 来拉黑,使用 `/unban <qq>` 可以解除黑名单 如果你想禁止某个用户使用本插件执行命令,可以使用 `/ban <qq>` 来拉黑,使用 `/unban <qq>` 可以解除黑名单
_只是一个凭想象增加的功能也许能用上呢_ _只是一个凭想象增加的功能也许能用上呢_
@ -127,6 +135,9 @@ commandAlias:
publicCommands: publicCommands:
- 'list' - 'list'
- 'list uid' - 'list uid'
# 默认服务器ID未指定服务器ID的命令将使用默认服务器执行。
# 私聊默认使用该服务器。
defaultServerId: 1
``` ```
# 指令列表 # 指令列表
@ -158,8 +169,8 @@ publicCommands:
## 群相关 ## 群相关
```shell ```shell
/jgc linkGroup/bindGroup/addGroup <serverId> [group] # 绑定服务器到群,在群内执行可忽略群参数 /jgc linkGroup/bindGroup/addGroup [serverId] [group] # 绑定服务器到群若未指定服务器则使用默认服务器ID,在群内执行可忽略群参数
/jgc enable [group] # 启用指定群执行,在群内执行可忽略群参数 /jgc enable [group] # 启用指定群执行,若未绑定,则自动绑定到默认服务器,在群内执行可忽略群参数
/jgc disable [group] # 禁用指定群执行,在群内执行可忽略群参数 /jgc disable [group] # 禁用指定群执行,在群内执行可忽略群参数
``` ```

View File

@ -7,7 +7,7 @@ plugins {
} }
group = "top.jie65535.mirai" group = "top.jie65535.mirai"
version = "0.2.1" version = "0.3.0"
repositories { repositories {
maven("https://maven.aliyun.com/repository/public") maven("https://maven.aliyun.com/repository/public")

View File

@ -40,7 +40,7 @@ object JGrasscutterCommand : KotlinPlugin(
JvmPluginDescription( JvmPluginDescription(
id = "top.jie65535.mirai.grasscutter-command", id = "top.jie65535.mirai.grasscutter-command",
name = "J Grasscutter Command", name = "J Grasscutter Command",
version = "0.2.1", version = "0.3.0",
) { ) {
author("jie65535") author("jie65535")
info("""聊天执行GC命令""") info("""聊天执行GC命令""")
@ -53,18 +53,24 @@ object JGrasscutterCommand : KotlinPlugin(
val eventChannel = GlobalEventChannel.parentScope(this) val eventChannel = GlobalEventChannel.parentScope(this)
// 监听群消息 // 监听群消息
eventChannel.subscribeAlways<GroupMessageEvent> { eventChannel.subscribeAlways<MessageEvent> {
// 忽略被拉黑的用户发送的消息 // 忽略被拉黑的用户发送的消息
if (PluginConfig.blacklist.contains(sender.id)) if (PluginConfig.blacklist.contains(sender.id))
return@subscribeAlways return@subscribeAlways
// 忽略未启用的群消息 val server = if (this is GroupMessageEvent) {
val groupConfig = PluginData.groups.find { it.id == group.id } // 若为群消息,忽略未启用的群
if (groupConfig == null || !groupConfig.isEnabled) val groupConfig = PluginData.groups.find { it.id == group.id }
return@subscribeAlways 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) if (server == null || !server.isEnabled)
return@subscribeAlways 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 服务器相关命令 // endregion 服务器相关命令
// region 群相关命令 // region 群相关命令
@SubCommand("linkGroup", "bindGroup", "addGroup") @SubCommand("linkGroup", "bindGroup", "addGroup")
@Description("绑定服务器到群") @Description("绑定服务器到群若未指定服务器则使用默认服务器ID")
suspend fun CommandSender.linkGroup(serverId: Int, group: Group? = getGroupOrNull()) { suspend fun CommandSender.linkGroup(serverId: Int = PluginConfig.defaultServerId, group: Group? = getGroupOrNull()) {
if (group == null) { if (group == null) {
sendMessage("必须指定群") sendMessage("必须指定群")
return return
@ -256,7 +269,7 @@ object PluginCommands : CompositeCommand(
val server = PluginData.servers.find { it.id == serverId } val server = PluginData.servers.find { it.id == serverId }
if (server == null) { if (server == null) {
sendMessage("指定服务器ID不存在,请先添加服务器(使用addServer子命令)") sendMessage("指定服务器不存在,请先添加服务器(使用addServer子命令)")
return return
} }
@ -272,14 +285,23 @@ object PluginCommands : CompositeCommand(
} }
@SubCommand @SubCommand
@Description("启用指定群执行") @Description("启用指定群执行,若未绑定,则自动绑定到默认服务器")
suspend fun CommandSender.enable(group: Group? = getGroupOrNull()) { suspend fun CommandSender.enable(group: Group? = getGroupOrNull()) {
if (group == null) { if (group == null) {
sendMessage("必须指定群") sendMessage("必须指定群")
} else { } else {
val g = PluginData.groups.find { it.id == group.id } val g = PluginData.groups.find { it.id == group.id }
if (g == null) { 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 { } else {
logger.info("启用插件在群 ${group.name}(${group.id})") logger.info("启用插件在群 ${group.name}(${group.id})")
g.isEnabled = true g.isEnabled = true

View File

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