使用C# 開始第一個QQ機器人

本示例將會使用」嚶鵡學舌」這個小插件的實現來演示如何使用Newbe.Mahua實現第一個機器人插件。php

插件功能

自動將發送者的消息回發給發送人,嚶鵡(Parrot,實際上是說嚶嚶嚶怪)學舌。html

開發環境要求

  • .Net Framework 4.5.2 及以上
  • Visual Studio 2017(VS2015 update 3 理論上也可以開發,但開發遇到的問題,需自行解決)
  • powershell 5.0及以上

設置Powershell執行策略限制

參考連接:http://www.pstips.net/powershell-create-and-start-scripts.htmlnode

簡單來講,使用管理員權限在cmd中運行如下命令:shell

powershell -command "Set-ExecutionPolicy RemoteSigned -Force" 

安裝VS擴展

從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文件。

build.bat執行成功

複製文件到機器人平臺

bin目錄下會按照當前安裝的平臺生成相應的目錄。本示例將會生成CQP、Amanda和MPQ三個目錄。

分別將三個文件夾下的全部文件和文件夾都複製到對應的機器人平臺根目錄。

以CQP爲例,進行一次複製過程以下圖所示:

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/

啓用插件

各個機器人平臺的啓用方式各不相同。

CQP

按照下圖所示,開啓開發者模式。

開啓開發者模式

打開插件管理將插件啓用。

CleverQQ

打開插件管理將插件啓用。

MPQ

打開插件管理將插件啓用。

QQLight

打開插件管理將插件啓用。

成功!

發送消息給機器人,你就會收到機器人回發的信息。

機器人插件啓動可能須要一段時間,而且大多數平臺都會丟棄離線信息,可能須要等待一下子在發送。

繼續瞭解

Newbe.Mahua 1.X 主要特性介紹與常見問題講解

教程連接

Newbe.Mahua 1.X 主要特性介紹與常見問題講解

Newbe.Mahua 插件熱更新

【開源訪談】對接 QQ 機器人平臺,對接共同成長的開源社區(開源中國採訪)

開始第一個QQ機器人【適用於v1.9-1.12】

Newbe.Mahua.Samples.ApiExtensions 對IMahuaApi進行擴展

Newbe.Mahua.Samples.LiveGirl 操做定時任務

Newbe.Mahua.Samples.Sqlite SQLite操做實例

Newbe.Mahua 測試與調試

Newbe.Mahua 擴展設置中心

發佈說明

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 開發便利性提高

相關文章
相關標籤/搜索