diff --git a/src/NadekoBot/Modules/Searches/Translate/TranslatorCommands.cs b/src/NadekoBot/Modules/Searches/Translate/TranslatorCommands.cs index a4e4c0b44..d8eb58086 100644 --- a/src/NadekoBot/Modules/Searches/Translate/TranslatorCommands.cs +++ b/src/NadekoBot/Modules/Searches/Translate/TranslatorCommands.cs @@ -77,6 +77,19 @@ public partial class Searches [Cmd] [RequireContext(ContextType.Guild)] public async Task Translangs() - => await ctx.Channel.SendTableAsync(_service.GetLanguages(), str => $"{str,-15}"); + { + var langs = _service.GetLanguages().ToList(); + + var eb = _eb.Create() + .WithTitle($"Supported {prefix}translate Languages") + .WithOkColor(); + + foreach (var chunk in langs.Chunk(15)) + { + eb.AddField("󠀁", chunk.Join("\n"), isInline: true); + } + + await ctx.Channel.EmbedAsync(eb); + } } } \ No newline at end of file diff --git a/src/NadekoBot/Services/Impl/GoogleApiService.cs b/src/NadekoBot/Services/Impl/GoogleApiService.cs index 1fd19f23b..dd7b06189 100644 --- a/src/NadekoBot/Services/Impl/GoogleApiService.cs +++ b/src/NadekoBot/Services/Impl/GoogleApiService.cs @@ -10,142 +10,11 @@ using System.Xml; namespace NadekoBot.Services; -public class GoogleApiService : IGoogleApiService, INService +public sealed partial class GoogleApiService : IGoogleApiService, INService { private static readonly Regex _plRegex = new("(?:youtu\\.be\\/|list=)(?[\\da-zA-Z\\-_]*)", RegexOptions.Compiled); - public IReadOnlyDictionary Languages { get; } = new Dictionary - { - { "afrikaans", "af" }, - { "albanian", "sq" }, - { "arabic", "ar" }, - { "armenian", "hy" }, - { "azerbaijani", "az" }, - { "basque", "eu" }, - { "belarusian", "be" }, - { "bengali", "bn" }, - { "bulgarian", "bg" }, - { "catalan", "ca" }, - { "chinese", "zh-CN" }, - { "chinese-trad", "zh-TW" }, - { "croatian", "hr" }, - { "czech", "cs" }, - { "danish", "da" }, - { "dutch", "nl" }, - { "english", "en" }, - { "esperanto", "eo" }, - { "estonian", "et" }, - { "filipino", "tl" }, - { "finnish", "fi" }, - { "french", "fr" }, - { "galician", "gl" }, - { "german", "de" }, - { "georgian", "ka" }, - { "greek", "el" }, - { "haitian Creole", "ht" }, - { "hebrew", "iw" }, - { "hindi", "hi" }, - { "hungarian", "hu" }, - { "icelandic", "is" }, - { "indonesian", "id" }, - { "irish", "ga" }, - { "italian", "it" }, - { "japanese", "ja" }, - { "korean", "ko" }, - { "lao", "lo" }, - { "latin", "la" }, - { "latvian", "lv" }, - { "lithuanian", "lt" }, - { "macedonian", "mk" }, - { "malay", "ms" }, - { "maltese", "mt" }, - { "norwegian", "no" }, - { "persian", "fa" }, - { "polish", "pl" }, - { "portuguese", "pt" }, - { "romanian", "ro" }, - { "russian", "ru" }, - { "serbian", "sr" }, - { "slovak", "sk" }, - { "slovenian", "sl" }, - { "spanish", "es" }, - { "swahili", "sw" }, - { "swedish", "sv" }, - { "tamil", "ta" }, - { "telugu", "te" }, - { "thai", "th" }, - { "turkish", "tr" }, - { "ukrainian", "uk" }, - { "urdu", "ur" }, - { "vietnamese", "vi" }, - { "welsh", "cy" }, - { "yiddish", "yi" }, - { "af", "af" }, - { "sq", "sq" }, - { "ar", "ar" }, - { "hy", "hy" }, - { "az", "az" }, - { "eu", "eu" }, - { "be", "be" }, - { "bn", "bn" }, - { "bg", "bg" }, - { "ca", "ca" }, - { "zh-tw", "zh-TW" }, - { "zh-cn", "zh-CN" }, - { "hr", "hr" }, - { "cs", "cs" }, - { "da", "da" }, - { "nl", "nl" }, - { "en", "en" }, - { "eo", "eo" }, - { "et", "et" }, - { "tl", "tl" }, - { "fi", "fi" }, - { "fr", "fr" }, - { "gl", "gl" }, - { "de", "de" }, - { "ka", "ka" }, - { "el", "el" }, - { "ht", "ht" }, - { "iw", "iw" }, - { "hi", "hi" }, - { "hu", "hu" }, - { "is", "is" }, - { "id", "id" }, - { "ga", "ga" }, - { "it", "it" }, - { "ja", "ja" }, - { "ko", "ko" }, - { "lo", "lo" }, - { "la", "la" }, - { "lv", "lv" }, - { "lt", "lt" }, - { "mk", "mk" }, - { "ms", "ms" }, - { "mt", "mt" }, - { "no", "no" }, - { "fa", "fa" }, - { "pl", "pl" }, - { "pt", "pt" }, - { "ro", "ro" }, - { "ru", "ru" }, - { "sr", "sr" }, - { "sk", "sk" }, - { "sl", "sl" }, - { "es", "es" }, - { "sw", "sw" }, - { "sv", "sv" }, - { "ta", "ta" }, - { "te", "te" }, - { "th", "th" }, - { "tr", "tr" }, - { "uk", "uk" }, - { "ur", "ur" }, - { "vi", "vi" }, - { "cy", "cy" }, - { "yi", "yi" } - }; private readonly YouTubeService _yt; private readonly UrlshortenerService _sh; @@ -154,7 +23,7 @@ public class GoogleApiService : IGoogleApiService, INService private readonly IBotCredsProvider _creds; private readonly IHttpClientFactory _httpFactory; - public GoogleApiService(IBotCredsProvider creds, IHttpClientFactory factory) + public GoogleApiService(IBotCredsProvider creds, IHttpClientFactory factory) : this() { _creds = creds; _httpFactory = factory; diff --git a/src/NadekoBot/Services/Impl/GoogleApiService_SupportedLanguages.cs b/src/NadekoBot/Services/Impl/GoogleApiService_SupportedLanguages.cs new file mode 100644 index 000000000..6b1023bd3 --- /dev/null +++ b/src/NadekoBot/Services/Impl/GoogleApiService_SupportedLanguages.cs @@ -0,0 +1,158 @@ +namespace NadekoBot.Services; + +public sealed partial class GoogleApiService +{ + private const string SUPPORTED = @"afrikaans af +albanian sq +amharic am +arabic ar +armenian hy +assamese as +aymara ay +azerbaijani az +bambara bm +basque eu +belarusian be +bengali bn +bhojpuri bho +bosnian bs +bulgarian bg +catalan ca +cebuano ceb +chinese zh-CN +chinese-trad zh-TW +corsican co +croatian hr +czech cs +danish da +dhivehi dv +dogri doi +dutch nl +english en +esperanto eo +estonian et +ewe ee +filipino fil +finnish fi +french fr +frisian fy +galician gl +georgian ka +german de +greek el +guarani gn +gujarati gu +haitian ht +hausa ha +hawaiian haw +hebrew he +hindi hi +hmong hmn +hungarian hu +icelandic is +igbo ig +ilocano ilo +indonesian id +irish ga +italian it +japanese ja +javanese jv +kannada kn +kazakh kk +khmer km +kinyarwanda rw +konkani gom +korean ko +krio kri +kurdish ku +kurdish-sor ckb +kyrgyz ky +lao lo +latin la +latvian lv +lingala ln +lithuanian lt +luganda lg +luxembourgish lb +macedonian mk +maithili mai +malagasy mg +malay ms +malayalam ml +maltese mt +maori mi +marathi mr +meiteilon mni-Mtei +mizo lus +mongolian mn +myanmar my +nepali ne +norwegian no +nyanja ny +odia or +oromo om +pashto ps +persian fa +polish pl +portuguese pt +punjabi pa +quechua qu +romanian ro +russian ru +samoan sm +sanskrit sa +scots gd +sepedi nso +serbian sr +sesotho st +shona sn +sindhi sd +sinhala si +slovak sk +slovenian sl +somali so +spanish es +sundanese su +swahili sw +swedish sv +tagalog tl +tajik tg +tamil ta +tatar tt +telugu te +thai th +tigrinya ti +tsonga ts +turkish tr +turkmen tk +twi ak +ukrainian uk +urdu ur +uyghur ug +uzbek uz +vietnamese vi +welsh cy +xhosa xh +yiddish yi +yoruba yo +zulu zu"; + + + public IReadOnlyDictionary Languages { get; } + + private GoogleApiService() + { + var langs = SUPPORTED.Split("\n") + .Select(x => x.Split(' ')) + .ToDictionary(x => x[0].Trim(), x => x[1].Trim()); + + foreach (var (_, v) in langs.ToArray()) + { + langs.Add(v, v); + } + + Languages = langs; + + } + +} \ No newline at end of file diff --git a/src/NadekoBot/_Extensions/IMessageChannelExtensions.cs b/src/NadekoBot/_Extensions/IMessageChannelExtensions.cs index 0fdc733c2..47cfcc114 100644 --- a/src/NadekoBot/_Extensions/IMessageChannelExtensions.cs +++ b/src/NadekoBot/_Extensions/IMessageChannelExtensions.cs @@ -151,27 +151,6 @@ public static class MessageChannelExtensions string? footer = null) => ch.SendAsync(eb, MessageType.Error, title, text, url, footer); - // weird stuff - - public static Task SendTableAsync( - this IMessageChannel ch, - string seed, - IEnumerable items, - Func howToPrint, - int columns = 3) - => ch.SendMessageAsync($@"{seed}```xl -{items.Chunk(columns) - .Select(ig => string.Concat(ig.Select(howToPrint))) - .Join("\n")} -```"); - - public static Task SendTableAsync( - this IMessageChannel ch, - IEnumerable items, - Func howToPrint, - int columns = 3) - => ch.SendTableAsync("", items, howToPrint, columns); - public static Task SendPaginatedConfirmAsync( this ICommandContext ctx, int currentPage,