MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    MeowMiraiLib 极简 C#(.net5) 快速机器人生成框架 (开源, 多平台)

    其他项目发布
    6
    19
    1528
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • DavidSciMeow
      DavidSciMeow 最后由 编辑

      这是一个 能 生 成 自 己 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.0

      p.s. 以后可能会迁移到 .net 6 (嘛你也知道..微软...OvO)
      p.s.2. 本喵是夜班人, 上午找可能找不到.
      p.s.3. 欢迎各路C#大神一起讨论OwO

      感谢各位前辈支持喵awa

      1 条回复 最后回复 回复 引用 9
      • DavidSciMeow
        DavidSciMeow 最后由 编辑

        今日更新
        在websocket内部进行了循环控制队列获取触发命令(事件)的返回值
        最新更新 2.1.0 ver
        有任何需要可以回复(大雾
        (真的有人注意到这个项目么qwq

        Orisland 1 条回复 最后回复 回复 引用 1
        • DavidSciMeow
          DavidSciMeow 最后由 编辑

          此回复已被删除!
          1 条回复 最后回复 回复 引用 1
          • Orisland
            Orisland 摸鱼 @DavidSciMeow 最后由 编辑

            @davidscimeow 由点赞数可以知道真的有人在看这个项目(因为太强不敢说话)

            DavidSciMeow 1 条回复 最后回复 回复 引用 0
            • DavidSciMeow
              DavidSciMeow @Orisland 最后由 编辑

              @orisland 哈哈谢谢支持w,我会慢慢更新整个框架的OvO

              1 条回复 最后回复 回复 引用 1
              • Executor-Cheng
                Executor-Cheng ⭐2021⭐ 最后由 编辑

                你的项目似乎不能开issue?

                DavidSciMeow 2 条回复 最后回复 回复 引用 0
                • DavidSciMeow
                  DavidSciMeow @Executor-Cheng 最后由 编辑

                  @executor-cheng 嗯,因为我还没确定东西,等我把Project弄好了这些就会开,他得弄个模板啥的OvO

                  1 条回复 最后回复 回复 引用 0
                  • DavidSciMeow
                    DavidSciMeow @Executor-Cheng 最后由 编辑

                    @executor-cheng 现在应该OK了(

                    1 条回复 最后回复 回复 引用 0
                    • DavidSciMeow
                      DavidSciMeow 最后由 编辑

                      2.2.0 基础功能已经完全完善, 支持发送命令后取出Websocket返回值, 多线程技术目前由.net内核控制,

                      • 所有事件均与HTTPAPI内部命名大致一致, 您可以打出 OnEvent 后使用上下键查看vs的API注释行来了解用法,
                      • 您也可以使用HTTPAPI的 Event 前一个单词进行搜索, 例如 原名 MemberMuteEvent -> ws事件名 OnEventMemberMuteEvent
                        • 您只需键入 OnEvent M E ↓↓ TAB 回车即可.
                      • 目前的事件处理异步性质由使用API的程序员决定, 如果您使用 async (s,e) =>{...} 代理, 那么您的事件处理必须完全异步.
                      • 您可以用本框架 只 进 行 监 听, 也可以使用本框架 只 进 行 发 送. 事件的监听和发送没有什么必然联系.
                      1 条回复 最后回复 回复 引用 0
                      • StarGods
                        StarGods 最后由 编辑

                        强 不敢言

                        1 条回复 最后回复 回复 引用 0
                        • Executor-Cheng
                          Executor-Cheng ⭐2021⭐ 最后由 Executor-Cheng 编辑

                          差不多读完了, 给你提一些建议吧: MeowMiraiLib/#1

                          DavidSciMeow 2 条回复 最后回复 回复 引用 0
                          • DavidSciMeow
                            DavidSciMeow @Executor-Cheng 最后由 编辑

                            @executor-cheng 好,等我详细看看设计问题,感谢意见

                            1 条回复 最后回复 回复 引用 0
                            • DavidSciMeow
                              DavidSciMeow @Executor-Cheng 最后由 编辑

                              @executor-cheng 已经回复,感谢大佬提点.

                              1 条回复 最后回复 回复 引用 0
                              • DavidSciMeow
                                DavidSciMeow 最后由 编辑

                                最新3.0.0版, 加装了异步处理的标准流程, 优化了事件处理, 独立(实例了)端和信息发送的方案.

                                感谢大佬 @Executor-Cheng 的初版建议和意见.

                                感谢各位大佬对小项目的关注

                                1. ##异步写法
                                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;
                                                        }
                                                }
                                            }
                                        }
                                    }
                                }
                                
                                1. ##同步写法
                                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;
                                                        }
                                                }
                                            }
                                        }
                                    }
                                }
                                
                                1 条回复 最后回复 回复 引用 0
                                • Executor-Cheng
                                  Executor-Cheng ⭐2021⭐ 最后由 编辑

                                  有个typo: OnFriendMessageRecieve → OnFriendMessageReceive
                                  然后我还是那句话, 能不开状态机那就不开状态机, 以下代码能达到预期 + 不改变方法签名 + 减少内存开销 + 提升性能

                                  public Task<bool> ConnectAsync()
                                  {
                                  	if (string.IsNullOrEmpty(url))
                                  	{
                                  		throw new("No Url was specified.");
                                  	}
                                  	return ws.OpenAsync();
                                  }
                                  
                                  DavidSciMeow 1 条回复 最后回复 回复 引用 0
                                  • DavidSciMeow
                                    DavidSciMeow @Executor-Cheng 最后由 编辑

                                    @executor-cheng OK, 等我对比试试

                                    1 条回复 最后回复 回复 引用 0
                                    • DavidSciMeow
                                      DavidSciMeow 最后由 编辑

                                      此回复已被删除!
                                      1 条回复 最后回复 回复 引用 1
                                      • Y
                                        yiyungent 最后由 yiyungent 编辑

                                        好耶,是学姐!

                                        1 条回复 最后回复 回复 引用 0
                                        • PeiPeiAo
                                          PeiPeiAo 摸鱼 最后由 编辑

                                          嘿嘿,瞅瞅去

                                          1 条回复 最后回复 回复 引用 0
                                          • 1 / 1
                                          • First post
                                            Last post
                                          Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact