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
|
||||
# 用法
|
||||
/jgc addServer <address> [name] [description] # 添加服务器
|
||||
/jgc addServer <address> [name] [description] # 添加服务器,首个服务器为默认服务器,可切换默认服务器
|
||||
# 示例
|
||||
/jgc addServer http://127.0.0.1:443 测试服 本地测试服务器
|
||||
# 成功返回 "服务器已添加,ID为[1],使用servers子命令查看服务器列表"
|
||||
@ -33,18 +33,22 @@ Mirai机器人相关文档请参阅 [用户手册](https://github.com/mamoe/mira
|
||||
## 将服务器绑定到机器人所在群聊
|
||||
```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"
|
||||
```
|
||||
在聊天环境执行 Mirai-Console 命令需要另一个插件 [Chat Command](https://github.com/project-mirai/chat-command)
|
||||
执行GC命令不需要这个,见后文
|
||||
|
||||
## 绑定账号
|
||||
玩家想要在群里执行命令,需要绑定自己的游戏UID,需要在群里发送 `绑定 <uid>` 来向目标账号发送验证码,然后将验证码发到群里完成验证,如图所示
|
||||
玩家想要在群里执行命令,需要绑定自己的游戏UID,
|
||||
需要在群里发送 `绑定 <uid>` 来向目标账号发送验证码,
|
||||
然后将验证码发到群里完成验证,如图所示
|
||||
|
||||

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

|
||||
|
||||
## 私聊执行
|
||||
v0.3.0 开始,玩家可以**私聊机器人**进行账号的绑定和命令的执行,
|
||||
但是目前只能在**默认服务器**中执行,无法指定执行的服务器。
|
||||
|
||||
## 拉黑用户
|
||||
如果你想禁止某个用户使用本插件执行命令,可以使用 `/ban <qq>` 来拉黑,使用 `/unban <qq>` 可以解除黑名单
|
||||
_(只是一个凭想象增加的功能,也许能用上呢)_
|
||||
@ -127,6 +135,9 @@ commandAlias:
|
||||
publicCommands:
|
||||
- 'list'
|
||||
- 'list uid'
|
||||
# 默认服务器ID,未指定服务器ID的命令将使用默认服务器执行。
|
||||
# 私聊默认使用该服务器。
|
||||
defaultServerId: 1
|
||||
```
|
||||
|
||||
# 指令列表
|
||||
@ -158,8 +169,8 @@ publicCommands:
|
||||
|
||||
## 群相关
|
||||
```shell
|
||||
/jgc linkGroup/bindGroup/addGroup <serverId> [group] # 绑定服务器到群,在群内执行可忽略群参数
|
||||
/jgc enable [group] # 启用指定群执行,在群内执行可忽略群参数
|
||||
/jgc linkGroup/bindGroup/addGroup [serverId] [group] # 绑定服务器到群,若未指定服务器则使用默认服务器ID,在群内执行可忽略群参数
|
||||
/jgc enable [group] # 启用指定群执行,若未绑定,则自动绑定到默认服务器,在群内执行可忽略群参数
|
||||
/jgc disable [group] # 禁用指定群执行,在群内执行可忽略群参数
|
||||
```
|
||||
|
||||
|
@ -7,7 +7,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = "top.jie65535.mirai"
|
||||
version = "0.2.1"
|
||||
version = "0.3.0"
|
||||
|
||||
repositories {
|
||||
maven("https://maven.aliyun.com/repository/public")
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
}
|
Loading…
Reference in New Issue
Block a user