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()); } }
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(); } }
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; }
public Task LeaveGroupAsync() => BotAPI.LeaveGroupAsync(ID);
public Task KickMemberAsync(long qqID) => BotAPI.KickGroupMemberAsync(ID, qqID);
public Task UnmuteGroupAsync() => BotAPI.UnmuteGroupAsync(ID);
public Task MuteGroupAsync() => BotAPI.MuteGroupAsync(ID);
public Task UnmuteMemberAsync(long qqID) => BotAPI.UnmuteGroupMemberAsync(ID, qqID);
public Task MuteMemberAsync(long qqID, TimeSpan duration) => BotAPI.MuteGroupMemberAsync(ID, qqID, duration);
public Task <IGroupMemberCardInfo> GetMemberCardAsync(long qqID) => BotAPI.GetGroupMemberCardAsync(ID, qqID);
public async Task <int> SendVoiceAsync(string path) => await BotAPI.SendGroupMessageAsync(ID, await BotAPI.UploadVoiceAsync(UploadTarget.Group, path));
public Task <int> SendMessageAsync(params IMessageBase[] chain) => BotAPI.SendGroupMessageAsync(ID, chain);
public Task <int> SendMessageAsync(string message) => BotAPI.SendGroupMessageAsync(ID, new PlainMessage(message));
public async Task <int> SendVoiceAsync(string path) => await BotAPI.SendPrivateMessageAsync(ID, await BotAPI.UploadVoiceAsync(IsFriend ? UploadTarget.Friend : UploadTarget.Temp, path));
public void Bind(Update update, BotAPI api, DbContext db) { Db = db; Update = update; API = api; }