本示例將會使用」嚶鵡學舌」這個小插件的實現來演示如何使用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操做實例