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; } } }
/// <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))); }
/// <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)); }