More localization, DiscordModule renamed to NadekoModule
This commit is contained in:
		@@ -20,7 +20,7 @@ using NLog;
 | 
				
			|||||||
namespace NadekoBot.Modules.Administration
 | 
					namespace NadekoBot.Modules.Administration
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [NadekoModule("Administration", ".")]
 | 
					    [NadekoModule("Administration", ".")]
 | 
				
			||||||
    public partial class Administration : DiscordModule
 | 
					    public partial class Administration : NadekoModule
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private static ConcurrentDictionary<ulong, string> GuildMuteRoles { get; } = new ConcurrentDictionary<ulong, string>();
 | 
					        private static ConcurrentDictionary<ulong, string> GuildMuteRoles { get; } = new ConcurrentDictionary<ulong, string>();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,67 @@
 | 
				
			|||||||
 | 
					using Discord;
 | 
				
			||||||
 | 
					using Discord.Commands;
 | 
				
			||||||
 | 
					using NadekoBot.Attributes;
 | 
				
			||||||
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Globalization;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace NadekoBot.Modules.Administration.Commands
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public partial class Administration
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        [Group]
 | 
				
			||||||
 | 
					        public class LocalizationCommands : ModuleBase
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
 | 
					            [RequireContext(ContextType.Guild)]
 | 
				
			||||||
 | 
					            [RequireUserPermission(GuildPermission.Administrator)]
 | 
				
			||||||
 | 
					            public async Task SetLocale([Remainder] string name)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                CultureInfo ci = null;
 | 
				
			||||||
 | 
					                try
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if(name.Trim().ToLowerInvariant() == "default")
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        NadekoBot.Localization.RemoveGuildCulture(Context.Guild);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    ci = new CultureInfo(name);
 | 
				
			||||||
 | 
					                    NadekoBot.Localization.SetGuildCulture(Context.Guild, ci);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    await Context.Channel.SendConfirmAsync($"Your guild's locale is now {ci}.").ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                catch(Exception) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    //_log.warn(ex);
 | 
				
			||||||
 | 
					                    await Context.Channel.SendConfirmAsync($"Failed setting locale. Revisit this command's help.").ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
 | 
					            [OwnerOnly]
 | 
				
			||||||
 | 
					            public async Task SetDefaulLocale(string name)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                CultureInfo ci = null;
 | 
				
			||||||
 | 
					                try
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (name.Trim().ToLowerInvariant() == "default")
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        NadekoBot.Localization.RemoveGuildCulture(Context.Guild);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    ci = new CultureInfo(name);
 | 
				
			||||||
 | 
					                    NadekoBot.Localization.SetGuildCulture(Context.Guild, ci);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    await Context.Channel.SendConfirmAsync($"Your guild's locale is now {ci}.").ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                catch (Exception)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    //_log.warn(ex);
 | 
				
			||||||
 | 
					                    await Context.Channel.SendConfirmAsync($"Failed setting locale. Revisit this command's help.").ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -17,7 +17,7 @@ using NLog;
 | 
				
			|||||||
namespace NadekoBot.Modules.ClashOfClans
 | 
					namespace NadekoBot.Modules.ClashOfClans
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [NadekoModule("ClashOfClans", ",")]
 | 
					    [NadekoModule("ClashOfClans", ",")]
 | 
				
			||||||
    public class ClashOfClans : DiscordModule
 | 
					    public class ClashOfClans : NadekoModule
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public static ConcurrentDictionary<ulong, List<ClashWar>> ClashWars { get; set; } = new ConcurrentDictionary<ulong, List<ClashWar>>();
 | 
					        public static ConcurrentDictionary<ulong, List<ClashWar>> ClashWars { get; set; } = new ConcurrentDictionary<ulong, List<ClashWar>>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@ using NadekoBot.DataStructures;
 | 
				
			|||||||
namespace NadekoBot.Modules.CustomReactions
 | 
					namespace NadekoBot.Modules.CustomReactions
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [NadekoModule("CustomReactions", ".")]
 | 
					    [NadekoModule("CustomReactions", ".")]
 | 
				
			||||||
    public class CustomReactions : DiscordModule
 | 
					    public class CustomReactions : NadekoModule
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        private static CustomReaction[] _globalReactions = new CustomReaction[] { };
 | 
					        private static CustomReaction[] _globalReactions = new CustomReaction[] { };
 | 
				
			||||||
        public static CustomReaction[] GlobalReactions => _globalReactions;
 | 
					        public static CustomReaction[] GlobalReactions => _globalReactions;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,22 +1,69 @@
 | 
				
			|||||||
using Discord.Commands;
 | 
					using Discord;
 | 
				
			||||||
 | 
					using Discord.Commands;
 | 
				
			||||||
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using NLog;
 | 
					using NLog;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Concurrent;
 | 
				
			||||||
 | 
					using System.Globalization;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules
 | 
					namespace NadekoBot.Modules
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public abstract class DiscordModule : ModuleBase
 | 
					    public abstract class NadekoModule : ModuleBase
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        protected Logger _log { get; }
 | 
					        protected readonly Logger _log;
 | 
				
			||||||
        protected string _prefix { get; }
 | 
					        public readonly string _prefix;
 | 
				
			||||||
 | 
					        public readonly CultureInfo cultureInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public DiscordModule()
 | 
					        public NadekoModule(bool isTopLevelModule = true)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            string prefix;
 | 
					            //if it's top level module
 | 
				
			||||||
            if (NadekoBot.ModulePrefixes.TryGetValue(this.GetType().Name, out prefix))
 | 
					            var typeName = isTopLevelModule ? this.GetType().Name : this.GetType().DeclaringType.Name;
 | 
				
			||||||
                _prefix = prefix;
 | 
					            if (!NadekoBot.ModulePrefixes.TryGetValue(typeName, out _prefix))
 | 
				
			||||||
            else
 | 
					                _prefix = "?err?";
 | 
				
			||||||
                _prefix = "?missing_prefix?";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            _log = LogManager.GetCurrentClassLogger();
 | 
					            _log = LogManager.GetCurrentClassLogger();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            cultureInfo = (Context.Guild == null
 | 
				
			||||||
 | 
					                ? CultureInfo.CurrentCulture
 | 
				
			||||||
 | 
					                : NadekoBot.Localization.GetCultureInfo(Context.Guild));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public abstract class NadekoSubmodule : NadekoModule
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public NadekoSubmodule() : base(false)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static class ModuleBaseExtensions
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public static Task<IUserMessage> ConfirmLocalized(this NadekoModule module, string titleKey, string textKey, string url = null, string footer = null)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var title = NadekoBot.ResponsesResourceManager.GetString(titleKey, module.cultureInfo);
 | 
				
			||||||
 | 
					            var text = NadekoBot.ResponsesResourceManager.GetString(textKey, module.cultureInfo);
 | 
				
			||||||
 | 
					            return module.Context.Channel.SendConfirmAsync(title, text, url, footer);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static Task<IUserMessage> ConfirmLocalized(this NadekoModule module, string textKey)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var text = NadekoBot.ResponsesResourceManager.GetString(textKey, module.cultureInfo);
 | 
				
			||||||
 | 
					            return module.Context.Channel.SendConfirmAsync(textKey);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static Task<IUserMessage> ErrorLocalized(this NadekoModule module, string titleKey, string textKey, string url = null, string footer = null)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var title = NadekoBot.ResponsesResourceManager.GetString(titleKey, module.cultureInfo);
 | 
				
			||||||
 | 
					            var text = NadekoBot.ResponsesResourceManager.GetString(textKey, module.cultureInfo);
 | 
				
			||||||
 | 
					            return module.Context.Channel.SendErrorAsync(title, text, url, footer);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static Task<IUserMessage> ErrorLocalized(this NadekoModule module, string textKey)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var text = NadekoBot.ResponsesResourceManager.GetString(textKey, module.cultureInfo);
 | 
				
			||||||
 | 
					            return module.Context.Channel.SendErrorAsync(textKey);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@ using System.Collections.Generic;
 | 
				
			|||||||
namespace NadekoBot.Modules.Gambling
 | 
					namespace NadekoBot.Modules.Gambling
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [NadekoModule("Gambling", "$")]
 | 
					    [NadekoModule("Gambling", "$")]
 | 
				
			||||||
    public partial class Gambling : DiscordModule
 | 
					    public partial class Gambling : NadekoModule
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public static string CurrencyName { get; set; }
 | 
					        public static string CurrencyName { get; set; }
 | 
				
			||||||
        public static string CurrencyPluralName { get; set; }
 | 
					        public static string CurrencyPluralName { get; set; }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,7 @@ using NadekoBot.Extensions;
 | 
				
			|||||||
namespace NadekoBot.Modules.Games
 | 
					namespace NadekoBot.Modules.Games
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [NadekoModule("Games", ">")]
 | 
					    [NadekoModule("Games", ">")]
 | 
				
			||||||
    public partial class Games : DiscordModule
 | 
					    public partial class Games : NadekoModule
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        private static string[] _8BallResponses { get; } = NadekoBot.BotConfig.EightBallResponses.Select(ebr => ebr.Text).ToArray();
 | 
					        private static string[] _8BallResponses { get; } = NadekoBot.BotConfig.EightBallResponses.Select(ebr => ebr.Text).ToArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@ using System.Collections.Generic;
 | 
				
			|||||||
namespace NadekoBot.Modules.Help
 | 
					namespace NadekoBot.Modules.Help
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [NadekoModule("Help", "-")]
 | 
					    [NadekoModule("Help", "-")]
 | 
				
			||||||
    public partial class Help : DiscordModule
 | 
					    public partial class Help : NadekoModule
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        private static string helpString { get; } = NadekoBot.BotConfig.HelpString;
 | 
					        private static string helpString { get; } = NadekoBot.BotConfig.HelpString;
 | 
				
			||||||
        public static string HelpString => String.Format(helpString, NadekoBot.Credentials.ClientId, NadekoBot.ModulePrefixes[typeof(Help).Name]);
 | 
					        public static string HelpString => String.Format(helpString, NadekoBot.Credentials.ClientId, NadekoBot.ModulePrefixes[typeof(Help).Name]);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ namespace NadekoBot.Modules.Music
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    [NadekoModule("Music", "!!")]
 | 
					    [NadekoModule("Music", "!!")]
 | 
				
			||||||
    [DontAutoLoad]
 | 
					    [DontAutoLoad]
 | 
				
			||||||
    public partial class Music : DiscordModule
 | 
					    public partial class Music : NadekoModule
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public static ConcurrentDictionary<ulong, MusicPlayer> MusicPlayers { get; } = new ConcurrentDictionary<ulong, MusicPlayer>();
 | 
					        public static ConcurrentDictionary<ulong, MusicPlayer> MusicPlayers { get; } = new ConcurrentDictionary<ulong, MusicPlayer>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@ using System.Collections.Concurrent;
 | 
				
			|||||||
namespace NadekoBot.Modules.NSFW
 | 
					namespace NadekoBot.Modules.NSFW
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [NadekoModule("NSFW", "~")]
 | 
					    [NadekoModule("NSFW", "~")]
 | 
				
			||||||
    public class NSFW : DiscordModule
 | 
					    public class NSFW : NadekoModule
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private static ConcurrentDictionary<ulong, Timer> AutoHentaiTimers { get; } = new ConcurrentDictionary<ulong, Timer>();
 | 
					        private static ConcurrentDictionary<ulong, Timer> AutoHentaiTimers { get; } = new ConcurrentDictionary<ulong, Timer>();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,7 +15,7 @@ using NLog;
 | 
				
			|||||||
namespace NadekoBot.Modules.Permissions
 | 
					namespace NadekoBot.Modules.Permissions
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [NadekoModule("Permissions", ";")]
 | 
					    [NadekoModule("Permissions", ";")]
 | 
				
			||||||
    public partial class Permissions : DiscordModule
 | 
					    public partial class Permissions : NadekoModule
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public class PermissionCache
 | 
					        public class PermissionCache
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,7 +16,7 @@ using System.Collections.Concurrent;
 | 
				
			|||||||
namespace NadekoBot.Modules.Pokemon
 | 
					namespace NadekoBot.Modules.Pokemon
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [NadekoModule("Pokemon", ">")]
 | 
					    [NadekoModule("Pokemon", ">")]
 | 
				
			||||||
    public partial class Pokemon : DiscordModule
 | 
					    public partial class Pokemon : NadekoModule
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        private static List<PokemonType> PokemonTypes = new List<PokemonType>();
 | 
					        private static List<PokemonType> PokemonTypes = new List<PokemonType>();
 | 
				
			||||||
        private static ConcurrentDictionary<ulong, PokeStats> Stats = new ConcurrentDictionary<ulong, PokeStats>();
 | 
					        private static ConcurrentDictionary<ulong, PokeStats> Stats = new ConcurrentDictionary<ulong, PokeStats>();
 | 
				
			||||||
@@ -105,7 +105,7 @@ namespace NadekoBot.Modules.Pokemon
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (targetUser == null)
 | 
					            if (targetUser == null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                await Context.Channel.SendMessageAsync("No such person.").ConfigureAwait(false);
 | 
					                await ReplyLocalized("no user found").ConfigureAwait(false);
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (targetUser == user)
 | 
					            else if (targetUser == user)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@ using System.Xml.Linq;
 | 
				
			|||||||
namespace NadekoBot.Modules.Searches
 | 
					namespace NadekoBot.Modules.Searches
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [NadekoModule("Searches", "~")]
 | 
					    [NadekoModule("Searches", "~")]
 | 
				
			||||||
    public partial class Searches : DiscordModule
 | 
					    public partial class Searches : NadekoModule
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [NadekoCommand, Usage, Description, Aliases]
 | 
					        [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
        public async Task Weather([Remainder] string query)
 | 
					        public async Task Weather([Remainder] string query)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ using NadekoBot.Services;
 | 
				
			|||||||
namespace NadekoBot.Modules.Utility
 | 
					namespace NadekoBot.Modules.Utility
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [NadekoModule("Utility", ".")]
 | 
					    [NadekoModule("Utility", ".")]
 | 
				
			||||||
    public partial class Utility : DiscordModule
 | 
					    public partial class Utility : NadekoModule
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        private static ConcurrentDictionary<ulong, Timer> rotatingRoleColors = new ConcurrentDictionary<ulong, Timer>();
 | 
					        private static ConcurrentDictionary<ulong, Timer> rotatingRoleColors = new ConcurrentDictionary<ulong, Timer>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,6 +16,8 @@ using NadekoBot.TypeReaders;
 | 
				
			|||||||
using System.Collections.Concurrent;
 | 
					using System.Collections.Concurrent;
 | 
				
			||||||
using NadekoBot.Modules.Music;
 | 
					using NadekoBot.Modules.Music;
 | 
				
			||||||
using NadekoBot.Services.Database.Models;
 | 
					using NadekoBot.Services.Database.Models;
 | 
				
			||||||
 | 
					using System.Resources;
 | 
				
			||||||
 | 
					using NadekoBot.Resources;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot
 | 
					namespace NadekoBot
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -29,7 +31,10 @@ namespace NadekoBot
 | 
				
			|||||||
        public static CommandService CommandService { get; private set; }
 | 
					        public static CommandService CommandService { get; private set; }
 | 
				
			||||||
        public static CommandHandler CommandHandler { get; private set; }
 | 
					        public static CommandHandler CommandHandler { get; private set; }
 | 
				
			||||||
        public static DiscordShardedClient Client { get; private set; }
 | 
					        public static DiscordShardedClient Client { get; private set; }
 | 
				
			||||||
        public static BotCredentials Credentials { get; private set; }
 | 
					        public static BotCredentials Credentials { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static Localization Localization { get; private set; }
 | 
				
			||||||
 | 
					        public static ResourceManager ResponsesResourceManager { get; } = new ResourceManager(typeof(ResponseStrings));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static GoogleApiService Google { get; private set; }
 | 
					        public static GoogleApiService Google { get; private set; }
 | 
				
			||||||
        public static StatsService Stats { get; private set; }
 | 
					        public static StatsService Stats { get; private set; }
 | 
				
			||||||
@@ -79,6 +84,7 @@ namespace NadekoBot
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //initialize Services
 | 
					            //initialize Services
 | 
				
			||||||
 | 
					            Localization = new Localization(NadekoBot.AllGuildConfigs.ToDictionary(x => x.GuildId, x => x.Locale));
 | 
				
			||||||
            CommandService = new CommandService(new CommandServiceConfig() {
 | 
					            CommandService = new CommandService(new CommandServiceConfig() {
 | 
				
			||||||
                CaseSensitiveCommands = false,
 | 
					                CaseSensitiveCommands = false,
 | 
				
			||||||
                DefaultRunMode = RunMode.Sync
 | 
					                DefaultRunMode = RunMode.Sync
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -64,6 +64,8 @@ namespace NadekoBot.Services.Database.Models
 | 
				
			|||||||
        public AntiRaidSetting AntiRaidSetting { get; set; }
 | 
					        public AntiRaidSetting AntiRaidSetting { get; set; }
 | 
				
			||||||
        public AntiSpamSetting AntiSpamSetting { get; set; }
 | 
					        public AntiSpamSetting AntiSpamSetting { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public string Locale { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //public List<ProtectionIgnoredChannel> ProtectionIgnoredChannels { get; set; } = new List<ProtectionIgnoredChannel>();
 | 
					        //public List<ProtectionIgnoredChannel> ProtectionIgnoredChannels { get; set; } = new List<ProtectionIgnoredChannel>();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user