MeowMiraiLib 极简 C#(.net5) 快速机器人生成框架 (开源, 多平台)
-
这是一个 能 生 成 自 己 C#(.net5) 程 序 的 Mirai-Csharp 框架项目,
需要**.net5**支持 和 Mirai HTTP API支持.
其实本来是我开发机器人的时候用的一个自己写的小框架 (qwq)
但是我想分享出来让大家也快速开发
框架完全和HTTPAPI一一对应 (感谢微软的快速开发缩略语言[语法糖])
如果有人喜欢, 我可以继续更新 框架类图 和 继承模式图 ,
甚至别的你们喜欢的东西 OvO
当前项目"状态很好" (完全注释XML/目前我机器人运行没有问题)原仓库地址: https://github.com/DavidSciMeow/MeowMiraiLib
Nuget地址: https://www.nuget.org/packages/Electronicute.MeowMiraiLib/- 项目维护指数: 86
- 圈复杂度: 258
- 继承深度: 3
- 类聚合程度: 140
- 源码行数: 3883
- 可执行代码行数: 408
关于微软.net5在各个平台的安装以及调试请查看微软文档:
https://dotnet.microsoft.com/download/dotnet/5.0p.s. 以后可能会迁移到 .net 6 (嘛你也知道..微软...OvO)
p.s.2. 本喵是夜班人, 上午找可能找不到.
p.s.3. 欢迎各路C#大神一起讨论OwO感谢各位前辈支持喵awa
-
今日更新
在websocket内部进行了循环控制队列获取触发命令(事件)的返回值
最新更新 2.1.0 ver
有任何需要可以回复(大雾
(真的有人注意到这个项目么qwq -
此回复已被删除! -
@davidscimeow 由点赞数可以知道真的有人在看这个项目(因为太强不敢说话)
-
@orisland 哈哈谢谢支持w,我会慢慢更新整个框架的OvO
-
你的项目似乎不能开issue?
-
@executor-cheng 嗯,因为我还没确定东西,等我把Project弄好了这些就会开,他得弄个模板啥的OvO
-
@executor-cheng 现在应该OK了(
-
2.2.0 基础功能已经完全完善, 支持发送命令后取出Websocket返回值, 多线程技术目前由.net内核控制,
- 所有事件均与HTTPAPI内部命名大致一致, 您可以打出 OnEvent 后使用上下键查看vs的API注释行来了解用法,
- 您也可以使用HTTPAPI的 Event 前一个单词进行搜索, 例如 原名 MemberMuteEvent -> ws事件名 OnEventMemberMuteEvent
-
- 您只需键入 OnEvent M E ↓↓ TAB 回车即可.
- 目前的事件处理异步性质由使用API的程序员决定, 如果您使用 async (s,e) =>{...} 代理, 那么您的事件处理必须完全异步.
- 您可以用本框架 只 进 行 监 听, 也可以使用本框架 只 进 行 发 送. 事件的监听和发送没有什么必然联系.
-
强 不敢言
-
差不多读完了, 给你提一些建议吧: MeowMiraiLib/#1
-
@executor-cheng 好,等我详细看看设计问题,感谢意见
-
@executor-cheng 已经回复,感谢大佬提点.
-
最新3.0.0版, 加装了异步处理的标准流程, 优化了事件处理, 独立(实例了)端和信息发送的方案.
感谢大佬 @Executor-Cheng 的初版建议和意见.
感谢各位大佬对小项目的关注
- ##异步写法
using MeowMiraiLib; using MeowMiraiLib.Msg; using System; using System.Threading.Tasks; namespace Test { internal class Program { static readonly Client c = new("....",true,true); static async Task Main(string[] args) { await c.ConnectAsync(); c.OnFriendMessageRecieve += (s, e) => { //..... }; //.... while (true) { switch (Console.ReadLine()) { case "t": { var k = await new GroupList().SendAsync(c); //查看群列表 Console.WriteLine(k); // 打印返回信息 break; } } } } } }
- ##同步写法
using MeowMiraiLib; using MeowMiraiLib.Msg; using System; namespace Test { internal class Program { static readonly Client c = new("........",true,true); static void Main(string[] args) { c.Connect(); c.OnFriendMessageRecieve += (s, e) => { //..... }; //.... while (true) { switch (Console.ReadLine()) { case "t": { var k = new GroupList().Send(c); //查看群列表 Console.WriteLine(k); // 打印返回信息 break; } } } } } }
-
有个typo:
OnFriendMessageRecieve
→OnFriendMessageReceive
然后我还是那句话, 能不开状态机那就不开状态机, 以下代码能达到预期 + 不改变方法签名 + 减少内存开销 + 提升性能public Task<bool> ConnectAsync() { if (string.IsNullOrEmpty(url)) { throw new("No Url was specified."); } return ws.OpenAsync(); }
-
@executor-cheng OK, 等我对比试试
-
此回复已被删除! -
好耶,是学姐!
-
嘿嘿,瞅瞅去