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


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

 

入坑提示

建議開發者先根據自身需求結合表格,選擇屬於自己的專屬開發框架,避免浪費時間。

  1. 編寫一套代碼就能在多個平台運行
  2. 支持使用除了C#之外的開發語言來開發
  3. 我希望他足夠簡單,不用學習太多就能掌握,通常只需要半個小時就能掌握所有內容
  4. 我希望社區的反饋足夠快,有問題都可以幫我解決
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中運行以下命令:

 
bash
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創建項目
使用Rider創建項目

 

等待 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創建項目
使用Rider創建項目

 

等待 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文件,按照實際需求和注釋內容進行修改。

 
csharp
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,將好友消息回發給好友,實現嚶鵡學舌的效果。

 
csharp
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

 
csharp
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執行成功
build.bat執行成功

 

復制文件到機器人平台

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

分別將三個文件夾下的所有文件和文件夾都復制到對應的機器人平台根目錄。

以CQP為例,進行一次復制過程如下圖所示:

 

CQP復制插件
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 主要特性介紹與常見問題講解

教程鏈接

發布說明


來源: newbe
文章作者: newbe36524
文章鏈接: https://www.newbe.pro/Newbe.Mahua/Begin-First-Plugin-With-Mahua-In-v1.9/
本文章著作權歸作者所有,任何形式的轉載都請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM