public async Task SettingsAsync(string settingName = "", [Remainder] string value = null) { settingName.ToLower(); // GENERAL SETTINGS HELP if ((settingName == "help" && String.IsNullOrWhiteSpace(value)) || settingName == "") { EmbedBuilder embedbuilder = new EmbedBuilder() { Title = "X.A.N.A. - Liste des paramètres", Color = Color.Red }; StringBuilder sb = new StringBuilder(); sb.AppendLine("Insérez 'x!settings ' devant chaque commande."); sb.AppendLine(); foreach (KeyValuePair <string, string> property in XPropertiesHelp) { sb.AppendLine("**" + property.Key + "** : " + property.Value); } embedbuilder.Description = sb.ToString(); await ReplyAsync("", false, embedbuilder.Build()); return; } // SPECIFIC HELP SETTING else if (settingName == "help" && !String.IsNullOrWhiteSpace(value)) { if (XPropertiesHelp.Keys.Contains(value)) { EmbedBuilder embedbuilder = new EmbedBuilder() { Title = "X.A.N.A. - Aide sur le paramètre **" + value + "**", Color = Color.Red }; StringBuilder sb = new StringBuilder(); sb.AppendLine("**" + value + "** : " + XPropertiesHelp[value]); sb.AppendLine("Utilisation : " + XPropertiesUsage[value]); embedbuilder.Description = sb.ToString(); await ReplyAsync("", false, embedbuilder.Build()); return; } else { await ReplyAsync("Paramètre inconnu. Tapez **x!settings help** pour obtenir la liste des paramètres disponibles."); return; } } // GET OAUTH 2.0 URL else if (settingName == "oauth") { XmlManager.SaveXmlConfig(); await ReplyAsync("Lien pour ajouter X.A.N.A. à un serveur : " + Config._INSTANCE.XanaOAuth2URL); return; } // SAVE CONFIG else if (settingName == "save") { XmlManager.SaveXmlConfig(); await ReplyAsync("Paramètres sauvegardés."); return; } // SETTING COMMAND else if (XProperties.Keys.Contains(settingName)) // si paramètre existe { Type propertyType = XProperties[settingName].PropertyType; if (String.IsNullOrWhiteSpace(value)) // si valeur nulle { if (propertyType == typeof(bool)) { XProperties[settingName].SetValue(Config._INSTANCE, !(bool)XProperties[settingName].GetValue(Config._INSTANCE)); } else { await ReplyAsync("Veuillez indiquer la nouvelle valeur du paramètre."); await SettingsAsync("help", settingName); return; } } else { try { var parameter = CFormat.CoerceArgument(XProperties[settingName].PropertyType, value); if (CheckPropertyPermission(XProperties[settingName], (SocketGuildUser)Context.User)) { XProperties[settingName].SetValue(Config._INSTANCE.GuildConfigs[Context.Guild.Id], parameter); await ReplyAsync("Paramètre mis à jour."); XmlManager.SaveXmlConfig(); return; } else if (Context.Guild.Roles.Where(x => x.Id == Config._INSTANCE.GuildConfigs[Context.Guild.Id].AdminRoleId).Count() == 0) { await ReplyAsync("Veuillez définir le rôle pouvant modifier les paramètres Administrateurs de X.A.N.A. avec le paramètre AdminRoleId."); await Task.Run(() => SettingsAsync("help", "AdminRoleId")); return; } else { await ReplyAsync("**Accès au paramètre limité** aux utilisateurs possédant au moins le rôle avec l'identifiant définit par le paramètre AdminRoleId."); return; } } catch (Exception ex) { await ReplyAsync("Erreur lors de la mise à jour du paramètre. Détails : " + ex.Message); return; } } } else { await ReplyAsync("Paramètre inconnu. Tapez **x!settings help** pour obtenir la liste des paramètres disponibles."); return; } }