Example #1
0
        static async Task Main(string[] args)
        {
            // 把你要连接到的 mirai-api-http 所需的主机名/IP, 端口 和 AuthKey 全部填好
            // !! 最好不要用我例子里边的 key 和 端口, 请自己生成一个, 比如 System.Guid.NewGuid().ToString("n") !!
            MiraiHttpSessionOptions options = new MiraiHttpSessionOptions(Setting.Host, Setting.Port, Setting.AuthKey);

            // session 使用 DisposeAsync 模式, 所以使用 await using 自动调用 DisposeAsync 方法。
            // 你也可以不在这里 await using, 不过使用完 session 后请务必调用 DisposeAsync 方法
            await using MiraiHttpSession session = new MiraiHttpSession();
            // 把你实现了 Mirai_CSharp.Plugin.Interfaces 下的接口的类给 new 出来, 然后作为插件塞给 session
            NormalPlugin plugin = new NormalPlugin();

            // 你也可以一个个绑定事件。比如 session.GroupMessageEvt += plugin.GroupMessage;
            // 手动绑定事件后不要再调用AddPlugin, 否则可能导致重复调用
            session.AddPlugin(plugin);
            // 实例化MQ
            MQUtil.InitMQ();
            // 使用上边提供的信息异步连接到 mirai-api-http
            await session.ConnectAsync(options, Setting.QQ); // 自己填机器人QQ号

            while (true)
            {
                if (await Console.In.ReadLineAsync() == "exit")
                {
                    return;
                }
            }
        }
Example #2
0
        /// <summary>
        /// 更新操作,直接推送资源名称至MQ
        /// </summary>
        /// <param name="command">原命令</param>
        /// <returns>更新操作成功魔板</returns>
        public Task <PlainMessage> UpdateCommandHandler(string command)
        {
            var key   = command.Substring(2);
            var reply = Template.RenderUpdateActionResponse(key);

            MQUtil.PublishMQ(key);
            return(Task.FromResult(new PlainMessage(reply)));
        }
Example #3
0
        /// <summary>
        /// 查找资源,无资源则推送搜索命令
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        public async Task <PlainMessage> ResouceCommandHandler(string command)
        {
            var key   = command.Substring(1);
            var model = await ResourceAcquisition.SearchResourceFromQP(key);

            var reply = Template.RenderSearchResponse(key, model);

            reply.LogInfo();
            if (!model.Datas.Any())
            {
                MQUtil.PublishMQ(key);
            }
            return(new PlainMessage(reply));
        }