static TranslateCommands() { TranslatedChannels = new ConcurrentDictionary <ulong, bool>(); UserLanguages = new ConcurrentDictionary <UserChannelPair, string>(); NadekoBot.Client.MessageReceived += (msg) => { var umsg = msg as IUserMessage; if (umsg == null) { return(Task.CompletedTask); } bool autoDelete; if (!TranslatedChannels.TryGetValue(umsg.Channel.Id, out autoDelete)) { return(Task.CompletedTask); } var t = Task.Run(async() => { var key = new UserChannelPair() { UserId = umsg.Author.Id, ChannelId = umsg.Channel.Id, }; string langs; if (!UserLanguages.TryGetValue(key, out langs)) { return; } try { var text = await TranslateInternal(umsg, langs, umsg.Resolve(UserMentionHandling.Ignore), true) .ConfigureAwait(false); if (autoDelete) { try { await umsg.DeleteAsync().ConfigureAwait(false); } catch { } } await umsg.Channel.SendMessageAsync($"{umsg.Author.Mention} `said:` " + text.Replace("<@ ", "<@").Replace("<@! ", "<@!")).ConfigureAwait(false); } catch { } }); return(Task.CompletedTask); }; }
static TranslateCommands() { NadekoBot.Client.MessageReceived += async(msg) => { try { var umsg = msg as SocketUserMessage; if (umsg == null) { return; } bool autoDelete; if (!TranslatedChannels.TryGetValue(umsg.Channel.Id, out autoDelete)) { return; } var key = new UserChannelPair() { UserId = umsg.Author.Id, ChannelId = umsg.Channel.Id, }; string langs; if (!UserLanguages.TryGetValue(key, out langs)) { return; } var text = await TranslateInternal(langs, umsg.Resolve(TagHandling.Ignore), true) .ConfigureAwait(false); if (autoDelete) { try { await umsg.DeleteAsync().ConfigureAwait(false); } catch { } } await umsg.Channel.SendConfirmAsync($"{umsg.Author.Mention} `:` " + text.Replace("<@ ", "<@").Replace("<@! ", "<@!")).ConfigureAwait(false); } catch { } }; }
static TranslateCommands() { TranslatedChannels = new ConcurrentDictionary<ulong, bool>(); UserLanguages = new ConcurrentDictionary<UserChannelPair, string>(); NadekoBot.Client.MessageReceived += (msg) => { var umsg = msg as IUserMessage; if(umsg == null) return Task.CompletedTask; bool autoDelete; if (!TranslatedChannels.TryGetValue(umsg.Channel.Id, out autoDelete)) return Task.CompletedTask; var t = Task.Run(async () => { var key = new UserChannelPair() { UserId = umsg.Author.Id, ChannelId = umsg.Channel.Id, }; string langs; if (!UserLanguages.TryGetValue(key, out langs)) return; try { var text = await TranslateInternal(umsg, langs, umsg.Resolve(UserMentionHandling.Ignore), true) .ConfigureAwait(false); if (autoDelete) try { await umsg.DeleteAsync().ConfigureAwait(false); } catch { } await umsg.Channel.SendMessageAsync($"{umsg.Author.Mention} `:` "+text.Replace("<@ ", "<@").Replace("<@! ", "<@!")).ConfigureAwait(false); } catch { } }); return Task.CompletedTask; }; }
public async Task AutoTransLang(IUserMessage msg, [Remainder] string langs = null) { var channel = (ITextChannel)msg.Channel; var ucp = new UserChannelPair { UserId = msg.Author.Id, ChannelId = msg.Channel.Id, }; if (string.IsNullOrWhiteSpace(langs)) { if (UserLanguages.TryRemove(ucp, out langs)) { await channel.SendMessageAsync($"{msg.Author.Mention}'s auto-translate language has been removed.").ConfigureAwait(false); } return; } var langarr = langs.ToLowerInvariant().Split('>'); if (langarr.Length != 2) { return; } var from = langarr[0]; var to = langarr[1]; if (!GoogleTranslator.Instance.Languages.Contains(from) || !GoogleTranslator.Instance.Languages.Contains(to)) { try { await channel.SendMessageAsync("`Invalid source and/or target Language.`").ConfigureAwait(false); } catch { } return; } UserLanguages.AddOrUpdate(ucp, langs, (key, val) => langs); await channel.SendMessageAsync(":ok:").ConfigureAwait(false); }
public async Task AutoTransLang([Remainder] string langs = null) { var ucp = new UserChannelPair { UserId = Context.User.Id, ChannelId = Context.Channel.Id, }; if (string.IsNullOrWhiteSpace(langs)) { if (_searches.UserLanguages.TryRemove(ucp, out langs)) { await ReplyConfirmLocalized("atl_removed").ConfigureAwait(false); } return; } var langarr = langs.ToLowerInvariant().Split('>'); if (langarr.Length != 2) { return; } var from = langarr[0]; var to = langarr[1]; if (!_google.Languages.Contains(from) || !_google.Languages.Contains(to)) { await ReplyErrorLocalized("invalid_lang").ConfigureAwait(false); return; } _searches.UserLanguages.AddOrUpdate(ucp, langs, (key, val) => langs); await ReplyConfirmLocalized("atl_set", from, to).ConfigureAwait(false); }
public async Task AutoTransLang([Remainder] string langs = null) { var ucp = new UserChannelPair { UserId = Context.User.Id, ChannelId = Context.Channel.Id, }; if (string.IsNullOrWhiteSpace(langs)) { if (UserLanguages.TryRemove(ucp, out langs)) { await Context.Channel.SendConfirmAsync($"{Context.User.Mention}'s auto-translate language has been removed.").ConfigureAwait(false); } return; } var langarr = langs.ToLowerInvariant().Split('>'); if (langarr.Length != 2) { return; } var from = langarr[0]; var to = langarr[1]; if (!GoogleTranslator.Instance.Languages.Contains(from) || !GoogleTranslator.Instance.Languages.Contains(to)) { try { await Context.Channel.SendErrorAsync("Invalid source and/or target language.").ConfigureAwait(false); } catch { } return; } UserLanguages.AddOrUpdate(ucp, langs, (key, val) => langs); await Context.Channel.SendConfirmAsync($"Your auto-translate language has been set to {from}>{to}").ConfigureAwait(false); }
public SearchesService(DiscordSocketClient client, IGoogleApiService google, DbService db, Kotocorn bot, IDataCache cache, FontProvider fonts) { Http = new HttpClient(); Http.AddFakeHeaders(); _client = client; _google = google; _db = db; _log = LogManager.GetCurrentClassLogger(); _imgs = cache.LocalImages; _cache = cache; _fonts = fonts; _blacklistedTags = new ConcurrentDictionary <ulong, HashSet <string> >( bot.AllGuildConfigs.ToDictionary( x => x.GuildId, x => new HashSet <string>(x.NsfwBlacklistedTags.Select(y => y.Tag)))); //translate commands _client.MessageReceived += (msg) => { var _ = Task.Run(async() => { try { var umsg = msg as SocketUserMessage; if (umsg == null) { return; } if (!TranslatedChannels.TryGetValue(umsg.Channel.Id, out var autoDelete)) { return; } var key = new UserChannelPair() { UserId = umsg.Author.Id, ChannelId = umsg.Channel.Id, }; if (!UserLanguages.TryGetValue(key, out string langs)) { return; } var text = await Translate(langs, umsg.Resolve(TagHandling.Ignore)) .ConfigureAwait(false); if (autoDelete) { try { await umsg.DeleteAsync().ConfigureAwait(false); } catch { } } await umsg.Channel.SendConfirmAsync($"{umsg.Author.Mention} `:` " + text.Replace("<@ ", "<@").Replace("<@! ", "<@!")).ConfigureAwait(false); } catch { } }); return(Task.CompletedTask); }; //joke commands if (File.Exists("data/wowjokes.json")) { WowJokes = JsonConvert.DeserializeObject <List <WoWJoke> >(File.ReadAllText("data/wowjokes.json")); } else { _log.Warn("data/wowjokes.json is missing. WOW Jokes are not loaded."); } if (File.Exists("data/magicitems.json")) { MagicItems = JsonConvert.DeserializeObject <List <MagicItem> >(File.ReadAllText("data/magicitems.json")); } else { _log.Warn("data/magicitems.json is missing. Magic items are not loaded."); } }
public async Task AutoTransLang(IUserMessage msg, [Remainder] string langs = null) { var channel = (ITextChannel)msg.Channel; var ucp = new UserChannelPair { UserId = msg.Author.Id, ChannelId = msg.Channel.Id, }; if (string.IsNullOrWhiteSpace(langs)) { if (UserLanguages.TryRemove(ucp, out langs)) await channel.SendMessageAsync($"{msg.Author.Mention}'s auto-translate language has been removed.").ConfigureAwait(false); return; } var langarr = langs.ToLowerInvariant().Split('>'); if (langarr.Length != 2) return; var from = langarr[0]; var to = langarr[1]; if (!GoogleTranslator.Instance.Languages.Contains(from) || !GoogleTranslator.Instance.Languages.Contains(to)) { try { await channel.SendMessageAsync("`Invalid source and/or target Language.`").ConfigureAwait(false); } catch { } return; } UserLanguages.AddOrUpdate(ucp, langs, (key, val) => langs); await channel.SendMessageAsync(":ok:").ConfigureAwait(false); }