C# QQ 机器人 Newbe.Mahua 1.X 主要特性介绍与常见问题讲解
Newbe.Mahua 1.X 系列 LTS 版本已经发布。本篇就来介绍一下 1.X 版本中的主要特性以及常见问题的解答。
主要特性
依赖注入
框架本身采用 Autofac
作为依赖注入框架。进行插件开发时,必然会使用到该框架。建议开发者阅读官方文档熟悉其用法。https://autofac.readthedocs.io/en/latest/getting-started/index.html
日志
依赖于 Liblog
与 NLog
框架支持输出多种多样的日志数据,以便开发者进行开发调试。
默认情况下,框架将会把日志输出在机器人平台根目录的 logs 文件夹中。
调试
框架本身支持进行调试插件与调试框架源码。
Session机制
Session 机制是框架基于 Autofac
采用的一套API生命周期管理方案。简要而言,框架将每次事件触发过程,当做一次 Session 进行控制。
开发者可以依赖这一生命周期特性,完成一些业务操作的连贯性。例如:保证整个事件的处理过程属于同一数据库事务。
详细的使用方法建议在了解 Autofac
相关的用法之后进行探究。
热更新
热更新机制为开发者提供了不需要重启机器人平台便能够更新插件的功能。
消息发送Fluent API
依赖于 Session 机制,Fluent API 为开发者提供了能够通过链式调用的方式发送消息的功能。
通过Fluent API 的操作方法,开发者可以类似于数据库事务一样,在多个对象中拼装消息内容,而在最终决定是否发送消息。
设置中心
框架提供了一套基于 WPF 的统一设置中心,开发者可以使用此设置中心来制作自己的应用设置界面。
当然开发者可以完全扩展出自己的设置中心。
扩展API与平台原生API
开发者可以通过 IMahuaApi
调用框架提供的API,通过这些API能够实现大部分的业务需求。
但由于不同平台的支持程度不同,因此实现上存在差异。但开发者可以通过扩展 IMahuaApi
的实现,进一步达到自己的需求。
并且,框架也提供了各平台原生的API。
常见问题
大佬,这里有个问题能帮我看一下吗?
不能。
框架免费吗?
免费。
哪里有框架的源码?
无法将“Install-PackageProvider”项识别为 cmdlet、函数、脚本文件或可运行程序的名称…
升级到 Powershell 5。https://www.cnblogs.com/wenBlog/p/6198354.html
怎么异步发送消息?
由于 Session 机制的存在,直接调用注入事件的IMahuaApi
执行是必然失败的。因此,需要在异步代码中能够开启新的 Session 才能够正常使用接口。
示例如下:
// 异步发送消息,不能使用 _mahuaApi 实例,需要另外开启Session Task.Factory.StartNew(() => { using (var robotSession = MahuaRobotManager.Instance.CreateSession()) { var api = robotSession.MahuaApi; api.SendPrivateMessage(context.FromQq, "异步的嘤嘤嘤"); } });
怎么解析API中好像加密了的群列表?
IMahuaApi
中提供了解析成模型的API接口。字符串本身如何解析可以参考对应平台的易语言SDK。
怎么获取群列表?
看IMahuaApi
。
怎么获取群成员列表?
看IMahuaApi
。
怎么获取好友列表?
看IMahuaApi
。
能不能发红包?
不能。
有没有微信SDK?
没有。
为什么复制了启动之后,报错了?
- 重看教程,确认真的都看完了看准了
- 看日志,日志中记录了错误信息
能不能给项目捐款?
能。点击右侧链接,信仰充值:https://gitee.com/yks/Newbe.Mahua.Framework#project-donate-overview
教程链接
【开源访谈】对接 QQ 机器人平台,对接共同成长的开源社区(开源中国采访)
Newbe.Mahua.Samples.ApiExtensions 对IMahuaApi进行扩展
Newbe.Mahua.Samples.LiveGirl 操作定时任务
Newbe.Mahua.Samples.Sqlite SQLite操作实例
发布说明
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JS的分号可以省掉吗?
摘要: JavaScript语言从设计之初就是考虑带分号的,使用不带分号的编码规则就要小心点啦。 背景 最近在项目中开始使用新的编码规范,一开始ESLint报一大堆错误,改得我想砸键盘,花了好些时间才适应,下面列出一些代表性的规则: 只能使用单引号 函数定义的圆括号和左大括号之间一定要有空格: function(args) { .. } import语句在大括号之后一定要有空格: import { fa, fb } from moduleC 不用分号!!! 起因 早上在实现一个功能的时候,写了一个map函数来复用部分代码。程序运行起来后,没有执行结果,而且没有报错。通过console.log打印数据发现,整个程序执行到map前面就再也不往下走了,很奇怪。因为没有报错信息,无法推测具体原因。于是,我将其抽象成非常简单的代码来排查。如下所示: console.log("hello, fundebug") [1, 2, 3].map(i=>console.log(i)) 然后执行看看结果如何: 在项目中没有报错,单独将这段代码拿出来在浏览器控制台下执行却报错了! 这么简单的代码为什么会...
- 下一篇
EOS 用 C++ 开发智能合约为何要编译成 WebAssembly?
许多人正试图学习如何在EOS上开发智能合约。但是,这些智能合约是由C++编写的,并编译成WebAssembly,这对大多数非c++程序员来说似乎很奇怪。因此,在深入了解EOS之前,最好先学习一些关于WebAssembly的基本知识。 什么是WebAssembly 我不想从官方网站上复制这个定义。你可以自己看一下。在这里,你可以将其视为可以在Web浏览器中加载和运行的文件。它类似于Javascript,但它比JS更快,更简单,更安全。 如何编写Webassembly 这里是一个工作流程: 基本上有四个步骤,我将通过一个非常简单的例子来说明。 1.编写C/C++代码 以下代码用于计算数字的平方根。 #include <math.h> float getSqrt (float num) { return sqrt(num); } 2.将C/C++代码编译成wasm(Webassembly的格式) 编译代码有很多种方法。为了简化这个过程,我找到了一种非常简单的方法。 将代码复制到该网站并单击build(构建)按钮,你可以找到编译的文件,如下所示。 然后将program.wasm文件...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 设置Eclipse缩进为4个空格,增强代码规范