mirror of
https://github.com/jie65535/JGrasscutterCommand.git
synced 2025-06-01 17:29:13 +08:00
Update version to v0.3.0
Add user message support Add default server setting
This commit is contained in:
parent
78a3c09b43
commit
25498086a2
25
README.md
25
README.md
@ -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>` 来向目标账号发送验证码,
|
||||||
|
然后将验证码发到群里完成验证,如图所示
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@ -79,6 +83,10 @@ _可以通过 `/jgc setBindCommand <prefix>` 来修改执行命令前缀 _(例
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
## 私聊执行
|
||||||
|
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] # 禁用指定群执行,在群内执行可忽略群参数
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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")
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user