Example #1
0
            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);
                };
            }
Example #2
0
            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 { }
                };
            }
Example #3
0
            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;
                };
            }
Example #4
0
            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);
            }
Example #5
0
            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);
            }
Example #6
0
            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);
            }
Example #7
0
        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.");
            }
        }
Example #8
0
            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);
            }