#nullable disable namespace EllieBot.Modules.Searches; public partial class Searches { [Group] public partial class TranslateCommands : EllieModule<ITranslateService> { private readonly FlagTranslateService _flagSvc; public TranslateCommands(FlagTranslateService flagSvc) { _flagSvc = flagSvc; } public enum AutoDeleteAutoTranslate { Del, Nodel } [Cmd] public async Task Translate(string fromLang, string toLang, [Leftover] string text = null) { try { await ctx.Channel.TriggerTypingAsync(); var translation = await _service.Translate(fromLang, toLang, text); var embed = CreateEmbed() .WithOkColor() .WithTitle(fromLang) .WithDescription(text); var embed2 = CreateEmbed() .WithOkColor() .WithTitle(toLang) .WithDescription(translation); await Response() .Embeds([embed, embed2]) .SendAsync(); } catch { await Response().Error(strs.bad_input_format).SendAsync(); } } [Cmd] [RequireContext(ContextType.Guild)] [UserPerm(GuildPerm.Administrator)] [BotPerm(ChannelPerm.ManageMessages)] [OwnerOnly] public async Task AutoTranslate(AutoDeleteAutoTranslate autoDelete = AutoDeleteAutoTranslate.Nodel) { var toggle = await _service.ToggleAtl(ctx.Guild.Id, ctx.Channel.Id, autoDelete == AutoDeleteAutoTranslate.Del); if (toggle) await Response().Confirm(strs.atl_started).SendAsync(); else await Response().Confirm(strs.atl_stopped).SendAsync(); } [Cmd] [RequireContext(ContextType.Guild)] public async Task AutoTransLang() { if (await _service.UnregisterUser(ctx.Channel.Id, ctx.User.Id)) await Response().Confirm(strs.atl_removed).SendAsync(); } [Cmd] [RequireContext(ContextType.Guild)] public async Task AutoTransLang(string fromLang, string toLang) { var succ = await _service.RegisterUserAsync(ctx.User.Id, ctx.Channel.Id, fromLang.ToLower(), toLang.ToLower()); if (succ is null) { await Response().Error(strs.atl_not_enabled).SendAsync(); return; } if (succ is false) { await Response().Error(strs.invalid_lang).SendAsync(); return; } await Response().Confirm(strs.atl_set(fromLang, toLang)).SendAsync(); } [Cmd] [RequireContext(ContextType.Guild)] public async Task Translangs() { var langs = _service.GetLanguages().ToList(); var eb = CreateEmbed() .WithTitle(GetText(strs.supported_languages)) .WithOkColor(); foreach (var chunk in langs.Chunk(15)) { eb.AddField("", chunk.Join("\n"), inline: true); } await Response().Embed(eb).SendAsync(); } [Cmd] [RequireContext(ContextType.Guild)] [UserPerm(ChannelPermission.ManageChannels)] [BotPerm(ChannelPermission.SendMessages | ChannelPermission.EmbedLinks)] public async Task TranslateFlags() { var enabled = await _flagSvc.Toggle(ctx.Guild.Id, ctx.Channel.Id); if (enabled) await Response().Confirm(strs.trfl_enabled).SendAsync(); else await Response().Confirm(strs.trfl_disabled).SendAsync(); } } }