Mirai qq机器人 c++版sdk(MiraiCP)

编程知识 更新时间:2023-05-03 03:44:15

Mirai机器人c++版 MiraiCP

  • 前言
  • 类似教程
  • MiraiCP github地址
  • c++开发mirai
    • 原理
      • 大概流程
      • 实现
    • 使用流程:
      • 1. 使用插件形式
      • 0 配置环境
  • 使用声明
  • 关于MiraiCP
    • 特性
  • 使用流程:
    • 1 配置环境
    • 2 注意事项
    • 3 使用方法:
    • 3 使用方法:
      • 3.1 如何使用MiraiCP SDK?
        • 3.1.1 在demo里写
        • 3.1.2 在代码中加入MiraiCP sdk依赖
      • 3.2 启动SDK
        • 3.2.1 使用loader直接使用
        • 3.2.2 使用plugin作为mcl的插件使用
  • 更新方式
  • TODO
  • 许可
  • 依赖

前言

因为酷q等机器人的失效,笔者接触到了mirai机器人,但是mirai官方提供的教程等资料不多而且kotlin对于我来说还是有点不方便很方便(doge),因此有了用c++写mirai的想法

类似教程

Mirai框架qq机器人教程(kotlin/java)

MiraiCP github地址

github仓库地址

c++开发mirai

原理

大概流程

用kotlin调用jni库从而调用c++的dll库

用jna应该也可以,不过我之前也尝试过,因为jna更方便也更简单,但是由于一些莫名其妙的报错就没用了

然后这套系统本质上可以调用任何语言写的dll(应该吧

实现

参考

使用流程:

1. 使用插件形式

需要配合mcl(mirai-console)使用

0 配置环境

mirai需要java环境>=11

Tips~
如有意向一起开发本项目,请联系我邮箱(1930893235@qq) ( ̄▽ ̄)"

使用声明

  1. MiraiCP是一个Mirai 的C++语言的社区SDK,基于Mirai-console和Mirai-core插件模板开发

  2. 本项目仅供学习参考,禁止用于任何商业用途(根据Mirai的AGPLv3许可协议开源)。

  3. 本项目不含有任何旨在破坏用户计算机数据和获取用户隐私的恶意代码,不含有任何跟踪、监视用户计算机功能代码,不会收集任何用户个人信息,不会泄露用户隐私。

  4. 本项目不提供任何具体功能实现,仅仅只是对项目mirai-console和mirai-core(详见mirai仓库)的二次封装。

  5. 任何单位或个人认为本项目可能涉嫌侵权,应及时提出反馈,本项目将会第一时间对违规内容给予删除等相关处理。

关于MiraiCP

从v2.6.3-RC开始,使用utf8作为编码

vs需要加/utf8编译参数,见微软文档

cmake方式已经加了以utf8编译不用改

支持的事件

这些内容可以在Config.kt看到

事件名称函数名称
机器人上线BotOnlineEvent
群聊消息GroupMessageEvent
私聊消息PrivateMessageEvent
好友申请NewFriendRequestEvent
群聊邀请GroupInviteEvent
新群成员加入MemberJoinEvent
群成员离开MemberLeaveEvent
消息撤回RecallEvent
群临时会话GroupTempMessageEvent
定时事件执行SchedulingEvent

在线API文档(包含示例)

代码示例 example.md

本项目设计流程结构 intro.md

Mirai支持的qq表情(对应miraicode的face)对应序号 faces.md

特性

  • C++ 20
  • 使用cmake
  • 使用jni与kt交互
  • c++ utf8编码
  • 与mirai-core同步发布(无需mah)
  • 支持2种使用方法
  • [从2.7.0开始]代码集中到一个hpp文件和其他固定依赖文件,每次更新只需要更新那个文件
  • 不封装和隐藏底层实现代码,您可以自定义实现代码或通过实现代码提issue/pr

使用流程:

1 配置环境

mirai需要java环境 >=11

2 注意事项

MiraiCP版本规则: 从2.2.0开始 (2021/1/31),版本前两位为Mirai的版本,后一位为SDK更新迭代版本

  1. 目前只确定win下可用,其他操作系统未测试,理论上liunx应该可用,生成so文件替换dll文件即可

  2. 如果vs报错找不到jni.h,把cpp/include文件夹加入到vs的库里面去(项目->属性->C+±>常规),include文件夹里包含了jni.h以及他的依赖文件

3 使用方法:

3 使用方法:

3.1 如何使用MiraiCP SDK?

3.1.1 在demo里写

从最新release 中下载MiraiCP_CPP.zip文件夹并解压
在demo.cpp中编写代码

3.1.2 在代码中加入MiraiCP sdk依赖

从最新release 中下载MiraiCP_CPP.zip文件夹并解压, 仅保留include文件夹
在你的cmakelist中构建一个动态链接库,target name必须是MiraiCP,然后在下面demo.cpp就主程序在的文件,然后加你依赖的文件,然后引入include作为子文件夹:

add_library(MiraiCP SHARED demo.cpp)
# 增加MiraiCP依赖
add_subdirectory(include)

然后在你需要使用miraiCP sdk的文件#include "MiraiCP.hpp"using namespace MiraiCP; 即可

3.2 启动SDK

3.2.1 使用loader直接使用

适用于只在机器人上使用MiraiCP SDK插件

  1. 从最新release 中下载MiraiCP-loader-*.jar(*号为版本)

  2. 在同目录下创建config.json作为配置文件

  3. 编写json:

{
  "accounts": [{
    "id": qqid,
    "passwords": "passwords密码",
    "protocol":  "pad",
    "heatBeat": "STAT_HB"
  }],
  "cppPath": "dll路径"
}

其中

  • accounts可以有多个机器人账户,用逗号分隔
  • id为qq号
  • passwords为qq密码
  • protocol为可选配置项,配置内容为登录协议,可选值为:pad/phone/watch (默认为phone)
  • heatBeat也为可选配置项,配置内容为心跳策略,可选值为: STAT_HB/REGISTER/NONE (默认为state_hb)
  • cppPath为miraicp sdk生成的dll的路径,一般在sdk的cmake-build-debug文件夹下
  1. 使用java -jar MiraiCP-loader-*.jar 启动loader(*号为版本)

3.2.2 使用plugin作为mcl的插件使用

本种方法适用于还需要加载别的mirai-console插件

  1. 首先下载启动器(mcl), 下载地址 -> 官方

  2. 从最新release 中下载MiraiCP-plugin-*.mirai.jar(*号为版本)

  3. 把该mirai.jar放到mcl的plugin路径下(如果没有plugin路径需要启动一次mcl)

  4. 在mcl的路径下的data\miraiCP\路径中创建miraicp.txt里填写sdk生成的dll的路径,或者把sdk生成的dll复制进去(如果没有data\miraiCP路径需要启动一次mcl)

  5. 启动mcl

如果有其他问题,欢迎提交issue和提交PR贡献

更新方式

  1. 从最新release 中下载MiraiCP.hpp和loader或plugin jar包

  2. 替换include/下的miraiCP.hpp

  3. 替换你的loader或plugin jar包

TODO

查看本项目的milestones里程碑

许可

Copyright (C) 2020-2021 Eritque arcus and contributors.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or any later version(in your opinion).

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu/licenses/>.

依赖

JSON for modern C++ - MIT licence

UTF8-CPP: UTF-8 with C++ in a Portable Way - Boost Software License 1.0

附:kotlin版开发模板

相关群1044565129

-END-

更多推荐

Mirai qq机器人 c++版sdk(MiraiCP)

本文发布于:2023-04-30 10:53:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/18d737ca054e534e98221816a1634875.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:机器人   qq   Mirai   sdk   MiraiCP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 114134文章数
  • 28916阅读数
  • 0评论数