private string GetPluginString(MessagePlugin plugin) { return (string.Format("{0} ({1}){2}", plugin.Name, plugin.GetType().Name, plugin is CommandPlugin cmd ? $" ({string.Join(", ", cmd.Commands)})" : "")); }
/// <summary> /// 批量保存 /// </summary> /// <param name="bulkSize"></param> /// <returns></returns> public virtual int BulkSaveChanges(bool validateOnSaveEnabled = true, int bulkSize = 64) { // 发送消息 Messager.SendMessage(dbContext, CurrentMessager); if (MessagePlugin != null) { MessagePlugin.ApplyChange(); } return(dbContext.BulkSaveChanges(validateOnSaveEnabled, bulkSize)); }
/// <summary> /// 保存修改 /// </summary> /// <returns></returns> public virtual int SaveChanges() { try { // 发送消息 Messager.SendMessage(dbContext, CurrentMessager); if (MessagePlugin != null) { MessagePlugin.ApplyChange(); } ObjectContext objectContext = ((IObjectContextAdapter)this.dbContext).ObjectContext; // 获取变化的实体信息 var changeList = objectContext.ObjectStateManager .GetObjectStateEntries(EntityState.Added | EntityState.Modified | System.Data.Entity.EntityState.Deleted) .Select(c => new EntityInfo { TableName = this.GetTableName(c.Entity), StateEntity = c, ColumnList = GetEntityInfo(c) }) .Where(c => !string.IsNullOrWhiteSpace(c.TableName)) .ToList(); foreach (var item in changeList) { // 判断该表是否忽略保存 if (IgnoreEntityEntityList.Contains(item.TableName)) { item.StateEntity.AcceptChanges(); } } return(this.dbContext.SaveChanges()); } catch (DbEntityValidationException dbEx) { foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { text(string.Format("Class: {0}, Property: {1}, Error: {2}", validationErrors.Entry.Entity.GetType().FullName, validationError.PropertyName, validationError.ErrorMessage)); } } throw dbEx; } catch (Exception ex) { throw ex; } }
private CoolQRouteMessage DisablePlugin() { var inputs = EnabledPlugin.Split(','); if (inputs.Length == 1) { MessagePlugin plugin = InnerGetPlugin(EnabledPlugin); if (plugin == null) { return(_routeMsg.ToSource($"指定插件 \"{EnabledPlugin}\" 不存在.")); } if (_disabled.Contains(plugin.Guid)) { return(_routeMsg.ToSource($"指定插件 \"{GetPluginString(plugin)}\" 已被禁用.")); } _disabled.Add(plugin.Guid); SaveDisableSettings(); return(_routeMsg.ToSource($"已经禁用插件 \"{GetPluginString(plugin)}\".")); } var sb = new StringBuilder(); var plugins = inputs.Select(k => (k, InnerGetPlugin(k))); foreach (var(input, plugin) in plugins) { sb.Append(input + ": "); if (plugin == null) { sb.AppendLine($"指定插件 \"{input}\" 不存在."); continue; } if (_disabled.Contains(plugin.Guid)) { sb.AppendLine($"指定插件 \"{GetPluginString(plugin)}\" 已被禁用."); continue; } _disabled.Add(plugin.Guid); sb.AppendLine($"已经禁用插件 \"{GetPluginString(plugin)}\"."); } SaveDisableSettings(); return(_routeMsg.ToSource(sb.ToString().Trim('\n', '\r'))); }
public static async Task Main() { Configure(); MiraiHttpSessionOptions options = new MiraiHttpSessionOptions(configuration["ip"], Convert.ToInt32(configuration["port"]), configuration["authKey"]); MessagePlugin plugin = new MessagePlugin(db, configuration, commandList); MiraiHttpSession session = new MiraiHttpSession(); session.AddPlugin(plugin); // 使用上边提供的信息异步连接到 mirai-api-http await session.ConnectAsync(options, Convert.ToInt64(configuration["botQQ"])); //机器人QQ号 Console.WriteLine("服务启动~~"); while (true) { Thread.Sleep(1000); if (await Console.In.ReadLineAsync() == "exit") { return; } } }