コード例 #1
0
        private void SendCommande(string consoleText)
        {
            if (consoleText == "")
            {
                return;
            }
            consoleText = consoleText.ToUpper();
            string cmd = "";

            string[]       args   = GetArguments(consoleText, out cmd);
            ECommandResult result = ECommandResult.Failed;

            if (cmdNames.Contains(cmd))
            {
                result = InvokeOnSendCommand(cmd, args);
            }
            Color color = result == ECommandResult.Successed ? sucessCmd : failedCmd;

            string[] type = new string[args.Length + 1];
            args.CopyTo(type, 1);
            type[0] = cmd;
            if (result == ECommandResult.Successed)
            {
                InvokeOnSucessedCommand(type);
            }
            else
            {
                InvokeOnFailedCommand(type);
            }

            historic.Enqueue(new SLineHistory(consoleText, color));
            ViewHistory();
        }
コード例 #2
0
ファイル: UnloadModuleCommand.cs プロジェクト: BigETI/Modibot
        /// <summary>
        /// Execute command
        /// </summary>
        /// <param name="commandArguments">Command arguments</param>
        /// <returns></returns>
        public ECommandResult Execute(ICommandArguments commandArguments)
        {
            ECommandResult ret = ECommandResult.Failed;

            if (commandArguments.Arguments.Count > 0)
            {
                string name = commandArguments.RawArguments;
                if (commandArguments.Bot.LoadedModules.ContainsKey(commandArguments.RawArguments))
                {
                    commandArguments.Bot.UnloadModuleAsync(commandArguments.Bot.LoadedModules[commandArguments.RawArguments]).GetAwaiter().GetResult();
                    ret = ECommandResult.Successful;
                    IChat[] chat_services = commandArguments.Bot.GetServices <IChat>();
                    if (chat_services != null)
                    {
                        foreach (IChat chat in chat_services)
                        {
                            if (chat != null)
                            {
                                chat.SendMessage("Module \"" + commandArguments.RawArguments + "\" has been successfully unloaded.", commandArguments.MessageChannel);
                            }
                        }
                    }
                }
            }
            return(ret);
        }
コード例 #3
0
        /// <summary>
        /// Execute command
        /// </summary>
        /// <param name="commandArguments">Command arguments</param>
        /// <returns>Command result</returns>
        public ECommandResult Execute(ICommandArguments commandArguments)
        {
            ECommandResult ret = ECommandResult.Failed;

            IModules[] modules_services = commandArguments.Bot.GetServices <IModules>();
            IChat[]    chat_services    = commandArguments.Bot.GetServices <IChat>();
            if ((modules_services != null) && (chat_services != null))
            {
                List <Embed> embeds = new List <Embed>();
                foreach (IModules modules in modules_services)
                {
                    EmbedBuilder embed_builder = PrepareEmbedBuilder();
                    foreach (IModule module in modules.LoadedModules.Values)
                    {
                        embed_builder.AddField(module.Name, "Version: " + module.Version + Environment.NewLine + "Author: " + module.Author + Environment.NewLine + "URI: " + module.URI);
                    }
                    embeds.Add(embed_builder.Build());
                }
                foreach (IChat chat in chat_services)
                {
                    if (chat != null)
                    {
                        foreach (Embed embed in embeds)
                        {
                            chat.SendEmbed(embed, commandArguments.MessageChannel);
                        }
                    }
                }
                embeds.Clear();
                ret = ECommandResult.Successful;
            }
            return(ret);
        }
コード例 #4
0
 public void HandleResult(ECommandResult result)
 {
     switch (result)
     {
     case ECommandResult.NotEnoughCurrency:
         GameEntry.UI.ShowTips("金币不足!");
         break;
     }
 }
コード例 #5
0
ファイル: SequenceCommand.cs プロジェクト: source2728/Core
    public override bool HandleResult(ECommandResult result)
    {
        if (m_ResultHandler != null)
        {
            return(m_ResultHandler.Invoke(result));
        }

        return(false);
    }
コード例 #6
0
ファイル: SellAnimalCommand.cs プロジェクト: source2728/zoo
 /// <summary>
 /// 处理结果
 /// </summary>
 /// <param name="result"></param>
 /// <returns></returns>
 public override bool HandleResult(ECommandResult result)
 {
     if (result == ECommandResult.Success)
     {
         GameEntry.UI.ShowTips("出售成功!");
         return(true);
     }
     return(false);
 }
コード例 #7
0
    /// <summary>
    /// 处理结果
    /// </summary>
    /// <param name="result"></param>
    /// <returns></returns>
    public override bool HandleResult(ECommandResult result)
    {
        if (result == ECommandResult.Success)
        {
//            GameEntry.UI.ShowSecretaryTips("发生突发事件!");
            return(true);
        }
        return(false);
    }
コード例 #8
0
 /// <summary>
 /// 处理结果
 /// </summary>
 /// <param name="result"></param>
 /// <returns></returns>
 public override bool HandleResult(ECommandResult result)
 {
     if (result == ECommandResult.Success)
     {
         var evt = ReferencePool.Acquire <EvtZooBusinessTriggered>();
         GameEntry.Event.Fire(this, evt);
         return(true);
     }
     return(false);
 }
コード例 #9
0
        /// <summary>
        /// Execute command
        /// </summary>
        /// <param name="commandArguments">Command arguments</param>
        /// <returns></returns>
        public ECommandResult Execute(ICommandArguments commandArguments)
        {
            ECommandResult ret = ECommandResult.Failed;

            if (commandArguments.Arguments.Count == 1)
            {
                CommandsConfiguration commands_configuration = commandArguments.Bot.GetService <CommandsConfiguration>();
                if (commands_configuration != null)
                {
                    string message = null;
                    string command = commandArguments.Arguments[0].Trim().ToLower();
                    CommandConfigurationData command_configuration_data = null;
                    if (commands_configuration.Data.Commands.ContainsKey(command))
                    {
                        command_configuration_data = commands_configuration.Data.Commands[command];
                        if (command_configuration_data == null)
                        {
                            command_configuration_data = new CommandConfigurationData();
                            commands_configuration.Data.Commands[command] = command_configuration_data;
                        }
                    }
                    else
                    {
                        command_configuration_data = new CommandConfigurationData();
                        commands_configuration.Data.Commands.Add(command, command_configuration_data);
                    }
                    if (command_configuration_data.Enabled)
                    {
                        command_configuration_data.Enabled = false;
                        commands_configuration.Save();
                        message = "Command \"" + command + "\" has been successfully disabled.";
                        ret     = ECommandResult.Successful;
                    }
                    else
                    {
                        message = "Command \"" + command + "\" is already disabled.";
                    }
                    if (message != null)
                    {
                        IChat[] chat_services = commandArguments.Bot.GetServices <IChat>();
                        if (chat_services != null)
                        {
                            foreach (IChat chat in chat_services)
                            {
                                if (chat != null)
                                {
                                    chat.SendMessage(message, commandArguments.MessageChannel);
                                }
                            }
                        }
                    }
                }
            }
            return(ret);
        }
コード例 #10
0
ファイル: TriggerEventCommand.cs プロジェクト: source2728/zoo
 /// <summary>
 /// 处理结果
 /// </summary>
 /// <param name="result"></param>
 /// <returns></returns>
 public override bool HandleResult(ECommandResult result)
 {
     if (result == ECommandResult.Success)
     {
         GameEntry.UI.ShowSecretaryTips("发生突发事件!");
         var evt = ReferencePool.Acquire <EvtEventTriggered>();
         evt.ZooEventId = EventId;
         GameEntry.Event.Fire(this, evt);
         return(true);
     }
     return(false);
 }
コード例 #11
0
ファイル: EditObjectCommand.cs プロジェクト: source2728/zoo
    /// <summary>
    /// 处理结果
    /// </summary>
    /// <param name="result"></param>
    /// <returns></returns>
    public override bool HandleResult(ECommandResult result)
    {
        if (result == ECommandResult.Success)
        {
            GameEntry.UI.ShowTips("拆除成功!");

            var evt = ReferencePool.Acquire <EvtFinishEdit>();
            evt.IsConfirmEdit = true;
            GameEntry.Event.Fire(this, evt);
            return(true);
        }
        return(false);
    }
コード例 #12
0
        private ECommandResult InvokeOnSendCommand(string cmd, string[] args)
        {
            ECommandResult result = ECommandResult.Failed;

            if (string.IsNullOrEmpty(cmd) || !allCommand.ContainsKey(cmd))
            {
                return(ECommandResult.Failed);
            }

            foreach (SendCommandDelegate func in allCommand[cmd])
            {
                if (func(args) == ECommandResult.Successed)
                {
                    result = ECommandResult.Successed;
                }
            }
            return(result);
        }
コード例 #13
0
 /// <summary>
 /// 处理结果
 /// </summary>
 /// <param name="result"></param>
 /// <returns></returns>
 public override bool HandleResult(ECommandResult result)
 {
     if (result == ECommandResult.Success)
     {
         GameEntry.UI.ShowTips("修改名字成功!");
         return(true);
     }
     else if (result == ECommandResult.Fail)
     {
         switch (FailType)
         {
         case 1:
             GameEntry.UI.ShowTips("名字相同,不能修改!");
             return(true);
         }
     }
     return(false);
 }
コード例 #14
0
ファイル: ServicesCommand.cs プロジェクト: BigETI/Modibot
        /// <summary>
        /// Execute command
        /// </summary>
        /// <param name="commandArguments">Command arguments</param>
        /// <returns>Command result</returns>
        public ECommandResult Execute(ICommandArguments commandArguments)
        {
            ECommandResult ret = ECommandResult.Failed;

            IChat[] chat_services = commandArguments.Bot.GetServices <IChat>();
            if (chat_services != null)
            {
                EmbedBuilder  embed_builder   = new EmbedBuilder();
                StringBuilder loaded_services = new StringBuilder();
                bool          first           = true;
                embed_builder.WithTitle(":tickets: Services");
                embed_builder.WithColor(Color.Red);
                foreach (object service in commandArguments.Bot.LoadedServices)
                {
                    if (first)
                    {
                        first = false;
                    }
                    else
                    {
                        loaded_services.Append(", ");
                    }
                    loaded_services.Append(service.GetType().FullName);
                }
                if (first)
                {
                    loaded_services.Append("No services found.");
                }
                embed_builder.AddField("Loaded services", loaded_services.ToString());
                Embed embed = embed_builder.Build();
                foreach (IChat chat in chat_services)
                {
                    if (chat != null)
                    {
                        chat.SendEmbed(embed, commandArguments.MessageChannel);
                    }
                }
                ret = ECommandResult.Successful;
            }
            return(ret);
        }
コード例 #15
0
        /// <summary>
        /// Execute command
        /// </summary>
        /// <param name="commandArguments">Command arguments</param>
        /// <returns></returns>
        public ECommandResult Execute(ICommandArguments commandArguments)
        {
            ECommandResult ret = ECommandResult.Failed;

            if (commandArguments.Arguments.Count > 0)
            {
                string path = commandArguments.RawArguments;
                if (File.Exists(path))
                {
                    try
                    {
                        path = Path.GetFullPath(path);
                        IModule module = commandArguments.Bot.LoadModuleAsync(path).GetAwaiter().GetResult();
                        if (module != null)
                        {
                            module.InitAsync(commandArguments.Bot);
                            ret = ECommandResult.Successful;
                            IChat[] chat_services = commandArguments.Bot.GetServices <IChat>();
                            if (chat_services != null)
                            {
                                foreach (IChat chat in chat_services)
                                {
                                    if (chat != null)
                                    {
                                        chat.SendMessage("Module \"" + module.Name + "\" has been successfully loaded.", commandArguments.MessageChannel);
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        Console.Error.WriteLine(e);
                    }
                }
            }
            return(ret);
        }
コード例 #16
0
        /// <summary>
        /// Execute command
        /// </summary>
        /// <param name="commandArguments">Command arguments</param>
        /// <returns>Command result</returns>
        public ECommandResult Execute(ICommandArguments commandArguments)
        {
            ECommandResult ret = ECommandResult.Failed;

            if (commandArguments.Arguments.Count == 5)
            {
                string global_guild_specifier = commandArguments.Arguments[0];
                string role_user_specifier    = commandArguments.Arguments[1];
                string role_user_id_string    = commandArguments.Arguments[2];
                string privilege    = commandArguments.Arguments[3];
                string level_string = commandArguments.Arguments[4];
                ulong  role_user_id;
                uint   level;
                if (ulong.TryParse(role_user_id_string, out role_user_id) && uint.TryParse(level_string, out level))
                {
                    IPrivileges[] privileges_services = commandArguments.Bot.GetServices <IPrivileges>();
                    IChat[]       chat_services       = commandArguments.Bot.GetServices <IChat>();
                    if (privileges_services != null)
                    {
                        switch (global_guild_specifier.ToLower())
                        {
                        case "global":
                            if (role_user_specifier.ToLower() == "user")
                            {
                                foreach (IPrivileges privileges in privileges_services)
                                {
                                    privileges.SetGlobalUserPrivilege(role_user_id, privilege, level);
                                    privileges.Save();
                                    foreach (IChat chat in chat_services)
                                    {
                                        if (chat != null)
                                        {
                                            if (level == 0U)
                                            {
                                                chat.SendMessage("Global privilege \"" + privilege + "\" has been removed from user \"" + role_user_id + "\".", commandArguments.MessageChannel);
                                            }
                                            else
                                            {
                                                chat.SendMessage("Global privilege \"" + privilege + "\" has been set to level \"" + level + "\" for user \"" + role_user_id + "\".", commandArguments.MessageChannel);
                                            }
                                        }
                                    }
                                    ret = ECommandResult.Successful;
                                }
                            }
                            break;

                        case "guild":
                            switch (role_user_specifier.ToLower())
                            {
                            case "role":
                                foreach (IPrivileges privileges in privileges_services)
                                {
                                    privileges.SetGuildRolePrivilege(((SocketGuildChannel)(commandArguments.MessageChannel)).Guild.Id, role_user_id, privilege, level);
                                    privileges.Save();
                                    foreach (IChat chat in chat_services)
                                    {
                                        if (chat != null)
                                        {
                                            if (level == 0U)
                                            {
                                                chat.SendMessage("Guild privilege \"" + privilege + "\" has been removed from role \"" + role_user_id + "\".", commandArguments.MessageChannel);
                                            }
                                            else
                                            {
                                                chat.SendMessage("Guild privilege \"" + privilege + "\" has been set to level \"" + level + "\" for role \"" + role_user_id + "\".", commandArguments.MessageChannel);
                                            }
                                        }
                                    }
                                }
                                break;

                            case "user":
                                foreach (IPrivileges privileges in privileges_services)
                                {
                                    privileges.SetGuildUserPrivilege(((SocketGuildChannel)(commandArguments.MessageChannel)).Guild.Id, role_user_id, privilege, level);
                                    privileges.Save();
                                    foreach (IChat chat in chat_services)
                                    {
                                        if (chat != null)
                                        {
                                            if (level == 0U)
                                            {
                                                chat.SendMessage("Guild privilege \"" + privilege + "\" has been removed from user \"" + role_user_id + "\".", commandArguments.MessageChannel);
                                            }
                                            else
                                            {
                                                chat.SendMessage("Guild privilege \"" + privilege + "\" has been set to level \"" + level + "\" for user \"" + role_user_id + "\".", commandArguments.MessageChannel);
                                            }
                                        }
                                    }
                                }
                                break;
                            }
                            break;
                        }
                    }
                }
            }
            return(ret);
        }
コード例 #17
0
 public virtual bool HandleResult(ECommandResult result)
 {
     return(true);
 }
コード例 #18
0
ファイル: CommandResult.cs プロジェクト: BigETI/Modibot
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="result">Result</param>
 /// <param name="compiledCommand">Compiled command</param>
 /// <param name="missingPrivileges">Missing privileges</param>
 public CommandResult(ECommandResult result, ICompiledCommand compiledCommand, IDictionary <string, uint> missingPrivileges)
 {
     Result            = result;
     CompiledCommand   = compiledCommand;
     MissingPrivileges = new ReadOnlyDictionary <string, uint>(missingPrivileges);
 }
コード例 #19
0
ファイル: CommandResult.cs プロジェクト: BigETI/Modibot
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="result">Result</param>
 /// <param name="compiledCommand">Compiled command</param>
 public CommandResult(ECommandResult result, ICompiledCommand compiledCommand)
 {
     Result          = result;
     CompiledCommand = compiledCommand;
 }
コード例 #20
0
ファイル: HelpCommand.cs プロジェクト: BigETI/Modibot
        /// <summary>
        /// Execute command
        /// </summary>
        /// <param name="commandArguments">Command arguments</param>
        /// <returns>Command result</returns>
        public ECommandResult Execute(ICommandArguments commandArguments)
        {
            ECommandResult ret = ECommandResult.Failed;

            ICommands[]       commands_services  = commandArguments.Bot.GetServices <ICommands>();
            IChat[]           chat_services      = commandArguments.Bot.GetServices <IChat>();
            HelpConfiguration help_configuration = commandArguments.Bot.GetService <HelpConfiguration>();

            if ((commands_services != null) && (chat_services != null) && (help_configuration != null))
            {
                List <Embed> embeds = new List <Embed>();
                if (commandArguments.Arguments.Count > 0)
                {
                    string command_string = commandArguments.Arguments[0];
                    List <KeyValuePair <ICommands, ICommand> > command_list = new List <KeyValuePair <ICommands, ICommand> >();
                    foreach (ICommands commands in commands_services)
                    {
                        ICommand command = commands.FindCommand(command_string);
                        if (command != null)
                        {
                            command_list.Add(new KeyValuePair <ICommands, ICommand>(commands, command));
                        }
                    }
                    if (command_list.Count > 0)
                    {
                        foreach (KeyValuePair <ICommands, ICommand> command in command_list)
                        {
                            EmbedBuilder embed_builder = PrepareEmbedBuilder("Help topic for command \"" + command.Value.Name + "\"");
                            embed_builder.AddField("Command", command.Value.Name, true);
                            embed_builder.AddField("Description", command.Value.Description, true);
                            embed_builder.AddField("Full description", command.Value.FullDescription);
                            StringBuilder required_privileges = new StringBuilder();
                            foreach (KeyValuePair <string, uint> privilege in command.Value.ForceRequiredPrivileges)
                            {
                                required_privileges.Append("\"");
                                required_privileges.Append(privilege.Key);
                                required_privileges.Append("\" : ");
                                required_privileges.Append(privilege.Value.ToString());
                            }
                            if (required_privileges.Length > 0)
                            {
                                embed_builder.AddField("Required privileges", required_privileges);
                            }
                            ICommandGroup command_group = command.Key.GetCommandGroup(command.Value.CommandGroup);
                            if (command_group != null)
                            {
                                StringBuilder more_commands = new StringBuilder();
                                bool          first         = true;
                                foreach (ICommand command_group_command in command.Key.FromCommandGroup(command_group))
                                {
                                    if (first)
                                    {
                                        first = false;
                                    }
                                    else
                                    {
                                        more_commands.Append(", ");
                                    }
                                    more_commands.Append(command_group_command.Name);
                                }
                                if (first)
                                {
                                    more_commands.Append("No commands?");
                                }
                                embed_builder.AddField("More commands " + command_group.Icon, more_commands.ToString());
                            }
                            embeds.Add(embed_builder.Build());
                        }
                    }
                    else
                    {
                        List <KeyValuePair <ICommands, ICommandGroup> > command_group_list = new List <KeyValuePair <ICommands, ICommandGroup> >();
                        string command_group_name_key = commandArguments.Arguments[0].Trim().ToLower();
                        foreach (ICommands commands in commands_services)
                        {
                            ICommandGroup command_group = commands.GetCommandGroup(command_string);
                            if (command_group != null)
                            {
                                if (command_group.Name.Trim().ToLower() == command_group_name_key)
                                {
                                    command_group_list.Add(new KeyValuePair <ICommands, ICommandGroup>(commands, command_group));
                                }
                            }
                        }
                        if (command_group_list.Count > 0)
                        {
                            foreach (KeyValuePair <ICommands, ICommandGroup> command_group in command_group_list)
                            {
                                EmbedBuilder  embed_builder          = PrepareEmbedBuilder("Help topic for command group \"" + command_group.Value.Icon + " " + command_group.Value.Name + "\"");
                                StringBuilder command_group_commands = new StringBuilder();
                                bool          first = true;
                                foreach (ICommand command_group_command in command_group.Key.FromCommandGroup(command_group.Value))
                                {
                                    if (first)
                                    {
                                        first = false;
                                    }
                                    else
                                    {
                                        command_group_commands.Append(", ");
                                    }
                                    command_group_commands.Append(command_group_command.Name);
                                }
                                if (first)
                                {
                                    command_group_commands.Append("No commands?");
                                }
                                embed_builder.AddField("Commands", command_group_commands.ToString());
                                command_group_commands.Clear();
                                embeds.Add(embed_builder.Build());
                            }
                        }
                        else
                        {
                            foreach (ICommands commands in commands_services)
                            {
                                EmbedBuilder embed_builder = PrepareEmbedBuilder();
                                embed_builder.WithTitle("Help topics similar to \"" + command_string + "\"");
                                StringBuilder all_commands_groups = new StringBuilder();
                                bool          first = true;
                                foreach (ICommand command in commands.AvailableCommands)
                                {
                                    if (Levenshtein.GetDistance(command_string, command.Name) <= help_configuration.Data.MaximumLevenshteinDistance)
                                    {
                                        if (first)
                                        {
                                            first = false;
                                        }
                                        else
                                        {
                                            all_commands_groups.Append(", ");
                                        }
                                        all_commands_groups.Append(command.Name);
                                    }
                                }
                                if (first)
                                {
                                    all_commands_groups.Append("No similar commands found");
                                }
                                embed_builder.AddField("Commands", all_commands_groups.ToString());
                                all_commands_groups.Clear();
                                first = true;
                                foreach (ICommandGroup command_group in commands.AvailableCommandGroups)
                                {
                                    if (Levenshtein.GetDistance(command_string, command_group.Name) <= help_configuration.Data.MaximumLevenshteinDistance)
                                    {
                                        if (first)
                                        {
                                            first = false;
                                        }
                                        else
                                        {
                                            all_commands_groups.Append(", ");
                                        }
                                        all_commands_groups.Append(command_group.Icon);
                                        all_commands_groups.Append(" ");
                                        all_commands_groups.Append(command_group.Name);
                                    }
                                }
                                if (first)
                                {
                                    all_commands_groups.Append("No similar command groups found");
                                }
                                embed_builder.AddField("Command groups", all_commands_groups.ToString());
                                embeds.Add(embed_builder.Build());
                            }
                        }
                        command_group_list.Clear();
                    }
                    command_list.Clear();
                }
                else
                {
                    foreach (ICommands commands in commands_services)
                    {
                        EmbedBuilder  embed_builder          = PrepareEmbedBuilder("Help topics");
                        StringBuilder command_group_commands = new StringBuilder();
                        foreach (ICommandGroup command_group in commands.AvailableCommandGroups)
                        {
                            bool first = true;
                            command_group_commands.Clear();
                            foreach (ICommand command_group_command in commands.FromCommandGroup(command_group))
                            {
                                if (first)
                                {
                                    first = false;
                                }
                                else
                                {
                                    command_group_commands.Append(", ");
                                }
                                command_group_commands.Append(command_group_command.Name);
                            }
                            if (first)
                            {
                                command_group_commands.Append("No commands specified yet.");
                            }
                            embed_builder.AddField(command_group.Icon + " " + command_group.Name, command_group_commands.ToString());
                        }
                        embeds.Add(embed_builder.Build());
                    }
                }
                foreach (IChat chat in chat_services)
                {
                    foreach (Embed embed in embeds)
                    {
                        chat.SendEmbedAsync(embed, commandArguments.MessageChannel);
                    }
                }
                embeds.Clear();
                ret = ECommandResult.Successful;
            }
            return(ret);
        }
コード例 #21
0
        /// <summary>
        /// Execute command
        /// </summary>
        /// <param name="commandArguments">Command arguments</param>
        /// <returns>Command result</returns>
        public ECommandResult Execute(ICommandArguments commandArguments)
        {
            ECommandResult ret = ECommandResult.Failed;

            if (commandArguments.Arguments.Count == 3)
            {
                string command   = commandArguments.Arguments[0].Trim().ToLower();
                string privilege = commandArguments.Arguments[1];
                uint   level;
                if (uint.TryParse(commandArguments.Arguments[2], out level))
                {
                    CommandsConfiguration commands_configuration = commandArguments.Bot.GetService <CommandsConfiguration>();
                    if (commands_configuration != null)
                    {
                        string message = null;
                        CommandConfigurationData command_configuration_data = null;
                        if (commands_configuration.Data.Commands.ContainsKey(command))
                        {
                            command_configuration_data = commands_configuration.Data.Commands[command];
                            if (command_configuration_data == null)
                            {
                                command_configuration_data = new CommandConfigurationData();
                                commands_configuration.Data.Commands[command] = command_configuration_data;
                            }
                        }
                        else
                        {
                            command_configuration_data = new CommandConfigurationData();
                            commands_configuration.Data.Commands.Add(command, command_configuration_data);
                        }
                        if (level == 0U)
                        {
                            if (command_configuration_data.Privileges.ContainsKey(privilege))
                            {
                                command_configuration_data.Privileges.Remove(privilege);
                                commands_configuration.Save();
                                message = "Privilege requirement \"" + privilege + "\" for \"" + command + "\" has been successfully removed.";
                                ret     = ECommandResult.Successful;
                            }
                            else
                            {
                                message = "Privilege requirement \"" + privilege + "\" doesn't exist for \"" + command + "\".";
                            }
                        }
                        else
                        {
                            if (command_configuration_data.Privileges.ContainsKey(privilege))
                            {
                                command_configuration_data.Privileges[privilege] = level;
                                commands_configuration.Save();
                                message = "Privilege requirement \"" + privilege + "\" for \"" + command + "\" has been successfully updated to level " + level + ".";
                            }
                            else
                            {
                                command_configuration_data.Privileges.Add(privilege, level);
                                commands_configuration.Save();
                                message = "Privilege requirement \"" + privilege + "\" for \"" + command + "\" has been successfully set to level " + level + ".";
                            }
                            ret = ECommandResult.Successful;
                        }
                        if (message != null)
                        {
                            IChat[] chat_services = commandArguments.Bot.GetServices <IChat>();
                            if (chat_services != null)
                            {
                                foreach (IChat chat in chat_services)
                                {
                                    if (chat != null)
                                    {
                                        chat.SendMessage(message, commandArguments.MessageChannel);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(ret);
        }