本示例将会使用”嘤鹉学舌”这个小插件的实现来演示如何使用Newbe.Mahua
实现第一个机器人插件。php
自动将发送者的消息回发给发送人,嘤鹉(Parrot,实际上是说嘤嘤嘤怪)学舌。html
参考连接:http://www.pstips.net/powershell-create-and-start-scripts.htmlnode
简单来讲,使用管理员权限在cmd中运行如下命令:shell
powershell -command "Set-ExecutionPolicy RemoteSigned -Force"
从VS扩展商店下载最新的VS扩展,下载地址为:https://marketplace.visualstudio.com/items?itemName=Newbe36524.NewbeMahuaVsExtensions编程
若出现下载不顺畅通,也能够经过加入技术交流群,在群文件中进行下载。点击加入Newbe.Mahua群【610394020】api
安装过程可能须要花费若干分钟,需耐心等待。bash
安装完毕,须要重启全部VS方可生效。框架
项目名称至少须要包含三部分,形如AAA.BBB.CCC的形式。异步
新建项目时,能够根据”但愿支持的插件平台”来选择特定后缀的项目模板来安装。ide
Newbe.Mahua.Plugins.Template
是安装了全部平台支持包的项目模板。本示例将使用此项目模板进行演示。
本插件项目名称使用Newbe.Mahua.Plugins.Parrot
。
打开PluginInfo.cs
文件,按照实际需求和注释内容进行修改。
namespace Newbe.Mahua.Plugins.Parrot { /// <summary> /// 本插件的基本信息 /// </summary> public class PluginInfo : IPluginInfo { /// <summary> /// 版本号,建议采用 主版本.次版本.修订号 的形式 /// </summary> public string Version { get; set; } = "1.0.0"; /// <summary> /// 插件名称 /// </summary> public string Name { get; set; } = "嘤鹉学舌"; /// <summary> /// 做者名称 /// </summary> public string Author { get; set; } = "Newbe"; /// <summary> /// 插件Id,用于惟一标识插件产品的Id,至少包含 AAA.BBB.CCC 三个部分 /// </summary> public string Id { get; set; } = "Newbe.Mahua.Plugins.Parrot"; /// <summary> /// 插件描述 /// </summary> public string Description { get; set; } = "嘤鹉学舌,是一个使用Mahua框架开发的第一个插件。该插件实现将好友的私聊消息回发给好友的功能。"; } }
在MahuaEvents
处右键,选择”添加->新建项”。
MahuaEvents文件夹是本SDK建议将事件放置的文件夹位置。也能够不接受建议而添加在其余地方。
以下图所示,选择”来自好友的私聊消息接收事件”。
在PrivateMessageFromFriendReceivedMahuaEvent.cs
中,调用IMahuaApi
,将好友消息回发给好友,实现嘤鹉学舌的效果。
using Newbe.Mahua.MahuaEvents; using System.Threading.Tasks; namespace Newbe.Mahua.Plugins.Parrot.MahuaEvents { /// <summary> /// 来自好友的私聊消息接收事件 /// </summary> public class PrivateMessageFromFriendReceivedMahuaEvent : IPrivateMessageFromFriendReceivedMahuaEvent { private readonly IMahuaApi _mahuaApi; public PrivateMessageFromFriendReceivedMahuaEvent( IMahuaApi mahuaApi) { _mahuaApi = mahuaApi; } public void ProcessFriendMessage(PrivateMessageFromFriendReceivedContext context) { // 戳一戳 _mahuaApi.SendPrivateMessage(context.FromQq) .Shake() .Done(); // 嘤嘤嘤,换行,重复消息 _mahuaApi.SendPrivateMessage(context.FromQq) .Text("嘤嘤嘤:") .Newline() .Text(context.Message) .Done(); // 异步发送消息,不能使用 _mahuaApi 实例,须要另外开启Session Task.Factory.StartNew(() => { using (var robotSession = MahuaRobotManager.Instance.CreateSession()) { var api = robotSession.MahuaApi; api.SendPrivateMessage(context.FromQq, "异步的嘤嘤嘤"); } }); } } }
打开MahuaModule.cs
文件,在MahuaEventsModule
中注册刚刚添加的PrivateMessageFromFriendReceivedMahuaEvent
。
using Autofac; using Newbe.Mahua.MahuaEvents; using Newbe.Mahua.Plugins.Parrot.MahuaEvents; namespace Newbe.Mahua.Plugins.Parrot { /// <summary> /// Ioc容器注册 /// </summary> public class MahuaModule : IMahuaModule { public Module[] GetModules() { // 能够按照功能模块进行划分,此处能够改造为基于文件配置进行构造。实现模块化编程。 return new Module[] { new PluginModule(), new MahuaEventsModule(), }; } /// <summary> /// 基本模块 /// </summary> private class PluginModule : Module { protected override void Load(ContainerBuilder builder) { base.Load(builder); // 将实现类与接口的关系注入到Autofac的Ioc容器中。若是此处缺乏注册将没法启动插件。 // 注意!!!PluginInfo是插件运行必须注册的,其余内容则不是必要的!!! builder.RegisterType<PluginInfo>() .As<IPluginInfo>(); } } /// <summary> /// <see cref="IMahuaEvent"/> 事件处理模块 /// </summary> private class MahuaEventsModule : Module { protected override void Load(ContainerBuilder builder) { base.Load(builder); // 将须要监听的事件注册,若缺乏此注册,则不会调用相关的实现类 builder.RegisterType<PrivateMessageFromFriendReceivedMahuaEvent>() .As<IPrivateMessageFromFriendReceivedMahuaEvent>(); } } } }
生成项目,而后双击位于项目根目录的build.bat
文件。
在bin
目录下会按照当前安装的平台生成相应的目录。本示例将会生成CQP、Amanda和MPQ三个目录。
分别将三个文件夹下的全部文件和文件夹都复制到对应的机器人平台根目录。
以CQP为例,进行一次复制过程以下图所示:
各机器人软件下载地址:
名称 | 地址 |
---|---|
CQP | https://cqp.cc/ |
MPQ | https://f.mypcqq.cc/thread-2327-1-1.html |
CleverQQ | https://d.cleverqq.cn/forum.php |
QQLight | http://www.52chat.cc/ |
各个机器人平台的启用方式各不相同。
按照下图所示,开启开发者模式。
打开插件管理将插件启用。
打开插件管理将插件启用。
打开插件管理将插件启用。
打开插件管理将插件启用。
发送消息给机器人,你就会收到机器人回发的信息。
机器人插件启动可能须要一段时间,而且大多数平台都会丢弃离线信息,可能须要等待一下子在发送。
【开源访谈】对接 QQ 机器人平台,对接共同成长的开源社区(开源中国采访)
Newbe.Mahua.Samples.ApiExtensions 对IMahuaApi进行扩展
Newbe.Mahua.Samples.LiveGirl 操做定时任务
Newbe.Mahua.Samples.Sqlite SQLite操做实例