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.com) ( ̄▽ ̄)"

使用声明

  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.org/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)相关推荐

  1. Mirai qq机器人ubuntu配置踩坑记录

    Mirai qq机器人ubuntu配置踩坑记录 intellij配置 打包jar ubuntu无界面运行 Mirai GitHub 链接 mirai-github intellij配置 我的是Ulti ...

  2. 开发 mirai QQ机器人起步教程

    前言 虽然该文最终是达到以python开发mirai机器人的目的,但起步教程,尤其是环境配置上仍然有大量的相同操作,对其他编程语言仍有借鉴之处 假设你已经安装好了 Java.Python等运行必须的环 ...

  3. [Centos7]Mirai QQ机器人监听播报TeamSpeak3用户状态

    目录 1 安装mirai 1.1 创建用户 1.2 下载mcl-installer 1.3 安装 2 启动并使用 2.1 首次启动 2.2 安装插件 2.2.1 chat-command 2.2.2 ...

  4. Ubuntu 20.04.4 LTS部署Mirai QQ机器人

    mcl安装器项目地址 https://github.com/iTXTech/mcl-installer/releases 安装 选择Linux-amd64的安装器 我的系统是华为云的Ubuntu 20 ...

  5. Mirai QQ机器人(开源)

    本项目基于mirai协议,依赖 mirai-core-jvm 已集成茉莉机器人词库 已完成功能:运势.签到.一言 待完成:万年历.老黄历 Github地址: https://github.com/SL ...

  6. PHP开发基于Mirai的QQ机器人

    博客和更新地址:PHP开发基于Mirai的QQ机器人 前言 在完成配置开源安卓QQ协议库Mirai后,便可使用已有开源项目来部署自己的QQ机器人,但自行开发显然更符合需求.借助mirai-api-ht ...

  7. 晨风机器人安卓版_晨风qq机器人

    手机qq自动聊天机器人,晨风qq机器人手机版发布了,目前仅有导入自动回复.自动启用网络词库.支持群聊.私聊.群临时会话等简单功能,实现了与qq好友聊天以及qq群消息.qq群私聊的自动提取,自动回复,除 ...

  8. 搭建一个点歌QQ机器人,另外还能看美女

    目录 前言 具体实现 1.爆照 2.生日书 3.获取歌词和分享音乐 完整项目下载地址(配置了python环境) 完整项目下载地址(电脑没有python环境) 前言 完整项目包括框架.代码和详细使用说明 ...

  9. 今日运势 酷q_mirai QQ机器人运势,一言,一键签到插件

    mirai QQ机器人运势,一言,一键签到插件 由于酷Q暂停运行了,前些日子发现mirai还可以使用,于是使用它提供的类库开发了运势,一言,签到的插件集合.没有采用插件加载的方式,在项目里已经写好了实 ...

最新文章

  1. chrome items hidden by filters
  2. fcntl函数参数F_GETPIPE_SZ、F_SETPIPE_SZ报错引出的关于linux-specific头文件的使用方法...
  3. Cookie会话技术
  4. 2d Laser 和 Odomter 内外参数标定工具原理及使用方法
  5. 一元流量参数为null_精益SQL —— “NULL”真烦人
  6. (转)DPDK内存管理 04 ---- rte_malloc内存管理
  7. vue中使用阿里矢量库彩色图标办法
  8. winamp 珍藏_Winamp发生了什么,您现在可以使用吗?
  9. js微信抢红包脚本代码_autojs抖音抢红包脚本!源码分享
  10. Ansible 学习总结(6)—— Ansible 19个常用模块使用示例
  11. 2021科技圈十大事件盘点
  12. 使用tkinter打造一个小说下载器,想看什么小说,就下什么
  13. WIN10外接显示器有妙招
  14. javaScript用函数的方式计算体重是否是标准体重(代码)
  15. Use Goldengate Initial Data Load
  16. 2021年全球与中国飞机导航镜行业市场规模现状及企业市场份额分析
  17. python自动办公 pdf_别再问如何用 Python 提取 PDF 内容了!
  18. oracle执行计划time单位,Oracle中查看执行计划
  19. JSONObject.toBean() 把jsonobject转换成实体类
  20. Android如何关闭键盘声音

热门文章

  1. 【机器学习】集成学习Stacking
  2. mysql出现Error writing file \'xxx\'( Errcode:28)的问题
  3. 鸿蒙os页面格式简介
  4. 如何恢复录音删除的录音文件_小达人点读笔教程5:如何使用点读笔录音
  5. MATLAB中的几何变换
  6. 【STM32F429】RT-Thread结合TouchGFX实战教程
  7. GIS系统在房产信息平台中的作用
  8. 了解云服务器与普通IDC服务器的分析
  9. 【电机三相线的线阻偏大的影响】
  10. C语言的基本结构(一)