创建命令
目前ROB有2中创建命令的方式:
- 继承
BaseCommand
来重写必要的属性/需要的方法 - 通过dsl的写法
继承
kotlin
class EchoCommand : BaseCommand() {
override val commandNames = listOf("/echo", "/eee")
override suspend fun executeGroup(message: GroupMessage, args: List<String>) {
println(message)
}
}
DSL
kotlin
suspend fun main() {
OneBotFactory.commandManager {
groupCommand(listOf("/te")) {
println(it)
}
privateCommand(listOf("/te")) {
println(it)
}
}
}
注册命令
继承
kotlin
suspend fun main() {
OneBotFactory.commandManager.register(EchoCommand())
}
DSL
写完之后就会自动注册了
创建会话
继承
kotlin
class TestSession : BaseCommand() {
override val commandNames = listOf("/session")
override suspend fun executeGroup(message: GroupMessage, args: List<String>) {
if (message.text.contains("1")) {
message.reply("继续输入")
// 开启对话
message.startSession()
}
}
override suspend fun onGroupSession(msg: GroupMessage) {
if (msg.text.contains("2")) {
// 结束对话
msg.skipSession()
msg.reply("设置成功")
} else {
// 拒绝这次的对话输入或者表示继续输入
msg.reject(messageChain {
text("请输入2!")
})
}
}
}
注册这个命令之后在群内发送
/session 1
则会开启对话, 对话期间不会执行任何其他命令包括这个对话命令本身。 再次发送2
在群内则会结束对话
DSL
DSL注册的命令不支持会话