mirror of
				https://gitlab.com/Kwoth/nadekobot.git
				synced 2025-11-03 16:24:27 -05:00 
			
		
		
		
	Added full list of supported languages for .trans command, improved .translangs output
This commit is contained in:
		@@ -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);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -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=)(?<id>[\\da-zA-Z\\-_]*)", RegexOptions.Compiled);
 | 
			
		||||
 | 
			
		||||
    public IReadOnlyDictionary<string, string> Languages { get; } = new Dictionary<string, string>
 | 
			
		||||
    {
 | 
			
		||||
        { "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;
 | 
			
		||||
 
 | 
			
		||||
@@ -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<string, string> 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;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -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<IUserMessage> SendTableAsync<T>(
 | 
			
		||||
        this IMessageChannel ch,
 | 
			
		||||
        string seed,
 | 
			
		||||
        IEnumerable<T> items,
 | 
			
		||||
        Func<T, string> howToPrint,
 | 
			
		||||
        int columns = 3)
 | 
			
		||||
        => ch.SendMessageAsync($@"{seed}```xl
 | 
			
		||||
{items.Chunk(columns)
 | 
			
		||||
      .Select(ig => string.Concat(ig.Select(howToPrint)))
 | 
			
		||||
      .Join("\n")}
 | 
			
		||||
```");
 | 
			
		||||
 | 
			
		||||
    public static Task<IUserMessage> SendTableAsync<T>(
 | 
			
		||||
        this IMessageChannel ch,
 | 
			
		||||
        IEnumerable<T> items,
 | 
			
		||||
        Func<T, string> howToPrint,
 | 
			
		||||
        int columns = 3)
 | 
			
		||||
        => ch.SendTableAsync("", items, howToPrint, columns);
 | 
			
		||||
 | 
			
		||||
    public static Task SendPaginatedConfirmAsync(
 | 
			
		||||
        this ICommandContext ctx,
 | 
			
		||||
        int currentPage,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user