本示例將會使用”嚶鵡學舌”這個小插件的實現來演示如何使用Newbe.Mahua
實現第一個機器人插件。
入坑提示
建議開發者先根據自身需求結合表格,選擇屬於自己的專屬開發框架,避免浪費時間。
- 編寫一套代碼就能在多個平台運行
- 支持使用除了C#之外的開發語言來開發
- 我希望他足夠簡單,不用學習太多就能掌握,通常只需要半個小時就能掌握所有內容
- 我希望社區的反饋足夠快,有問題都可以幫我解決
SDK名稱 | (1) | (2) | (3) | (4) |
---|---|---|---|---|
論壇中的其他SDK | ✔ | ✔ | ✔ | ✔ |
Jie2GG.Native.Csharp.Frame | ✔ | ✘ | ✔ | ✔ |
Newbe.Mahua V2 | ✔ | ✔ | ✘ | ✘ |
Newbe.Mahua V1 | ✔ | ✘ | ✘ | ✘ |
論壇其他SDK的鏈接
插件功能
自動將發送者的消息回發給發送人,嚶鵡(Parrot,其實是說嚶嚶嚶怪)學舌。
基礎環境要求
- Windows 操作系統
- .Net Framework 4.5.2 及以上
- Powershell 5.0及以上,僅開發環境要求
- .Net Core SDK 2.2 及以上,僅開發環境要求
IDE
開發者可以任選以下任意一款IDE
- Visual Studio 2017(VS2015 update 3 理論上也能夠開發,但開發遇到的問題,需自行解決)
- Visual Studio Code
- Rider(Newbe更加推薦)
設置Powershell執行策略限制
簡單來說,使用管理員權限在cmd中運行以下命令:
powershell -command "Set-ExecutionPolicy RemoteSigned -Force"
參考資料:http://www.pstips.net/powershell-create-and-start-scripts.html
安裝項目模板
在安裝好 .Net Core SDK
之后,啟動控制台運行以下命令:
dotnet new -i Newbe.Mahua.Template
出現以下內容,則說明項目模板已經安裝成功。

新建項目
項目模板包含有五個,包含四個對應平台的模板和一個全平台的模板。
名稱 | 說明 |
---|---|
newbe.mahua.all | 全平台 |
newbe.mahua.cqp | 酷 Q |
newbe.mahua.mpq | MyPcQQ |
newbe.mahua.qqlight | QQLight |
本示例使用全平台模板 newbe.mahua.all 進行演示。
特別注意:為了確保新建的項目的能夠在所有平台運行,項目名稱至少需要包含 AAA.BBB.CCC 三段。
本次實例使用名稱 Newbe.Mahua.Plugins.Parrot 進行演示。
使用 Rider
直接使用 Rider 創建項目,可以在 Other 模板分組中找到該框架相關的模板。

等待 Rider 創建完畢后,進入新建的項目文件夾中。使用控制台執行更新命令,更新相應的組件包到最新:
build.bat UpdateMahuaPackages
使用其他 IDE
新建一個空的文件夾,啟動控制台,cd進入該文件夾,運行以下命令:
powershell -command "Set-ExecutionPolicy RemoteSigned -Force"
參考資料:http://www.pstips.net/powershell-create-and-start-scripts.html
安裝項目模板
在安裝好 .Net Core SDK
之后,啟動控制台運行以下命令:
dotnet new -i Newbe.Mahua.Template
出現以下內容,則說明項目模板已經安裝成功。

新建項目
項目模板包含有五個,包含四個對應平台的模板和一個全平台的模板。
名稱 | 說明 |
---|---|
newbe.mahua.all | 全平台 |
newbe.mahua.cqp | 酷 Q |
newbe.mahua.mpq | MyPcQQ |
newbe.mahua.qqlight | QQLight |
本示例使用全平台模板 newbe.mahua.all 進行演示。
特別注意:為了確保新建的項目的能夠在所有平台運行,項目名稱至少需要包含 AAA.BBB.CCC 三段。
本次實例使用名稱 Newbe.Mahua.Plugins.Parrot 進行演示。
使用 Rider
直接使用 Rider 創建項目,可以在 Other 模板分組中找到該框架相關的模板。

等待 Rider 創建完畢后,進入新建的項目文件夾中。使用控制台執行更新命令,更新相應的組件包到最新:
build.bat UpdateMahuaPackages
使用其他 IDE
新建一個空的文件夾,啟動控制台,cd進入該文件夾,運行以下命令:
REM 創建解決方案
dotnet new sln -n Newbe.Mahua.Plugins.Parrot
REM 創建項目文件夾
mkdir Newbe.Mahua.Plugins.Parrot
REM 切換目錄
cd Newbe.Mahua.Plugins.Parrot
REM 使用模板創建項目
dotnet new newbe.mahua.all -n Newbe.Mahua.Plugins.Parrot
y
REM 切換目錄
cd ../
REM 將項目添加到解決方案中
dotnet sln Newbe.Mahua.Plugins.Parrot.sln add Newbe.Mahua.Plugins.Parrot/Newbe.Mahua.Plugins.Parrot.csproj
echo finished
初次執行這些命令需要1-2分鍾時間。
具體效果如圖所示:

修改插件基本信息
打開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框架開發的第一個插件。該插件實現將好友的私聊消息回發給好友的功能。"; } }
添加”接收好友消息事件”代碼實現
新建出來的項目中包含一個 ItemTemplate
文件夾,里面包含了所有需要的項模板。
注意,這個文件夾默認沒有包含到項目中,需要使用資源管理器進行查看。
將 ItemTemplate/MahuaEvent/PrivateMessageReceivedMahuaEvent.cs
文件復制到 MahuaEvents/PrivateMessageReceivedMahuaEvent.cs
,並使用IDE將復制后的文件包含在項目中。
處理事件
在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 |
QQLight | http://www.52chat.cc/ |
啟用插件
各個機器人平台的啟用方式各不相同。
CQP
按照下圖所示,開啟開發者模式。

打開插件管理將插件啟用。
MPQ、QQLight
打開插件管理將插件啟用。
成功!
發送消息給機器人,你就會收到機器人回發的信息。
機器人插件啟動可能需要一段時間,並且大多數平台都會丟棄離線信息,可能需要等待一會兒在發送。
繼續了解
教程鏈接
- 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 開發便利性提升
來源: newbe
文章作者: newbe36524
文章鏈接: https://www.newbe.pro/Newbe.Mahua/Begin-First-Plugin-With-Mahua-In-v1.9/
本文章著作權歸作者所有,任何形式的轉載都請注明出處。