public async Task SetTranslateWiki(CommandContext ctx,
                                           [Description("configuring-help-translatewiki-channel")] DiscordChannel channel,
                                           [Description("configuring-help-translatewiki-value"), RemainingText] string value)
        {
            string chanId       = channel.Id.ToString();
            string chanPrevId   = Config.GetTWChannel(ctx.Guild.Id.ToString());
            string chanPrevLang = Config.GetTWLang(ctx.Guild.Id.ToString());
            string lang         = Config.GetLang(ctx.Guild.Id.ToString());
            await ctx.TriggerTypingAsync();

            // Check for return to default
            if (value == "-")
            {
                chanId = "-";
                value  = "-";
            }

            // Check for required parameters
            if (value.ToString() == "")
            {
                await ctx.RespondAsync(Locale.GetMessage("configuring-required-value", lang, ctx.Command.Name, Config.GetValue("prefix")));

                return;
            }

            // Set language to lowercase
            value = value.ToLower();

            // Check if it is a valid language
            if (value != "-" && !Locale.IsValidLanguage(value))
            {
                await ctx.RespondAsync(Locale.GetMessage("configuring-badvalue-lang", lang));

                return;
            }

            // Do action and respond
            int succeedsChan = Config.SetOverride(ctx.Guild.Id.ToString(), "translatewiki-channel", chanId);
            int succeedsLang = Config.SetOverride(ctx.Guild.Id.ToString(), "translatewiki-lang", value);

            if (succeedsChan == Config.RESULT_CHANGE && succeedsLang == Config.RESULT_CHANGE)
            {
                // Different channel and language
                await ctx.RespondAsync(Locale.GetMessage("configuring-changed-translatewiki", lang, channel.Mention, GetLanguageInfo(value)));

                TranslateWiki.Init(chanId, value);
            }

            if (succeedsChan == Config.RESULT_CHANGE && succeedsLang == Config.RESULT_RESET)
            {
                // Different channel, default language
                await ctx.RespondAsync(Locale.GetMessage("configuring-changed-translatewiki-channel", lang, channel.Mention));

                TranslateWiki.Remove(chanId, chanPrevLang);
                TranslateWiki.Init(chanId, value);
            }

            if (succeedsChan == Config.RESULT_CHANGE && succeedsLang == Config.RESULT_SAME)
            {
                // Different channel, same language
                await ctx.RespondAsync(Locale.GetMessage("configuring-changed-translatewiki-channel", lang, channel.Mention));

                TranslateWiki.Remove(chanPrevId, chanPrevLang);
                TranslateWiki.Init(chanId, value);
            }

            if (succeedsChan == Config.RESULT_RESET && succeedsLang == Config.RESULT_CHANGE ||
                (
                    succeedsChan == Config.RESULT_SAME &&
                    (succeedsLang == Config.RESULT_RESET || succeedsLang == Config.RESULT_CHANGE)
                )
                )
            {
                // Same or default channel, different language
                await ctx.RespondAsync(Locale.GetMessage("configuring-changed-translatewiki-lang", lang, GetLanguageInfo(value)));

                TranslateWiki.Remove(chanId, chanPrevLang);
                TranslateWiki.Init(chanId, value);
            }

            if (succeedsChan == Config.RESULT_RESET && succeedsLang == Config.RESULT_RESET)
            {
                // Reset both channel and language with -
                await ctx.RespondAsync(Locale.GetMessage("configuring-changed-reset", lang));

                TranslateWiki.Remove(channel.Id.ToString(), chanPrevLang);
            }

            if (succeedsChan == Config.RESULT_STRANGE || succeedsLang == Config.RESULT_STRANGE)
            {
                // Other strange errors
                await ctx.RespondAsync(Locale.GetMessage("configuring-error-strange", lang));
            }
        }
Beispiel #2
0
        public async Task SetTranslate(CommandContext ctx,
                                       [Description("configuring-help-tw-channel")] DiscordChannel channel,
                                       [Description("configuring-help-tw-value"), RemainingText] string value)
        {
            string chanId       = channel.Id.ToString();
            string chanPrevId   = Config.GetTWChannel(ctx.Guild.Id.ToString());
            string chanPrevLang = Config.GetTWLang(ctx.Guild.Id.ToString());
            string lang         = Config.GetLang(ctx.Guild.Id.ToString());

            // Ensure that we are in private channel
            if (ctx.Channel.Name != "moderators")
            {
                await ctx.RespondAsync(Locale.GetMessage("denied", lang));

                return;
            }
            ;
            await ctx.TriggerTypingAsync();

            // Check for return to default
            if (value == "-")
            {
                chanId = Config.GetTWChannel();
                value  = Config.GetTWLang();
            }

            // Check for required parameters
            if (channel == null)
            {
                await ctx.RespondAsync(Locale.GetMessage("configuring-required-channel", lang, "help guildTW", Config.GetValue("prefix")));

                return;
            }

            if (value.ToString() == "")
            {
                await ctx.RespondAsync(Locale.GetMessage("configuring-required-value", lang, "help guildTW", Config.GetValue("prefix")));

                return;
            }

            // Do action and respond
            int succeedsChan = Config.SetOverride(ctx.Guild.Id.ToString(), "translatewiki-channel", chanId);
            int succeedsLang = Config.SetOverride(ctx.Guild.Id.ToString(), "translatewiki-lang", value);

            if (succeedsChan == Config.RESULT_CHANGE && succeedsLang == Config.RESULT_CHANGE)
            {
                // Different channel and language
                await ctx.RespondAsync(Locale.GetMessage("configuring-changed-translatewiki", lang, channel.Mention, value.ToUpper()));

                TranslateWiki.Init(chanId, value);
            }

            if (succeedsChan == Config.RESULT_CHANGE && succeedsLang == Config.RESULT_RESET)
            {
                // Different channel, default language
                await ctx.RespondAsync(Locale.GetMessage("configuring-changed-translatewiki-channel", lang, channel.Mention));

                TranslateWiki.Remove(chanId, chanPrevLang);
                TranslateWiki.Init(chanId, value);
            }

            if (succeedsChan == Config.RESULT_CHANGE && succeedsLang == Config.RESULT_SAME)
            {
                // Different channel, same language
                await ctx.RespondAsync(Locale.GetMessage("configuring-changed-translatewiki-channel", lang, channel.Mention));

                TranslateWiki.Remove(chanPrevId, value);
                TranslateWiki.Init(chanId, value);
            }

            if (succeedsChan == Config.RESULT_RESET && succeedsLang == Config.RESULT_CHANGE ||
                (
                    succeedsChan == Config.RESULT_SAME &&
                    (succeedsLang == Config.RESULT_RESET || succeedsLang == Config.RESULT_CHANGE)
                )
                )
            {
                // Same or default channel, different language
                await ctx.RespondAsync(Locale.GetMessage("configuring-changed-translatewiki-lang", lang, value.ToUpper()));

                TranslateWiki.Remove(chanId, chanPrevLang);
                TranslateWiki.Init(chanId, value);
            }

            if (succeedsChan == Config.RESULT_RESET && succeedsLang == Config.RESULT_RESET)
            {
                // Reset both channel and language with -
                await ctx.RespondAsync(Locale.GetMessage("configuring-changed-reset", lang));

                TranslateWiki.Remove(channel.Id.ToString(), value);
            }

            if (succeedsChan == Config.RESULT_STRANGE || succeedsLang == Config.RESULT_STRANGE)
            {
                // Other strange errors
                await ctx.RespondAsync(Locale.GetMessage("configuring-error-strange", lang));
            }
        }