本教程将通过对 CQP 进行 API 扩展为例,来实现以下功能:
- 扩展 CQP 原生不支持的获取好友列表接口
- 替换 CQP 原生的发送好友消息接口
- 通过
Newbe.Mahua.CQP.ApiExtensions
实现扩展 CQP 原生不支持的发送群公告接口
对于其他平台的扩展都可以参考此教程。
软硬条件
名 | 值 |
---|---|
IDE | VS2017.5 |
Newbe.Mahua | 1.7 |
业务逻辑
当收到好友消息的时候,获取好友列表。
将好友列表的数据写入到群公告中。
替换发送好友消息接口,实际上将好友消息写入到日志文件中。
新建项目
使用Newbe.Mahua.Plugins.Template
模板创建项目,项目名称为Newbe.Mahua.Samples.ApiExtensions
。
新建项目的详细细节,可以参照右侧链接内容:新建项目
业务逻辑实现
本教程主要为了演示 API 的调用效果,因此只需要实现”好友消息接收事件”即可,具体代码如下:
在MahuaEvents
下添加”好友消息接收事件”,并在事件内调用业务逻辑。实现代码如下:
MahuaEvents 文件夹是本 SDK 建议将事件放置的文件夹位置。也可以不接受建议而添加在其他地方。
using Newbe.Mahua.MahuaEvents; |
扩展 API
以下采用三种方式扩展 API。
自己实现原来不支持的
IMahuaApi.GetFriends
在 CQP 平台下,原生是不支持的,本节可以通过添加实现类来进行扩展。
在MahuaApis
下添加”获取好友列表”。并实现代码如下:
MahuaApis 文件夹是本 SDK 建议将 API 扩展放置的文件夹位置。也可以不接受建议而添加在其他地方。
using Newbe.Mahua.Apis; |
替换原来就支持的
IMahuaApi.SendPrivateMessage
接口是 CQP 平台原生就支持的接口。
本节将通过扩展来覆盖原有的逻辑,将需要发送的消息写入到日志文件中。
在MahuaApis
下添加”发送私聊消息”。并实现代码如下:
MahuaApis 文件夹是本 SDK 建议将 API 扩展放置的文件夹位置。也可以不接受建议而添加在其他地方。
using Newbe.Mahua.Apis; |
引入扩展包
IMahuaApi.SetNotice
在 CQP 平台下,原生是不支持的。
为了给开发者提供更多便利的功能。本 SDK 提供了Newbe.Mahua.*.ApiExtensions
系列 nuget 包。
插件使用者只需要引入这些 nuget 并恰当的注册,便可以实现对平台原生不支持的 API 进行扩展。
在项目源码下Readme.md
的 MahuaApi 支持列表详细记录了平台原生支持的 API 和扩展包支持的 API。
Newbe.Mahua.CQP.ApiExtensions
1.7 版本实现了 CQP 平台下发送群公告的功能,因此,通过 nuget 直接安装此包即可。
模块注册
以上三种方式实现 API 的扩展都需要在模块中进行注册,具体的注册代码如下:
using Autofac; |
集成测试
万事具备,只欠生成。
生成解决方案,运行build.bat
,复制相关的 DLL 到对应的平台,向机器人发送消息,效果达成!
以下是 CQP 平台的测试效果。其实其他的没测试
总结
不同平台具备不同的 API 支持范围。通过自定义扩展和扩展包的引入,可以弥合各平台之间的不同。
Newbe.Mahua.*.ApiExtensions
系列 nuget 包的实现需要依托社区发展方可进一步完善,欢迎您参与其中。
实例的项目代码,可以在源码仓库中的Newbe.Mahua.Samples.ApiExtensions
解决方案下找到。
教程链接
- Newbe.Mahua 1.X 主要特性介绍与常见问题讲解
- 开始第一个QQ机器人【适用于v1.9-v1.X】
- Newbe.Mahua 插件热更新
- Newbe.Mahua.Samples.ApiExtensions 对IMahuaApi进行扩展
- Newbe.Mahua.Samples.LiveGirl 操作定时任务
- Newbe.Mahua.Samples.Sqlite SQLite操作实例
- Newbe.Mahua 测试与调试
- Newbe.Mahua 扩展设置中心
- 【开源访谈】对接 QQ 机器人平台,对接共同成长的开源社区(开源中国采访)
发布说明
- Newbe.Mahua 1.18.2 修复项目模板
- Newbe.Mahua 1.18.1 缺陷修复
- Newbe.Mahua 1.18 恢复 QQLight
- Newbe.Mahua 1.17 移除 CleverQQ
- Newbe.Mahua 1.16 可用性修复
- Newbe.Mahua 1.15 支持发送语音
- Newbe.Mahua 1.14 全新项目模板
- Newbe.Mahua 1.13 支持撤回消息
- Newbe.Mahua 1.12 第一个LTS版本
- Newbe.Mahua 1.11 支持热更新
- Newbe.Mahua 1.10 全新日志查看器
- Newbe.Mahua 1.9 引入 Session
- Newbe.Mahua 1.8 消息发送Fluent API
- Newbe.Mahua 1.7.0 支持API扩展
- Newbe.Mahua 1.6.0 开发便利性提升