精华内容
下载资源
问答
  • 基于onebot,简单,易用的QQ机器人框架。 目前已测试支持反向websocket。后续可能将添加更多方式... 注意:项目刚开始写……只有最基本的功能……并且可能会遭到拒绝修改。 直接使用 安装 npm i pure-bot 下载 ,在...
  • 基于Spring-CQ-Client,SpringBoot,反向websocket的QQ机器人框架 这是一个自定义spring-boot-starter,项目名暂时不改了 比起其他http框架,可以很方便地开多个QQ号,不需要额外配置cqhttp端口 这个README主要讲了...
  • QQ机器人框架

    2021-01-30 12:52:06
    出易语言QQ机器人框架。需要站内联系或QQ,修复自用版 QQ:749600191

    出易语言QQ机器人框架。需要站内联系或QQ,修复自用版
    QQ:749600191

    在这里插入图片描述

    展开全文
  • 一个基于MFC的QQ机器人框架

    千次阅读 2019-03-19 18:01:06
    本框架是主要使用MFC中的Windows API制作而成、利用Windows的消息机制以及一些系统级底层架构实现利用TIM客户端自动收发QQ消息的QQ机器人框架,用其制作的QQ机器人程序已在VS2017下编译通过(仅支持AN...

    GitHub项目地址:https://github.com/HarmoniaLeo/MFC-QQbot

    0x00 这是什么?

    欢迎使用本QQ机器人开发框架(如果有人会用的话)。本框架是主要使用MFC中的Windows API制作而成、利用Windows的消息机制以及一些系统级底层架构实现利用TIM客户端自动收发QQ消息的QQ机器人框架,用其制作的QQ机器人程序已在VS2017下编译通过(仅支持ANSI字符集)并可正常运行。

    在框架开发时主要考虑了其拓展性,通过拓展该框架,可以实现包括自动回复、定时推送、发送图片、调用其他进程并进行通信甚至连接MySQL的功能,您不仅可以用本框架制作常规的群聊机器人,还可以让QQ机器人成为你访问各种程序的接口,这也是本QQ机器人框架开发的初衷。

    本QQ机器人框架由HarmoniaLeo完全独立开发,部分代码参考CSDN论坛和各种博客,在此向所有为本框架诞生提供帮助的前辈们表达真诚的谢意。

    0x01 我能做出什么样的QQ机器人?

    1.自动回复

    自动回复的本质是通过接收消息记录中特定模式的消息调用对应的CString类函数,特定模式的消息指形如“口令 参数1 参数2……”的消息。调用函数后返回的CString result将会以**@发送消息的用户名 result** 的形式被机器人发送到对应的会话窗口。参数个数需要与函数配置时申请的参数个数一致,若过少则不会回复,若过多则最后一个参数将是带 空 格的字符串(函数的配置会在0x03中介绍)。

    在这里插入图片描述

    2.订阅与定时推送

    functions.cpp中预置有函数CString subscribe(CString* valuelist,HWND hwnd,CString caller),对应口令为“订阅”,当会话中出现形如订阅 口令名[(参数1,参数2……)] YYYY:MM:DD:HH:MM:SS [Nd][Nh][Nm][Ns]([]内的内容可以省略)的消息时,机器人会自动记录该订阅,回复“@用户名 订阅成功:口令名”,并根据YYYY:MM:DD:HH:MM:SS和[Nd][Nh][Nm][Ns]这两个参数来定时调用口令名对应的函数,并回复消息。假如这个口令名没有对应函数,则机器人会回复该口令原本的内容。

    在这里插入图片描述

    举个例子:我想要订阅口令名为“复读”的函数,想要从1919年11月4日5点14分开始每隔8小时1秒调用一次,我可以在会话中回复“订阅 复读 1919:11:4:5:14:0 8h1s”,如果我想从现在开始调用函数,则YYYY:MM:DD:HH:MM:SS参数可以被替换为-1,如果我只想让它推送一次该函数,之后就将这个订阅删除,我可以把[Nd][Nh][Nm][Ns]参数替换为-1。如果“复读”没有对应函数,那么它就会从1919年11月4日5点14分开始每隔8小时1秒回复一次“复读”。

    此外,functions.cpp中预置有函数CString checkscribe(CString* valuelist,HWND hwnd,CString caller)CString unscribe(CString* valuelist,HWND hwnd,CString caller),对应的消息分别为“查询订阅”和“取消订阅 口令名”。试试看吧!

    和订阅功能有关的外部储存文件会被储存在和.exe文件相同目录下的“订阅”文件夹下,其储存采用.txt方式。

    由于该框架的高度可拓展性,您甚至可以制作出终端类的QQ机器人,这可以通过本框架提供的API实现。

    0x02 听起来不错,那么我怎么开始呢?

    首先您需要的是本项目文件夹中的所有文件,还需要一台装有Windows系统的服务器,以及一个TIM客户端

    我们接下来以阿里云的Windows Server 2012 R2为例进行介绍。

    Step1:打开TIM客户端,登录机器人账号,将需要回复的会话窗口拖出嵌入式的对话框,并将其全屏(注意不要最小化)。

    在这里插入图片描述

    Step2:测出会话窗口聊天区中4个安全点的x、y坐标(就是点击后只是把焦点设置在消息列表,而不会执行其他操作)(可以使用 https://github.com/HarmoniaLeo/Windows-Screen-Ruler 提供的工具测量),这个坐标主要受windows服务器内部设置的屏幕分辨率影响。将其填入functions.cpp中的extern const int position[8][2] 数组的初始化值中。如果您使用的是阿里云的Windows Server 2012 R2,则使用默认值即可。

    在这里插入图片描述

    const int position[8][2] = { {43,121},{970,121},{43,344},{970,344} };//更改四个定位点的坐标
    

    Step3:在functions.cpp中的extern const CString windowList[windowNum] 的初始化值中填入所有要回复的会话窗口的标题,并将QQbot3.h中的宏windowNum改为会话窗口的总数目。

    const CString windowList[windowNum] = { /*以"会话名1","会话名2"……的方式添加会话名*/};
    #define windowNum 2//更改窗口数目
    

    0x03 如何为QQ机器人配置函数呢?

    Step1:在functions.cpp中的指定位置,以CString 函数名(CString* valuelist,HWND hwnd,CString caller) 为函数头添加函数。

    函数的参数介绍:

    CString* valuelist:参数列表,全部使用MFC内建的CString类来传入参数,用户通过回复“口令 参数1 参数2……”这样的消息将参数传入函数,您可以在函数中对这些参数进行处理并返回不同的结果。

    HWND hwnd:窗口句柄,Windows API中的概念,根据QQ机器人响应的会话窗口不同而有所不同,通过这个参数可以用来调用本框架提供的各种API。

    CString caller:调用该函数的用户名。

    函数的返回值:

    若函数返回了一个CString类字符串,那么调用函数后返回的CString result将会以**@发送消息的用户名 result** 的形式被机器人发送到对应的会话窗口。若返回了空串,则机器人不会执行任何动作,可以用来拒绝参数格式不正确的输入。

    Step2:在functions.cpp中的**void funcInit()**函数中加入语句:funclist[函数编号(从4开始(0-3为预留))]=&函数名;

    void funcInit()
    {
    	funclist[0] = &listCommands;
    	funclist[1] = &subscribe;
    	funclist[2] = &unscribe;
    	funclist[3] = &checkscribe;
    	//初始化自定义函数
    }
    

    Step3:在functions.cpp中的extern const CString functions[fnum] 的初始化值中函数编号对应的位置填入需要响应的口令名(也就是用户用来调用该函数的口令)

    const CString functions[fnum] = { "查询命令","订阅","取消订阅","查询订阅"/*以"口令名1","口令名2"……的方式添加口令名*/ };
    

    Step4:在functions.cpp中的extern const int values[fnum] 的初始化值中函数编号对应的位置填入申请的参数个数

    const int values[fnum] = { 0,3,1,0/*以"参数数目1","参数数目2"……的方式添加参数数目*/ };
    

    Step5:将QQbot3.h中的宏fnum改为函数的总数目。

    #define fnum 19//更改函数数目
    

    0x04 框架为我提供了哪些API呢?

    1.针对一些对于MFC并不是特别熟悉的用户,也为了开发方便起见,以下列出该框架提供的基础API列表:

    CString getTimeStamp()//获取当前时间用Y/M/D H:M:S表示的时间戳(TIM消息记录中时间戳的格式 同时也是本框架在通过文件保存时间戳时的标准形式)
    
    void timeATOI(int* time,CString TMP)//将用Y/M/D H:M:S表示的时间戳TMP转换为一个长度至少为6的int型数组anwser
    
    void periodTOI(CString period,int* anwser)//将用NyNmNdNhNmNs(N表示对应数字)表示的时间戳period转换为一个长度至少为6的int型数组anwser(为用户提供更方便的时间输入方式)
    
    CString turnTimeToAddForm(CString target)//将用Y:M:D:H:M:S表示的时间戳target转换为用Y/M/D H:M:S表示的时间戳(为用户提供更方便的时间输入方式)
    
    CString timeAdd(CString TMP,CString period)//将用Y/M/D H:M:S表示的时间戳TMP和用NyNmNdNhNmNs(N表示对应数字)表示的时间戳period相加并输出新的用Y:M:D H:M:S表示的时间戳
    
    CString cutLeft(CString source,CString obj)//获取source字符串第一个obj字符串以前(不包括obj)的字符串
    
    CString cutRightBI(CString source,int index)//获取source字符串index以后(不包括index)的字符串
    
    CString cutRight(CString source,char obj)//获取source字符串最后一个obj字符以后(不包括obj)的字符串
    
    CString getTitle(HWND hwnd)//获取窗口标题
    
    void exec(CString route);//启动外部程序(route为该程序路径以及该程序的命令行参数,用空格分隔)(可以用来执行python脚本等)
    
    int openFile(CString dir,vector<CString>* list)//打开或创建dir所表示的文件,并分行读入所有内容到一个CString类的vector里,返回读入的行数
    
    void writeFile(CString dir,vector<CString> list,int count)//将一个CString类的vector里的前count行内容分行写入dir所示的文件中
    

    2.针对一些想要丰富消息发送方式的用户,用户可以在配置函数时随时使用以下API:

    CString get(HWND hwnd)//获取会话窗口的消息记录
    
    void pasteMessage(CString source,HWND hwnd)//将source中的消息填入消息发送栏
    
    void toClipboard(CString source,HWND hwnd)//发送source中的消息
    
    void pasteIMG(CString path,HWND hwnd)//将文件路径path所指向的bmp图片复制到消息发送栏
    
    void send(HWND hwnd)//发送消息发送栏里面填入的消息
    

    3.针对想要开发终端交互式QQ机器人程序的用户,本框架提供以下API:

    aTime getATime()//获取当前时间,需要在终端交互函数的开始初始化时间,用aTime类保存,并在之后将aTime类对象的指针传入lastSpeak以响应特定用户最后发送的消息
    
    CString lastSpeak(CString source,CString caller,aTime* last,HWND hwnd)//获取消息记录source中昵称为caller的用户最后发送的消息,获取失败则返回空串,last是一个指向aTime的指针。可以通过一个while循环,判断返回值是否为空,来等待特定用户的输入
    

    实际上终端交互式QQ机器人程序就是让机器人响应一个长周期的函数,利用lastSpeak不断接收特定用户的消息,再利用2中所示的函数即时地发送消息罢了。

    0x05 上面这些我都做完了,还需要做什么呢?

    做完了以上这些,在MFC框架支持下建立控制台程序,编译项目,将生成的.exe文件和(如果使用了MySQL API的话)上传至服务器。运行之后就完成属于你的QQ机器人了!

    展开全文
  • [最新]整理目前可用的QQ机器人框架

    千次阅读 2021-07-15 09:08:50
    排名按作者知道该框架官网的时间,欢迎补充 0、mirai 官网:https://github.com/mamoe/mirai 测评:免费开源,可以写出自己的机器人框架 同父异母产品 YuQ:YuQ-Mirai MiraiGO-CQhttp:MiraiGO-CQhttp 1、cat...

    排名无先后顺序,不定时更新,欢迎留言补充

    最新整理的框架https://www.buyfree.cc/archives/63.html

    0、mirai

    官网:https://github.com/mamoe/mirai
    测评:免费开源,可以写出自己的机器人框架

    同父异母产品

    1、cat机器人

    网站:http://bbs.catqq.one/
    实战:遇见魔盒-基于CatQQ Pro 1.9 版本
    评价:目前Pro版免费,框架稳定性、流畅性都不错,支持多Q用户活跃高,但是论坛并不是很活跃,期待下次更新,希望作者加油!

    2、柠檬机器人

    论坛:http://alemon.cc/bbs/
    实战:遇见魔盒-基于LQ Pro 2.2.8 版本
    测评:拥有airPro微信版本,外观和酷Q有98%的相似度;从开发者的角度来说,支持热加载,十分方便;Pro已收费,Air免费,支持安卓、PC协议,但目前都是单Q版本,多Q版本可以自行申请

    3、先驱机器人

    官网:https://discourse.xianqubot.com/
    实战:遇见魔盒-基于先驱 20201017版本
    测评:该框架目前完全免费,且能够支持多Q贼稳定,经过我的测试,服务器稳定运行一个月不是问题,好像跟ono机器人是同一个大佬的作品

    4、ONO机器人

    官网:http://onoqq.cn/
    实战:遇见魔盒-基于Ono Air 1.5.9版本
    测评:分air和Pro版本,也支持多Q论坛完善部分免费,用户群体也比较多

    5、MINI机器人

    官网:http://qqmini.cc/
    测评:尚未使用过,不做评价

    6、ER机器人

    官网:https://erbot.cn
    测评:尚未使用过,不做评价

    7、千寻机器人

    论坛:http://bbs.51caip.cn/
    测评:尚未使用过,不做评价

    8、乾坤机器人

    论坛:https://www.qk911.com/
    测评:尚未使用过,不做评价

    9、小小机器人

    论坛:https://srxxq.cn/
    实战:遇见魔盒-基于小小1.4.8+版本
    测评:该框架,目前免费,且是目前我所用的框架中UI最好看的一个,界面有点跟酷Q有几分相似,然而论坛活跃度不高,插件也不是很多,开发者也不是很多,框架需要先注册论坛账号,才可以登录上机器人,使用的PC协议

    10、VLMAI机器人

    论坛:http://vlmai.cn/
    测评:微信机器人,尚未使用过,不做评价

    11、小栗子机器人

    官网:https://www.xiaolz.cn/
    实战:遇见魔盒-基于2.8.5+版本
    测评:目前免费,支持多Q登陆论坛活跃好像是目前最活跃的,支持很多api,可以满足很多需求,而且也没有什么限制,就是BUG有点多,我弃坑了!

    12、MykieQQ机器人

    官网:http://gukea.top/
    测评:尚未使用过,不做评价

    13、NanBot机器人

    官网:https://d.nanbot.net/
    测评:一款基于安卓QQ协议,完全免费,功能强大的QQ机器人框架

    14、酷喵机器人

    官网:http://www.kumbot.cn/
    测评:尚未使用过,不做评价

    15、SQ机器人

    官网:https://bbs.svipq8.cn
    测评:尚未使用过,不做评价

    16、可爱猫机器人

    官网:http://www.keaimao.com.cn/forum.php
    测评:尚未使用过,不做评价

    17、Nut机器人

    官网:https://www.nutqq.net/
    测评:尚未使用过,不做评价

    18、黎明机器人

    官网:https://dawnbot.top/
    测评:尚未使用过,不做评价

    18、OVQQ机器人

    官网:http://bbs.ovqq.cc
    测评:前身TyQQ框架,尚未使用过,不做评价

    19、Fn机器人

    官网:https://fnbot.cn/
    测评:尚未使用过,不做评价

    20、Pq机器人

    官网:https://www.parallelq.cc/
    测评:尚未使用过,不做评价

    20、YQ机器人

    官网:https://d522.com/app/yq/
    测评:尚未使用过,不做评价

    展开全文
  • Mirai qq机器人框架kotlin/java教程

    千次阅读 多人点赞 2020-12-28 11:35:14
    Mirai框架qq机器人教程 新版前言资料列表1.准备i. 配置java环境ii. 配置IDEiii. 下载mirai-console-loader(mcl)作为启动器2.创建mirai-console插件项目i. 下载ii. 个性化项目3. 部分文件结构解析4.插件代码解析所以...

    前言

    构建mirai的mirai-console插件教程
    用到的概念有
    mcl - 指mirai-console-loader,mirai-console官方启动器
    mirai - mirai 是一个在全平台下运行,提供 QQ Android 协议支持的高效率机器人库,根据AGPLv3开源

    资料列表

    以下为一些官方资料
    mirai官方github库
    mirai-console官方github库
    mirai-console-loader(mcl)官方启动器官方github库
    这三者的关系可以参考这里
    官方实例
    mirai官方论坛
    官方demo
    mirai在线api文档

    另,以下是一些资源:
    笔者整理的mirai-console插件实例包含kt和java)

    可能遇到的问题

    • MiraiOK已经没用了,用mcl(网址在上面)
    • 最好用openjdk不过甲骨文的jdk好像也可以(建议用openjdk, 解释在下面)
    • 根据issue#959目前邀请机器人进200+人的群都不会触发事件
    • 插件id必须为类包格式(xxx.xxx.xxx)
    • 有的时候收不到机器人的信息是因为被tx风控了换号或多发几次以及多挂(可以去论坛看看)
    • 建议看一遍官方文档虽然有点乱
    • 如果遇到问题,可以去mirai论坛上问
    • 如果要在mcl内改登录协议,在login命令后加参数或在config/console/autologin.yml里面设置自动登录命令和登录的协议
    • mcl登录报错环境异常,参考论坛解决方案
    • 改了入口点包路径需要到resources\META-INF\services\net.mamoe.mirai.console.plugin.jvm.JvmPlugin改成对应的类包路径

    1.准备

    i. 配置java环境

    下载mcl所需要的是>=11版本的openjdk,openjdk下载地址,下载教程参考搜索引擎

    最好用openjdk而不是甲骨文(Oracle)的jdk,原因

    ii. 配置IDE

    推荐IDEA吧,其他的也可以,主要是IDEA挺好用的
    可以选择安装的官方插件:
    Mirai Console IntelliJ 提供错误检查等功能
    Kotlin Jvm Blocking Bridge 帮助 Java 用户调用 Kotlin suspend 函数
    详细参考官方文档

    iii. 下载mirai-console-loader(mcl)作为启动器

    官方地址
    教程同见官方说明

    其他启动器

    目前也出了其他启动器,查看这里

    2.创建mirai-console插件项目

    i. 下载

    1. 官方实例笔者整理的mirai-console插件实例中下载最新版的框架到本地,然后用IDE打开文件夹
    2. 使用插件生成,详细查看官网

    ii. 个性化项目

    • settings.gradle.kts里改生成的插件.jar名称也就是项目名称, 或者在build.gradle.kts里面获取shadowjar任务改如:
    tasks {
        afterEvaluate {
            named<net.mamoe.mirai.console.gradle.BuildMiraiPluginTask>("buildPlugin") {
                archiveBaseName.set("name")
                archiveClassifier.set("")
                archiveVersion.set(version)
            }
        }
    }
    
    • RunMiraikt这个文件(在test文件夹下)可以在ide里运行,不用复制到mcl或其他启动器
    • buildPlugin这个gradle任务可以生成.jar插件
    • src/main/kotlin/PluginMain主类内可以修改插件信息(mcl用)
    • 最好修改PluginMain.ktJavaPluginMain.java的包名避免插件载入冲突,然后在resources\META-INF\services\net.mamoe.mirai.console.plugin.jvm.JvmPlugin中更改类包名到你改后的名,路径见下面

    3. 文件夹结构解析

    插件实例代码文件结构

    │  build.gradle.kts gradle依赖列表
    │  settings.gradle.kts gradle设置
    │
    ├─.run
    │      RunMiraiKt.run.xml IDE中运行任务配置,即RunMiraiKt源文件
    │
    ├─run RunMiraiKt默认运行目录
    │
    └─src
        ├─main
        │  ├─kotlin
        │  │      PluginMain.kt  kotlin插件主类
        │  ├─Java
        │  │      JavaPluginMain.java java插件主类
    	│  │ 
    	│  ├─resources\META-INF\services
    	│  │ 	  net.mamoe.mirai.console.plugin.jvm.JvmPlugin Mirai加载的主类
        └─test
            └─kotlin
                    RunMirai.kt RunMiraiKt任务配置
    

    4.kotlin插件代码解析

    代码以github上的代码为准,可能会有更新

    i.所有在以下代码中要引入的库

    //插件信息
    import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription
    //主类继承
    import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin
    //机器人被拉进群的事件
    import net.mamoe.mirai.event.events.BotInvitedJoinGroupRequestEvent
    //收到好友信息事件
    import net.mamoe.mirai.event.events.FriendMessageEvent
    //收到群消息事件
    import net.mamoe.mirai.event.events.GroupMessageEvent
    //新好友申请事件
    import net.mamoe.mirai.event.events.NewFriendRequestEvent
    //日志组件(logger)发控制台信息函数
    import net.mamoe.mirai.utils.info
    //消息(messageChain)中的图片类型
    import net.mamoe.mirai.message.data.Image
    //消息(messageChain)中的纯文本类型
    import net.mamoe.mirai.message.data.PlainText
    //监听器
    import net.mamoe.mirai.event.Listener
    //监听范围
    import net.mamoe.mirai.event.globalEventChannel
    //协程范围?
    import kotlin.coroutines.EmptyCoroutineContext
    

    监听和事件参考官方文档

    ii.构建主类

    object PluginMain : KotlinPlugin(
        JvmPluginDescription(
            id = "org.example.mirai-example",
            version = "0.1.0"
        )
    ) {
    }
    

    其中,kotlinPlugin指继承plugin父类,JvmPluginDescription指声明插件消息和版本

    iii.覆盖插件启用函数

    override fun onEnable() {
    //或logger.info("xxx")
    	logger.info { "Plugin loaded" }
    }
    

    用kotlin关键字override实现插件启用函数,然后用logger.info()进行日志输出,其中loggerkotlinPlugin类内成员,除了.info()还有.warning()输出警告和.error()输出报错

    iv.监听事件

    subscribeAlways<>{}这个函数在onEnable函数中开启监听

    		globalEventChannel().subscribeAlways<GroupMessageEvent>{
                //群消息
                if (message.contentToString().startsWith("复读")) {
                    group.sendMessage(message.contentToString().replace("复读", ""))
                }
                if (message.contentToString() == "hi") {
                    group.sendMessage("hi")
                }
                message.forEach {
                    //循环每个元素在消息里
                    if (it is Image) {
                        //如果消息这一部分是图片
                    }
                    if (it is PlainText) {
                        //如果消息这一部分是纯文本
                    }
                }
            }
            globalEventChannel().subscribeAlways<FriendMessageEvent>{
                //好友信息
            }
            globalEventChannel().subscribeAlways<NewFriendRequestEvent>{
                //自动同意好友申请
                accept()
            }
            globalEventChannel().subscribeAlways<BotInvitedJoinGroupRequestEvent>{
                //自动同意加群申请
                accept()
            }
    

    v. 全部代码

    这些代码是笔者整理的mirai-console插件kotlin版实例中的内容

    package org.example.mirai.plugin
    
    import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription
    import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin
    import net.mamoe.mirai.event.Listener
    import net.mamoe.mirai.event.events.BotInvitedJoinGroupRequestEvent
    import net.mamoe.mirai.event.events.FriendMessageEvent
    import net.mamoe.mirai.event.events.GroupMessageEvent
    import net.mamoe.mirai.event.events.NewFriendRequestEvent
    import net.mamoe.mirai.event.globalEventChannel
    import net.mamoe.mirai.message.code.MiraiCode
    import net.mamoe.mirai.utils.info
    import net.mamoe.mirai.message.data.Image
    import net.mamoe.mirai.message.data.Image.Key.queryUrl
    import net.mamoe.mirai.message.data.PlainText
    
    /*
    使用kotlin版请把
    src/main/resources/META-INF.services/net.mamoe.mirai.console.plugin.jvm.JvmPlugin
    文件内容改成"org.example.mirai.plugin.PluginMain"也就是当前主类
    使用kt可以把java文件夹删除不会对项目有影响
    
    在settings.gradle.kts里改生成的插件.jar名称
    build.gradle.kts里改依赖库和插件版本
    在主类下的JvmPluginDescription改插件名称,id和版本
    用runmiraikt这个配置可以在ide里运行,不用复制到mcl或其他启动器
     */
    
    object PluginMain : KotlinPlugin(
        JvmPluginDescription(
            id = "org.example.mirai-example",
            name = "插件示例",
            version = "0.1.0"
        )
    ) {
        override fun onEnable() {
            logger.info { "Plugin loaded" }
            //配置文件目录 "${dataFolder.absolutePath}/"
    
            globalEventChannel().subscribeAlways<GroupMessageEvent>{
                //群消息
                group.sendMessage("\uD83D\uDE03")
            }
            globalEventChannel().subscribeAlways<FriendMessageEvent>{
                //好友信息
                sender.sendMessage("hi")
            }
            globalEventChannel().subscribeAlways<NewFriendRequestEvent>{
                //自动同意好友申请
                accept()
            }
            globalEventChannel().subscribeAlways<BotInvitedJoinGroupRequestEvent>{
                //自动同意加群申请
                accept()
            }
        }
    }
    
    

    vi. gradle部分代码

    plugins {
        val kotlinVersion = "1.4.30"
        kotlin("jvm") version kotlinVersion
        kotlin("plugin.serialization") version kotlinVersion
        id("net.mamoe.mirai-console") version "2.3.2"
    }
    
    group = "org.example"
    version = "0.1.0"
    
    repositories {
        jcenter()
        //国内镜像源
        //华为云
        maven { url =uri("https://mirrors.huaweicloud.com/repository/maven") }
        //阿里云
        maven { url =uri("https://maven.aliyun.com/nexus/content/repositories/jcenter")}
        //mirai-console的仓库
        maven {url = uri("https://dl.bintray.com/him188moe/mirai")}
        //滑动模块的仓库
        // maven { url = uri("https://dl.bintray.com/karlatemp/misc") }
        mavenLocal()
        mavenCentral()
    }
    dependencies{
        //在IDE内运行的mcl添加滑块模块,请参考https://github.com/project-mirai/mirai-login-solver-selenium把版本更新为最新
        //runtimeOnly("net.mamoe:mirai-login-solver-selenium:1.0-dev-15")
    }
    

    其中2.3.2是目前最新开发版本,请自行通过官方文档选择版本并更改
    更改版本

    5. Java插件代码解析

    i. 在下面代码中要引入的库

    import net.mamoe.mirai.console.plugin.jvm.JavaPlugin;
    //继承对象
    import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescriptionBuilder;
    //构造插件信息
    import net.mamoe.mirai.event.GlobalEventChannel;
    //全局监听通道
    import net.mamoe.mirai.event.events.FriendMessageEvent;
    //好友信息事件
    import net.mamoe.mirai.event.events.GroupMessageEvent;
    //群消息事件
    

    ii. 构建主类

    构建mirai插件的主类也就是入口点,必须要继承JavaPlugin

    public final class JavaPluginMain extends JavaPlugin {
        public static final JavaPluginMain INSTANCE = new JavaPluginMain();
        private JavaPluginMain() {
            super(new JvmPluginDescriptionBuilder("org.example.mirai-example", "0.1.0")
                    .info("EG")
                    .build());
        }
        }
    

    其中JvmPluginDescriptionBuilder的声明插件信息

    iii. 覆盖插件启用函数

    @Override
        public void onEnable() {
            getLogger().info("日志");
         }
    

    getLogger()获取日志对象,然后用.info()发送普通日志

    iv. 监听事件

    GlobalEventChannel.INSTANCE.subscribeAlways(GroupMessageEvent.class, g -> {
                //监听群消息
                getLogger().info(g.getMessage().contentToString());
    
            });
            GlobalEventChannel.INSTANCE.subscribeAlways(FriendMessageEvent.class, f -> {
                //监听好友消息
                getLogger().info(f.getMessage().contentToString());
            });
    

    v. 全部代码

    package org.example.mirai.plugin;
    
    import net.mamoe.mirai.console.plugin.jvm.JavaPlugin;
    import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescriptionBuilder;
    import net.mamoe.mirai.event.GlobalEventChannel;
    import net.mamoe.mirai.event.events.FriendMessageEvent;
    import net.mamoe.mirai.event.events.GroupMessageEvent;
    
    public final class JavaPluginMain extends JavaPlugin {
        public static final JavaPluginMain INSTANCE = new JavaPluginMain();
        private JavaPluginMain() {
            super(new JvmPluginDescriptionBuilder("org.example.mirai-example", "0.1.0")
                    .info("EG")
                    .build());
        }
    
        @Override
        public void onEnable() {
            getLogger().info("日志");
    
            GlobalEventChannel.INSTANCE.subscribeAlways(GroupMessageEvent.class, g -> {
                //监听群消息
                getLogger().info(g.getMessage().contentToString());
    
            });
            GlobalEventChannel.INSTANCE.subscribeAlways(FriendMessageEvent.class, f -> {
                //监听好友消息
                getLogger().info(f.getMessage().contentToString());
            });
        }
    }
    

    vi. gradle 部分代码

    #4-vi.-gradle-部分代码

    6. 在IDE内运行

    i. 更改MiraiRunKt配置

    /src/test/kotlin/RunMirai.kt中的qq号和密码改成你的
    如果在根目录下没有run文件夹,则可能报错,新建一个就好了

    ii.运行MiraiRunKt任务

    如果任务报错先配置任务
    配置任务

    然后检查根目录下有没有run文件夹,就是这里的路径,如果没有则创建
    run文件夹
    然后配置登录配置
    登录配置

    7. 生成插件并运行

    i. 生成插件

    用IDE中gradle的buldplugin任务可以在buid/mirai/下生成一个.jar插件文件
    buildPlugin

    ii.在mcl中运行

    把这个.jar文件放到mcl的plugin文件夹下,然后用cmd或者直接打开mcl.cmd运行

    有什么评论区问,以后再补充
    相关qq群 1044565129

    -END-
    展开全文
  • 为什么选择小迪迪(XD)框架?: 【支持多Q】【多个协议】【安卓协议和pc协议】【免费 高效 稳定】【有插件开发者激励】 【当前依然能正常使用的框架】 【插件开发便捷快速】 -------------------------------------...
  • OVQQ框架-一个免费的QQ机器人框架

    千次阅读 2021-03-05 01:02:09
    OVQQ是一个使用PCQQ9.4.4协议的免费框架 支持(IR插件.Cat插件.Ono插件)的加载 插件后戳.epk,插件首次加载自动加密打包 OVQQ官网: http://www.ovqq.cc OVQQ社区: http://bbs.ovqq.cc 框架样式:
  • nonebot-qq机器人框架安装及搭建教程

    千次阅读 多人点赞 2021-07-31 20:43:02
    nonebot2机器人框架搭建安装及教程
  • bot_game 基于给qq机器人框架使用的游戏
  • 所用到的教程链接 ...操作借鉴: ...所用到的群:234511052 ...先驱框架 目录详解 这里主要说下酷Q到先驱的移植过程记录 1.在之前的酷q目录中有一个dev文件夹 这三个文件分别是 Debug 调试源码文件 Dll 源
  • ProtobufBot 可用的编程语言和对应框架(SDK) ...QQ机器人的软件(相当于酷Q) 软件 协议库 环境 备注 GMC【推荐】 miraigo 不需要 一个程序可以登陆一个号,多个号需要多开 SMC mirai JVM 一个程序
  • QQ机器人源码,采用易语言写的,通过源码可以学习一下。开发机器人的,可以拿来参考一下。里面有一个模块,其他的都是源代码。
  • 完整的QQ机器人1.准备:安装酷Q 2.建一个小号登录运行酷Q 3.将io.github.richardchien.coolq httpapi.cpk插件放进去:酷Q Air \ app 4.酷Q Air \ data \ app \ io.github.richardchien.coolqhttpapi \ config,该...
  • qq机器人易语言源码

    2018-03-12 09:41:41
    QQ机器人源码,易语言编写的,实测可登陆,基本功能可用,QQ群列表获取方法失效,需要自己重新找借口,其他功能亲测可用。 代码无混淆,无加密。值得学习研究
  • 主要功能概要:收发QQ消息、收发群消息、接收QQ好友签名、接收好友状态改变(上线、下线、忙。。。)、修改自己签名(公告效果) 给飞信好友发送手机短信(免费)、给任何手机、小灵通发送短信(到达率100%,按量...
  • 推荐一个node QQ机器人框架-onebot

    千次阅读 2021-03-03 13:56:08
    onebot-github链接 已集成测试功能完善,加群测试交流 文档可以参考github,这里不做过多赘述 附带api截图
  • QQ机器人制作教程,超详细

    万次阅读 多人点赞 2021-08-27 20:06:42
    首先需要一个qq机器人框架,我使用的是基于mirai 以及 MiraiGo 开发的go-cqhttp(里面有开发文档)。 框架下载地址 Windows下32位文件为 go-cqhttp-v*-windows-386.zip Windows下64位文件为 go-cqhttp-v*-windows-...
  • qqbot_base 基于(mirai)[ ]的qq机器人基本应用框架 内容 执照 (许可证)[qqbot_base / blob / main / LICENSE]
  • 教你写个QQ机器人(2)搭建项目框架 开始SpringBoot之旅 2019/7/5 18:05 未完待续.....(其实是下班了,回去再写) 目前项目的目录(可能会有所改动),详细代码见我的GithubSunAlwaysOnline/kq 以下是我...
  • QQ机器人 1、Mirai 网址简介: 全开源 高效率 QQ机器人/Android QQ协议支持库 for JVM / Android 详细介绍 : Mirai 是一个在全平台下运行,提供 QQ Android 和 TIM PC 协议支持的高效率机器人库 这个项目的名字来源...
  • 这个绝对物超所值,基于webQQ的qq机器人,下载即可使用,附带源码,想互相交流的加,不懂得可以问我
  • 框架准备 前言 服务器操作系统: CentOS 8 ubuntu系统好像会出问题,不推荐使用ubuntu,搭建了三次全部失败,故此放弃。 服务器python版本:3.8.2 安装OpenJDK yum install java-11-openjdk.x86_64 -y 这里就安装这...
  • qq机器人智能聊天
  • QQRobot 具备以下特点:1、它是跨平台的,可以在 Linux/Windows 主机上运行;...3、占用系统资源非常小,一个 QQRobot 仅占用 40KB内存;4、它是以开源方式发布,你可以修改它,让它满足你的网站需要;...
  • qq机器人搭建教程

    千次阅读 多人点赞 2021-08-17 16:42:44
    qq机器人搭建教程 QQ交流群:970353786 我们的这个qq机器人是用Python来搭建的。 所以说,先打开我们的Pycharm 然后新建一个文件夹,再打开终端,先来装点库 pip install pydantic loguru pygtrie httpx python-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,481
精华内容 9,392
关键字:

qq机器人框架