Skip to content

创建命令

目前ROB有2中创建命令的方式:

  1. 继承BaseCommand来重写必要的属性/需要的方法
  2. 通过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注册的命令不支持会话

以Apache-2.0开源协议开源