public async Task Run(CommandArgs args) { if (!await args.Source.HasPermission("chatrecord", -1)) { return; } await args.Callback(RecordDatabaseManager.CountContains(args.Arg).ToString()); }
public async Task Run(CommandArgs args) { var splits = args.Arg.Trim().Split(' '); var group = long.Parse(splits[0]); var qq = long.Parse(splits[1]); var id = int.Parse(splits[2]); if (!await args.Source.HasPermission("management.antirevoke", group) && qq != args.Source.FromQQ) { return; } await args.Callback(RecordDatabaseManager.GetRecords().Where(r => r.qq == qq && r.group == group).SkipLast(id).LastOrDefault()?.message ?? ""); }
private static void PluginInitialize() { if (!Directory.Exists("Plugins")) { Directory.CreateDirectory("Plugins"); } foreach (var type in new [] { Assembly.GetExecutingAssembly() } .Concat(Directory.GetFiles("Plugins").Select(file => Assembly.LoadFrom(file))) .SelectMany(asm => asm.GetTypes())) { if (type.IsAbstract) { continue; } object o = null; if (type.IsAssignableTo(typeof(Configuration))) { Configuration.Register((Configuration)(o ??= Activator.CreateInstance(type))); Utils.Log(LoggerLevel.Info, $"registering {o} to configuration"); } if (type.IsAssignableTo(typeof(ICommand))) { MessageHandler.Register((ICommand)(o ??= Activator.CreateInstance(type))); Utils.Log(LoggerLevel.Info, $"registering {o} to command"); } if (type.IsAssignableTo(typeof(IMessageHandler))) { MessageHandler.Register((IMessageHandler)(o ??= Activator.CreateInstance(type))); Utils.Log(LoggerLevel.Info, $"registering {o} to handler"); } } RecordDatabaseManager.InitDatabase(); Configuration.LoadAll(); MessageHandler.SortHandler(); GC.Collect(); }
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { RecordDatabaseManager.Close(); Console.WriteLine(e.ExceptionObject); }