消息队列支持
This commit is contained in:
		
							parent
							
								
									0d369e426f
								
							
						
					
					
						commit
						8c98935588
					
				@ -16,7 +16,9 @@ using Mirai.Net.Sessions.Http.Managers;
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Data;
 | 
					using System.Data;
 | 
				
			||||||
using System.Drawing.Drawing2D;
 | 
					using System.Drawing.Drawing2D;
 | 
				
			||||||
 | 
					using System.Reflection;
 | 
				
			||||||
using System.Text;
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using Zack.EventBus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -78,6 +80,9 @@ options.AddDefaultPolicy(builder => builder.WithOrigins(urls)
 | 
				
			|||||||
IServiceCollection services = builder.Services;
 | 
					IServiceCollection services = builder.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var eventBusSec = builder.Configuration.GetSection("EventBus");
 | 
				
			||||||
 | 
					builder.Services.Configure<IntegrationEventRabbitMQOptions>(eventBusSec);
 | 
				
			||||||
 | 
					builder.Services.AddEventBus("qqbot_server", Assembly.GetExecutingAssembly());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
services.AddDbContext<IDBcontext>(opt =>
 | 
					services.AddDbContext<IDBcontext>(opt =>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
				
			|||||||
@ -5,6 +5,10 @@
 | 
				
			|||||||
      "Microsoft.AspNetCore": "Warning"
 | 
					      "Microsoft.AspNetCore": "Warning"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					  "EventBus": {
 | 
				
			||||||
 | 
					    "HostName": "127.0.0.1",
 | 
				
			||||||
 | 
					    "ExchangeName": "qqbot"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  "AllowedHosts": "*",
 | 
					  "AllowedHosts": "*",
 | 
				
			||||||
  "JWT": {
 | 
					  "JWT": {
 | 
				
			||||||
    "SigningKey": "JWT加密密钥(请严格保密)",
 | 
					    "SigningKey": "JWT加密密钥(请严格保密)",
 | 
				
			||||||
 | 
				
			|||||||
@ -64,6 +64,7 @@
 | 
				
			|||||||
    <PackageReference Include="RestSharp" Version="106.12.0" />
 | 
					    <PackageReference Include="RestSharp" Version="106.12.0" />
 | 
				
			||||||
    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
 | 
					    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
 | 
				
			||||||
    <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.1.0" />
 | 
					    <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.1.0" />
 | 
				
			||||||
 | 
					    <PackageReference Include="Zack.EventBus" Version="1.1.3" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
/*using asg_form.Controllers;
 | 
					using asg_form.Controllers;
 | 
				
			||||||
using Mirai.Net.Data.Messages.Concretes;
 | 
					using Mirai.Net.Data.Messages.Concretes;
 | 
				
			||||||
using Mirai.Net.Data.Messages;
 | 
					using Mirai.Net.Data.Messages;
 | 
				
			||||||
using Mirai.Net.Data.Messages.Receivers;
 | 
					using Mirai.Net.Data.Messages.Receivers;
 | 
				
			||||||
@ -20,25 +20,46 @@ using Microsoft.AspNetCore.Connections;
 | 
				
			|||||||
using NPOI.SS.Formula.Functions;
 | 
					using NPOI.SS.Formula.Functions;
 | 
				
			||||||
using Onebot.Protocol;
 | 
					using Onebot.Protocol;
 | 
				
			||||||
using Onebot.Protocol.Models.Messages;
 | 
					using Onebot.Protocol.Models.Messages;
 | 
				
			||||||
 | 
					using Zack.EventBus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace asg_form
 | 
					namespace asg_form
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class qqbot:BackgroundService
 | 
					    [EventName("查询选手")]
 | 
				
			||||||
 | 
					    public class qqbot:IIntegrationEventHandler
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        private void setTaskAtFixedTime()
 | 
					        private IEventBus eventBus;
 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            DateTime now = DateTime.Now;
 | 
					 | 
				
			||||||
            DateTime oneOClock = DateTime.Today.AddHours(1.0); //凌晨1:00
 | 
					 | 
				
			||||||
            if (now > oneOClock)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
               // Console.WriteLine("=======================================>");
 | 
					 | 
				
			||||||
                oneOClock = oneOClock.AddDays(5.0);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            int msUntilFour = (int)((oneOClock - now).TotalMilliseconds);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var t = new System.Threading.Timer(doAt1AM);
 | 
					        public qqbot(IEventBus eventBus)
 | 
				
			||||||
            t.Change(msUntilFour, Timeout.Infinite);
 | 
					        {
 | 
				
			||||||
 | 
					            this.eventBus = eventBus;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        public Task Handle(string eventName, string eventData)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (eventName == "查询选手")
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                try
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    TestDbContext ctx = new TestDbContext();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    string msg = "";
 | 
				
			||||||
 | 
					                    var roles = ctx.Roles.Include(a => a.form).Where(a => a.role_name.IndexOf(eventData) >= 0).ToList();
 | 
				
			||||||
 | 
					                    foreach (var role in roles)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        msg = $"{msg}\r\n姓名:{role.role_name}\r\n第五人格ID:{role.role_id}\r\n选手id:{role.Id}\r\n阵营:{role.role_lin}\r\n属于队伍:{role.form.team_name}\r\n";
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    eventBus.Publish("查询选手req",msg);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                catch
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return Task.CompletedTask;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static bool isToday(DateTime dt)
 | 
					        public static bool isToday(DateTime dt)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            DateTime today = DateTime.Today;
 | 
					            DateTime today = DateTime.Today;
 | 
				
			||||||
@ -52,188 +73,139 @@ namespace asg_form
 | 
				
			|||||||
        private async void doAt1AM(object state)
 | 
					        private async void doAt1AM(object state)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            //执行功能...
 | 
					            //执行功能...
 | 
				
			||||||
            try
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                TestDbContext db = new TestDbContext();
 | 
					 | 
				
			||||||
                var sh = db.team_Games.ToList();
 | 
					 | 
				
			||||||
               var sh1= sh.Where(a=>isToday(a.opentime)).ToList();
 | 
					 | 
				
			||||||
                string msg = "";
 | 
					 | 
				
			||||||
                if (sh1 == null)
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    msg = "<今日无赛程!>";
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                else
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    foreach (var a in sh1)
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        msg = $"{msg}\r\r{a.team1_name} VS {a.team2_name}";
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                await MessageManager.SendGroupMessageAsync("870248618", $"今日赛程:\r\n{msg}\r\n请有比赛的解说提前准备好。");
 | 
					 | 
				
			||||||
                await Task.Delay(3000);
 | 
					 | 
				
			||||||
                await MessageManager.SendGroupMessageAsync("456414070", $"今日赛程:\r\n{msg}\r\n。直播地址:\r\nhttps://live.bilibili.com/24208371");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                Console.WriteLine("开始备份数据库");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
               
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            catch
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            //再次设定
 | 
					 | 
				
			||||||
            setTaskAtFixedTime();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
                   try
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                //定时任务
 | 
					 | 
				
			||||||
                    setTaskAtFixedTime();
 | 
					 | 
				
			||||||
                var client = new OnebotClient(ConnectionFactory.FromWebsocket("localhost", 7890, "WHO_S_YOUR_DADDY"));
 | 
					 | 
				
			||||||
                await client.SendPrivateMessageAsync("10000", new Message()
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                MessageSegment.Text("hello")
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
                client.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                bot.EventReceived
 | 
					 | 
				
			||||||
                          .OfType<DroppedEvent>()
 | 
					 | 
				
			||||||
    .Subscribe(async receiver =>
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
         await Task.Delay(10000);
 | 
					 | 
				
			||||||
        await ExecuteAsync(stoppingToken);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    bot.MessageReceived
 | 
					 | 
				
			||||||
        .OfType<GroupMessageReceiver>()
 | 
					 | 
				
			||||||
        .Subscribe(async x =>
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            try
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                if (x.MessageChain.GetPlainMessage() == "近期赛程")
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    TestDbContext testDb = new TestDbContext();
 | 
					 | 
				
			||||||
                    int q = testDb.team_Games.Count();
 | 
					 | 
				
			||||||
                    var a = testDb.team_Games.Where(a => a.opentime >= DateTime.Now).Take(7);
 | 
					 | 
				
			||||||
                    string msg = "";
 | 
					 | 
				
			||||||
                    foreach (var b in a)
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        msg = $"{msg}\r\n{b.team1_name} VS {b.team2_name}\r\n时间:{b.opentime.ToString("f")}";
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    await MessageManager.SendGroupMessageAsync(x.GroupId, msg);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                if (x.MessageChain.GetPlainMessage() == "后端状态")
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    string msg = $"CPU占用:{SystemInfo.CpuLoad.ToString("f2")}\r\n内存占用:{SystemInfo.MemoryAvailable.ToString("f2")}\r\n部署系统:{Windows.GetOsVersion()}";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        await MessageManager.SendGroupMessageAsync(x.GroupId, msg);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                if (x.MessageChain.GetPlainMessage() == "参赛队伍")
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    TestDbContext testDb = new TestDbContext();
 | 
					 | 
				
			||||||
                    var team = testDb.Forms.Select(a => a.team_name);
 | 
					 | 
				
			||||||
                    string msg = "";
 | 
					 | 
				
			||||||
                    foreach (var t in team)
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        msg = $"{msg} {t}";
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    await MessageManager.SendGroupMessageAsync(x.GroupId, $"在所有比赛中有以下队伍参赛:\r\n{string.Join(" , ",team)}");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                if (x.MessageChain.GetPlainMessage() == "查询冠军")
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    TestDbContext ctx = new TestDbContext();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                   var teams = ctx.Champions.Include(a=>a.events).Include(a=>a.form.role).Select(a => new {a.form,a.events,a.msg}).ToList();
 | 
					 | 
				
			||||||
                    string msg = "";
 | 
					 | 
				
			||||||
                    foreach (var t in teams)
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        string role = "";
 | 
					 | 
				
			||||||
      
 | 
					 | 
				
			||||||
                        foreach (var t2 in t.form.role)
 | 
					 | 
				
			||||||
                        {
 | 
					 | 
				
			||||||
                            role = $"{role}  {t2.role_name}";
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                        msg = $"{msg}\r\n队伍名称:{t.form.team_name}\r\n队员:{role}\r\n属于:{t.events.name}\r\n简介:{t.msg}\r\n";
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    await MessageManager.SendGroupMessageAsync(x.GroupId, $"拥有以下冠军:{msg}");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            catch(Exception ex) 
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                await MessageManager.SendGroupMessageAsync(x.GroupId, $"错误:{ex.Message}");
 | 
					 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        });
 | 
					
 | 
				
			||||||
 | 
					   //     protected override async Task ExecuteAsync(CancellationToken stoppingToken)
 | 
				
			||||||
 | 
					   //     {
 | 
				
			||||||
 | 
					   //                try
 | 
				
			||||||
 | 
					   //         {
 | 
				
			||||||
 | 
					               
 | 
				
			||||||
 | 
					   //             var client = new OnebotClient(ConnectionFactory.FromWebsocket("localhost", 7890, "WHO_S_YOUR_DADDY"));
 | 
				
			||||||
 | 
					   //             await client.SendPrivateMessageAsync("10000", new Message()
 | 
				
			||||||
 | 
					   //             {
 | 
				
			||||||
 | 
					   //             MessageSegment.Text("hello")
 | 
				
			||||||
 | 
					   //             });
 | 
				
			||||||
 | 
					   //             client.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   //             bot.EventReceived
 | 
				
			||||||
 | 
					   //                       .OfType<DroppedEvent>()
 | 
				
			||||||
 | 
					   // .Subscribe(async receiver =>
 | 
				
			||||||
 | 
					   // {
 | 
				
			||||||
 | 
					   //      await Task.Delay(10000);
 | 
				
			||||||
 | 
					   //     await ExecuteAsync(stoppingToken);
 | 
				
			||||||
 | 
					   // });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   //                 bot.MessageReceived
 | 
				
			||||||
 | 
					   //     .OfType<GroupMessageReceiver>()
 | 
				
			||||||
 | 
					   //     .Subscribe(async x =>
 | 
				
			||||||
 | 
					   //     {
 | 
				
			||||||
 | 
					   //         try
 | 
				
			||||||
 | 
					   //         {
 | 
				
			||||||
 | 
					   //             if (x.MessageChain.GetPlainMessage() == "近期赛程")
 | 
				
			||||||
 | 
					   //             {
 | 
				
			||||||
 | 
					   //                 TestDbContext testDb = new TestDbContext();
 | 
				
			||||||
 | 
					   //                 int q = testDb.team_Games.Count();
 | 
				
			||||||
 | 
					   //                 var a = testDb.team_Games.Where(a => a.opentime >= DateTime.Now).Take(7);
 | 
				
			||||||
 | 
					   //                 string msg = "";
 | 
				
			||||||
 | 
					   //                 foreach (var b in a)
 | 
				
			||||||
 | 
					   //                 {
 | 
				
			||||||
 | 
					   //                     msg = $"{msg}\r\n{b.team1_name} VS {b.team2_name}\r\n时间:{b.opentime.ToString("f")}";
 | 
				
			||||||
 | 
					   //                 }
 | 
				
			||||||
 | 
					   //                 await MessageManager.SendGroupMessageAsync(x.GroupId, msg);
 | 
				
			||||||
 | 
					   //             }
 | 
				
			||||||
 | 
					   //             if (x.MessageChain.GetPlainMessage() == "后端状态")
 | 
				
			||||||
 | 
					   //             {
 | 
				
			||||||
 | 
					   //                 string msg = $"CPU占用:{SystemInfo.CpuLoad.ToString("f2")}\r\n内存占用:{SystemInfo.MemoryAvailable.ToString("f2")}\r\n部署系统:{Windows.GetOsVersion()}";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   //                     await MessageManager.SendGroupMessageAsync(x.GroupId, msg);
 | 
				
			||||||
 | 
					   //             }
 | 
				
			||||||
 | 
					   //             if (x.MessageChain.GetPlainMessage() == "参赛队伍")
 | 
				
			||||||
 | 
					   //             {
 | 
				
			||||||
 | 
					   //                 TestDbContext testDb = new TestDbContext();
 | 
				
			||||||
 | 
					   //                 var team = testDb.Forms.Select(a => a.team_name);
 | 
				
			||||||
 | 
					   //                 string msg = "";
 | 
				
			||||||
 | 
					   //                 foreach (var t in team)
 | 
				
			||||||
 | 
					   //                 {
 | 
				
			||||||
 | 
					   //                     msg = $"{msg} {t}";
 | 
				
			||||||
 | 
					   //                 }
 | 
				
			||||||
 | 
					   //                 await MessageManager.SendGroupMessageAsync(x.GroupId, $"在所有比赛中有以下队伍参赛:\r\n{string.Join(" , ",team)}");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   //             }
 | 
				
			||||||
 | 
					   //             if (x.MessageChain.GetPlainMessage() == "查询冠军")
 | 
				
			||||||
 | 
					   //             {
 | 
				
			||||||
 | 
					   //                 TestDbContext ctx = new TestDbContext();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   //                var teams = ctx.Champions.Include(a=>a.events).Include(a=>a.form.role).Select(a => new {a.form,a.events,a.msg}).ToList();
 | 
				
			||||||
 | 
					   //                 string msg = "";
 | 
				
			||||||
 | 
					   //                 foreach (var t in teams)
 | 
				
			||||||
 | 
					   //                 {
 | 
				
			||||||
 | 
					   //                     string role = "";
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					   //                     foreach (var t2 in t.form.role)
 | 
				
			||||||
 | 
					   //                     {
 | 
				
			||||||
 | 
					   //                         role = $"{role}  {t2.role_name}";
 | 
				
			||||||
 | 
					   //                     }
 | 
				
			||||||
 | 
					   //                     msg = $"{msg}\r\n队伍名称:{t.form.team_name}\r\n队员:{role}\r\n属于:{t.events.name}\r\n简介:{t.msg}\r\n";
 | 
				
			||||||
 | 
					   //                 }
 | 
				
			||||||
 | 
					   //                 await MessageManager.SendGroupMessageAsync(x.GroupId, $"拥有以下冠军:{msg}");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   //             }
 | 
				
			||||||
 | 
					   //         }
 | 
				
			||||||
 | 
					   //         catch(Exception ex) 
 | 
				
			||||||
 | 
					   //         {
 | 
				
			||||||
 | 
					   //             await MessageManager.SendGroupMessageAsync(x.GroupId, $"错误:{ex.Message}");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   //         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   //     });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    bot.MessageReceived
 | 
					   //                 bot.MessageReceived
 | 
				
			||||||
     .OfType<GroupMessageReceiver>()
 | 
					   //  .OfType<GroupMessageReceiver>()
 | 
				
			||||||
     .Where(a=>a.MessageChain.GetPlainMessage().StartsWith("查询战队 "))
 | 
					   //  .Where(a=>a.MessageChain.GetPlainMessage().StartsWith("查询战队 "))
 | 
				
			||||||
                    .Subscribe(async x =>
 | 
					   //                 .Subscribe(async x =>
 | 
				
			||||||
                    {
 | 
					   //                 {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        try {
 | 
					   //                     try {
 | 
				
			||||||
                            TestDbContext ctx = new TestDbContext();
 | 
					   //                         TestDbContext ctx = new TestDbContext();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            string result = x.MessageChain.GetPlainMessage().Substring(5); // 截取从'o'之后的字符串
 | 
					   //                         string result = x.MessageChain.GetPlainMessage().Substring(5); // 截取从'o'之后的字符串
 | 
				
			||||||
                            Console.WriteLine(result);
 | 
					   //                         Console.WriteLine(result);
 | 
				
			||||||
                            List<form> teams = ctx.Forms.Include(a => a.role).Where(a => a.team_name.IndexOf(result) >= 0).ToList();
 | 
					   //                         List<form> teams = ctx.Forms.Include(a => a.role).Where(a => a.team_name.IndexOf(result) >= 0).ToList();
 | 
				
			||||||
                            string msg = "";
 | 
					   //                         string msg = "";
 | 
				
			||||||
                            foreach (var t in teams)
 | 
					   //                         foreach (var t in teams)
 | 
				
			||||||
                            {
 | 
					   //                         {
 | 
				
			||||||
                                string role = "";
 | 
					   //                             string role = "";
 | 
				
			||||||
                                foreach (var t2 in t.role)
 | 
					   //                             foreach (var t2 in t.role)
 | 
				
			||||||
                                {
 | 
					   //                             {
 | 
				
			||||||
                                    role = $"{role}  {t2.role_name}";
 | 
					   //                                 role = $"{role}  {t2.role_name}";
 | 
				
			||||||
                                }
 | 
					   //                             }
 | 
				
			||||||
                                msg = $"{msg}\r\n队伍名称:{t.team_name}\r\n队员:{role}\r\n";
 | 
					   //                             msg = $"{msg}\r\n队伍名称:{t.team_name}\r\n队员:{role}\r\n";
 | 
				
			||||||
                            }
 | 
					   //                         }
 | 
				
			||||||
                            await MessageManager.SendGroupMessageAsync(x.GroupId, msg);
 | 
					   //                         await MessageManager.SendGroupMessageAsync(x.GroupId, msg);
 | 
				
			||||||
                        }
 | 
					   //                     }
 | 
				
			||||||
                        catch
 | 
					   //                     catch
 | 
				
			||||||
                        {
 | 
					   //                     {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        }
 | 
					   //                     }
 | 
				
			||||||
                     
 | 
					                     
 | 
				
			||||||
                    });
 | 
					   //                 });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    bot.MessageReceived
 | 
					   //                 bot.MessageReceived
 | 
				
			||||||
   .OfType<GroupMessageReceiver>()
 | 
					   //.OfType<GroupMessageReceiver>()
 | 
				
			||||||
   .Where(a => a.MessageChain.GetPlainMessage().StartsWith("查询选手 "))
 | 
					   //.Where(a => a.MessageChain.GetPlainMessage().StartsWith("查询选手 "))
 | 
				
			||||||
                  .Subscribe(async x =>
 | 
					   //               .Subscribe(async x =>
 | 
				
			||||||
                  {
 | 
					   //               {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                      try
 | 
					 | 
				
			||||||
                      {
 | 
					 | 
				
			||||||
                          TestDbContext ctx = new TestDbContext();
 | 
					 | 
				
			||||||
                    
 | 
					                    
 | 
				
			||||||
                          string result = x.MessageChain.GetPlainMessage().Substring(5); // 截取从'o'之后的字符串
 | 
					 | 
				
			||||||
                          Console.WriteLine(result);
 | 
					 | 
				
			||||||
                          string msg = "";
 | 
					 | 
				
			||||||
                         var roles= ctx.Roles.Include(a => a.form).Where(a => a.role_name.IndexOf(result) >= 0).ToList();
 | 
					 | 
				
			||||||
                          foreach(var role in roles)
 | 
					 | 
				
			||||||
                          {
 | 
					 | 
				
			||||||
                              msg = $"{msg}\r\n姓名:{role.role_name}\r\n第五人格ID:{role.role_id}\r\n选手id:{role.Id}\r\n阵营:{role.role_lin}\r\n属于队伍:{role.form.team_name}\r\n";
 | 
					 | 
				
			||||||
                          }
 | 
					 | 
				
			||||||
                          await MessageManager.SendGroupMessageAsync(x.GroupId,$"搜索到以下结果:\r\n{msg}");
 | 
					 | 
				
			||||||
                      }
 | 
					 | 
				
			||||||
                      catch
 | 
					 | 
				
			||||||
                      {
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                      }
 | 
					   //               });
 | 
				
			||||||
 | 
					 | 
				
			||||||
                  });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -245,17 +217,15 @@ namespace asg_form
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    Console.ReadLine();
 | 
					   //             }
 | 
				
			||||||
                    bot.Dispose();
 | 
					   //             catch
 | 
				
			||||||
                }
 | 
					   //             {
 | 
				
			||||||
                catch
 | 
					                   
 | 
				
			||||||
                {
 | 
					   //             }
 | 
				
			||||||
                    Console.WriteLine("bot启动失败  ~~~~~     ");
 | 
					            
 | 
				
			||||||
                    await Task.Delay(10000);
 | 
					   //     }
 | 
				
			||||||
                }
 | 
					
 | 
				
			||||||
       
 | 
					       
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
@ -3,11 +3,20 @@ using Flandre.Core.Common;
 | 
				
			|||||||
using Flandre.Core.Messaging;
 | 
					using Flandre.Core.Messaging;
 | 
				
			||||||
using Flandre.Framework.Common;
 | 
					using Flandre.Framework.Common;
 | 
				
			||||||
using Flandre.Framework.Routing;
 | 
					using Flandre.Framework.Routing;
 | 
				
			||||||
 | 
					using Zack.EventBus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace qqbot
 | 
					namespace qqbot
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public sealed class ExamplePlugin : Plugin
 | 
					    public sealed class ExamplePlugin : Plugin
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        private IEventBus eventBus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public ExamplePlugin(IEventBus eventBus)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            this.eventBus = eventBus;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// 每次收到消息时触发。
 | 
					        /// 每次收到消息时触发。
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
@ -43,15 +52,10 @@ namespace qqbot
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            try
 | 
					            try
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                TestDbContext ctx = new TestDbContext();
 | 
					                eventBus.Publish("查询选手", name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                string msg = "";
 | 
					
 | 
				
			||||||
                var roles = ctx.Roles.Where(a => a.role_name.IndexOf(name) >= 0).ToList();
 | 
					                return null;
 | 
				
			||||||
                foreach (var role in roles)
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    msg = $"{msg}\r\n姓名:{role.role_name}\r\n第五人格ID:{role.role_id}\r\n选手id:{role.Id}\r\n阵营:{role.role_lin}\r\n";
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                return msg;
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            catch
 | 
					            catch
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,10 @@
 | 
				
			|||||||
using Flandre.Adapters.OneBot.Extensions;
 | 
					using Flandre.Adapters.OneBot.Extensions;
 | 
				
			||||||
using Flandre.Framework;
 | 
					using Flandre.Framework;
 | 
				
			||||||
 | 
					using Microsoft.Extensions.DependencyInjection;
 | 
				
			||||||
using Microsoft.Extensions.Hosting;
 | 
					using Microsoft.Extensions.Hosting;
 | 
				
			||||||
using qqbot;
 | 
					using qqbot;
 | 
				
			||||||
 | 
					using System.Reflection;
 | 
				
			||||||
 | 
					using Zack.EventBus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var builder = FlandreApp.CreateBuilder(new HostApplicationBuilderSettings
 | 
					var builder = FlandreApp.CreateBuilder(new HostApplicationBuilderSettings
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -14,6 +17,15 @@ var builder = FlandreApp.CreateBuilder(new HostApplicationBuilderSettings
 | 
				
			|||||||
builder.Adapters.AddOneBot(builder.Configuration.GetSection("Adapters:OneBot"));
 | 
					builder.Adapters.AddOneBot(builder.Configuration.GetSection("Adapters:OneBot"));
 | 
				
			||||||
builder.Plugins.Add<ExamplePlugin>();
 | 
					builder.Plugins.Add<ExamplePlugin>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var eventBusSec = builder.Configuration.GetSection("EventBus");
 | 
				
			||||||
 | 
					builder.Services.Configure<IntegrationEventRabbitMQOptions>(eventBusSec);
 | 
				
			||||||
 | 
					builder.Services.AddEventBus("qqbot_client", Assembly.GetExecutingAssembly());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var app = builder.Build();
 | 
					var app = builder.Build();
 | 
				
			||||||
// 添加内置中间件。
 | 
					// 添加内置中间件。
 | 
				
			||||||
// 这些中间件保证 Flandre 的正常运转。你也可以加入自己的中间件,并灵活调整其顺序。
 | 
					// 这些中间件保证 Flandre 的正常运转。你也可以加入自己的中间件,并灵活调整其顺序。
 | 
				
			||||||
 | 
				
			|||||||
@ -4,6 +4,10 @@
 | 
				
			|||||||
      "Default": "Information"
 | 
					      "Default": "Information"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					  "EventBus": {
 | 
				
			||||||
 | 
					    "HostName": "127.0.0.1",
 | 
				
			||||||
 | 
					    "ExchangeName": "qqbot"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  "Adapters": {
 | 
					  "Adapters": {
 | 
				
			||||||
    "OneBot": {
 | 
					    "OneBot": {
 | 
				
			||||||
      "Bots": [
 | 
					      "Bots": [
 | 
				
			||||||
 | 
				
			|||||||
@ -13,6 +13,7 @@
 | 
				
			|||||||
        <PackageReference Include="Flandre.Framework" Version="1.0.0-rc.11" />
 | 
					        <PackageReference Include="Flandre.Framework" Version="1.0.0-rc.11" />
 | 
				
			||||||
        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.8" />
 | 
					        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.8" />
 | 
				
			||||||
        <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.8" />
 | 
					        <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.8" />
 | 
				
			||||||
 | 
					        <PackageReference Include="Zack.EventBus" Version="1.1.3" />
 | 
				
			||||||
    </ItemGroup>
 | 
					    </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <ItemGroup>
 | 
					    <ItemGroup>
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user