# Mirai组件快速开始 组件github: https://github.com/ForteScarlet/simple-robot-component-mirai ## 一、**安装** ### 1. **构建项目** *mirai官方推荐使用Gradle的方式构建项目。但是我个人更熟悉Maven,因此此处大多数使用Maven作为示例。* 首先创建一个项目并导入依赖坐标: > 以maven为例 ```xml <dependency> <groupId>love.forte.simple-robot-component</groupId> <artifactId>component-mirai</artifactId> <!-- 参考版本: 1.9.1-1.16 --> <version>${version}</version> </dependency> ``` 如果出现缺失`kotlin`相关类的异常,可以考虑手动导入kotlin的依赖: ```xml <!-- kt --> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib-jdk8</artifactId> <version>${kotlin.version}</version> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib</artifactId> <version>${kotlin.version}</version> </dependency> <!-- ktx coroutines core --> <dependency> <groupId>org.jetbrains.kotlinx</groupId> <artifactId>kotlinx-coroutines-core</artifactId> <version>${kotlinx-coroutines-core.version}</version> </dependency> ``` 其中,`${kotlin.version}`为`1.4.10`,`${kotlinx-coroutines-core.version}`为`1.3.9`。 <br> 如果mirai的包无法下载,可以尝试增加额外仓库: ```xml <repositories> <repository> <id>jcenter</id> <url>https://jcenter.bintray.com/</url> </repository> <repository> <id>bintray</id> <url>https://dl.bintray.com/kotlin/kotlin-eap</url> </repository> </repositories> ``` 然后编写一个启动器类,此类需要**至少一层包结构**。 启动类在`1.13`版本的核心中有多种编写方式,以下我将举例两种。 #### Ⅰ. **注解+配置文件+组件启动器** ```java /** * 启动器类,通过main方法启动 * @author ForteScarlet */ @SimpleRobotApplication(resources = "conf.properties") public class RunApp { public static void main(String[] args) throws IOException { // 获取Mirai组件的启动器类 MiraiApplication application = new MiraiApplication(); // 启动 application.run(RunApp.class, args); } } ``` 此方法使用`MiraiApplication`为启动器进行启动。 #### Ⅱ. **注解+配置文件+通用启动器** ```java /** * 启动器类,通过main方法启动 * @author ForteScarlet */ @SimpleRobotApplication(resources = "conf.properties") public class RunApp { public static void main(String[] args) throws IOException { // 自动检测当前环境中的启动器并启动 BaseApplication.runAuto(RunApp.class, args); } } ``` 此方法是核心`1.13`后增加的 **快速启动** 特性,通过组件的配置支持,核心的`BaseApplication.runAuto(Class, String...)`可以自动检测当前存在的启动器并自动执行。其不同于上述的启动方式,这种启动类可以在任何支持的组件环境下使用。 ### 2. **编写配置文件** 上述中使用的配置文件是`conf.properties`,因此在资源目录下创建一个`conf.properties`文件。 > 如果不指定配置文件名称,默认为`simple-robot-conf.properties` ```properties # 不同于其他组件,此处的QQ不可省略,格式为:QQ号1:密码1,QQ号2:密码2 # 多组账号密码通过逗号(,)分隔,账号密码通过冒号(:)分隔 # 如果密码中存在: `\`或者`,`,则使用`\\`和`\,`进行转义。 # 例1: 111222333:abcdefg # 例2: 111222333:abcdefg,444555666:qazwsxedc simbot.core.bots=QQ号1:密码1,QQ号2:密码2 ``` > simbot.core.bots是唯一的特殊配置内容。目前mirai组件没有额外的配置信息,因此其他可配置项可查看文档的**配置**相关章节。 ### 3. **编写监听器** 在启动器的**子包**下编写你的代码逻辑,例如: ```java @Beans public class MyListener { /** * 监听私信消息并复读 */ @Listen(MsgGetTypes.privateMsg) public void hello(PrivateMsg msg, MsgSender sender){ System.out.println("收到消息:" + msg); // 复读, 以下方法均可 sender.SENDER.sendPrivateMsg(msg, msg.getMsg()); // sender.SENDER.sendPrivateMsg(msg.getQQ(), msg.getMsg()); // sender.SENDER.sendPrivateMsg(msg.getQQCode(), msg.getMsg()); // sender.reply(msg, msg.getMsg(), false); } } ``` ### 4. **启动** 执行你的main方法,然后给你的机器人发送消息试试吧。 注意,mirai在初次启动的时候可能会需要一些特殊操作,请注意观察日志。 ## **5. 更多** 成功了之后,你便可以参考**文档**、**视频** 或者 **进群咨询** 以了解更多特性或功能,并继续开发属于你的机器人了。 ## **6. 失败了?** 如果跟着上述流程完整无误的操作却无法成功,也不要气馁,尝试根据[常见问题汇总](./%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E6%B1%87%E6%80%BB.md)进行排查或者加入QQ群`782930037`进行咨询。