Example #1
0
        public static void OnMessage(MessageSource src, QMessage msg)
        {
            try
            {
                QMessage newMsg = msg;

                bool release = MiddlewareCore.OnMessage(ref src, ref newMsg);
                if (release)
                {
                    int stat = ModuleCore.OnMessage(src, newMsg);
                    ServiceCore.OnMessage(src, newMsg, msg, stat != -1, stat >= 0 ? ModuleCore.Modules[stat] : null);
                }
            }
            catch (Exception e)
            {
                StringBuilder sb = new(DateTime.Now.ToString());

                sb.Append($"\nMessage: ");
                if (src.IsGroup)
                {
                    sb.Append($"[{src.group!.ID}] ");
                }
                sb.Append($"[{src.user.ID}] ");
                sb.Append(msg);

                sb.Append($"\n{e}");

                if (BotReg.GetBool("CORE/LOG_ERROR", true) && BotAuth.HasOwner)
                {
                    _ = BotAPI.SendPrivateMessageAsync(BotAuth.Owner, new PlainMessage(sb.ToString()));
                }
                sb.Append("\n\n");
                File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + "/log_error.txt", sb.ToString());
            }
        }
Example #2
0
 public static void OnFriendRequest(IApplyResponseArgs args)
 {
     if (BotReg.GetBool("CORE/ALLOW_FRIEND_REQUEST", false))
     {
         BotAPI.HandleNewFriendApplyAsync(args, FriendApplyAction.Allow).Wait();
         if (BotAuth.HasOwner && BotReg.GetBool("LOG/FRIEND_REQUEST", true))
         {
             _ = BotAPI.SendPrivateMessageAsync(BotAuth.Owner, new PlainMessage($"Accept friend request: {args.FromQQ}"));
         }
         _ = BotInfo.ReloadFriends();
     }
 }
Example #3
0
        public static async Task Init(MiraiHttpSession session, BotStartupConfig config)
        {
            BotAPI.Init(session);

            BotReg.Init();
            BotAuth.Init();
            await BotInfo.ReloadAll();

            MiddlewareCore.Init(config.Middlewares.ToArray());
            ModuleCore.Init(config.assembly);
            ServiceCore.Init(config.assembly);
            ComponentCore.Init(config.assembly);

            _ = Task.Run(async() =>
            {
                TimeSpan delta = config.autoSave;
                while (AutoSave && delta > TimeSpan.Zero)
                {
                    await Task.Delay(config.autoSave);
                    foreach (var w in MiddlewareCore.Middlewares)
                    {
                        w.SaveData();
                    }
                    foreach (var m in ModuleCore.Modules)
                    {
                        m.SaveData();
                    }
                    foreach (var s in ServiceCore.Services)
                    {
                        s.SaveData();
                    }
                    foreach (var c in ComponentCore.Components)
                    {
                        c.SaveData();
                    }
                }
            });
        }
 public void Bind(Update update, BotAPI api, DBContext db)
 {
     Update = update;
     API    = api;
     DB     = db;
 }
Example #5
0
 public Task LeaveGroupAsync()
 => BotAPI.LeaveGroupAsync(ID);
Example #6
0
 public Task KickMemberAsync(long qqID)
 => BotAPI.KickGroupMemberAsync(ID, qqID);
Example #7
0
 public Task UnmuteGroupAsync()
 => BotAPI.UnmuteGroupAsync(ID);
Example #8
0
 public Task MuteGroupAsync()
 => BotAPI.MuteGroupAsync(ID);
Example #9
0
 public Task UnmuteMemberAsync(long qqID)
 => BotAPI.UnmuteGroupMemberAsync(ID, qqID);
Example #10
0
 public Task MuteMemberAsync(long qqID, TimeSpan duration)
 => BotAPI.MuteGroupMemberAsync(ID, qqID, duration);
Example #11
0
 public Task <IGroupMemberCardInfo> GetMemberCardAsync(long qqID)
 => BotAPI.GetGroupMemberCardAsync(ID, qqID);
Example #12
0
 public async Task <int> SendVoiceAsync(string path)
 => await BotAPI.SendGroupMessageAsync(ID, await BotAPI.UploadVoiceAsync(UploadTarget.Group, path));
Example #13
0
 public Task <int> SendMessageAsync(params IMessageBase[] chain)
 => BotAPI.SendGroupMessageAsync(ID, chain);
Example #14
0
 public Task <int> SendMessageAsync(string message)
 => BotAPI.SendGroupMessageAsync(ID, new PlainMessage(message));
Example #15
0
 public async Task <int> SendVoiceAsync(string path)
 => await BotAPI.SendPrivateMessageAsync(ID, await BotAPI.UploadVoiceAsync(IsFriend ? UploadTarget.Friend : UploadTarget.Temp, path));
Example #16
0
 public void Bind(Update update, BotAPI api, DbContext db)
 {
     Db     = db;
     Update = update;
     API    = api;
 }