nsfw translated. whole 5 strings out of which 3 are the same. :)
This commit is contained in:
		@@ -20,8 +20,8 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
    public class NSFW : NadekoModule
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        private static ConcurrentDictionary<ulong, Timer> AutoHentaiTimers { get; } = new ConcurrentDictionary<ulong, Timer>();
 | 
			
		||||
        private static ConcurrentHashSet<ulong> _hentaiBombBlacklist { get; } = new ConcurrentHashSet<ulong>();
 | 
			
		||||
        private static readonly ConcurrentDictionary<ulong, Timer> AutoHentaiTimers = new ConcurrentDictionary<ulong, Timer>();
 | 
			
		||||
        private static readonly ConcurrentHashSet<ulong> HentaiBombBlacklist = new ConcurrentHashSet<ulong>();
 | 
			
		||||
 | 
			
		||||
        private async Task InternalHentai(IMessageChannel channel, string tag, bool noError)
 | 
			
		||||
        {
 | 
			
		||||
@@ -30,7 +30,7 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
            tag = "rating%3Aexplicit+" + tag;
 | 
			
		||||
 | 
			
		||||
            var rng = new NadekoRandom();
 | 
			
		||||
            Task<string> provider = Task.FromResult("");
 | 
			
		||||
            var provider = Task.FromResult("");
 | 
			
		||||
            switch (rng.Next(0, 4))
 | 
			
		||||
            {
 | 
			
		||||
                case 0:
 | 
			
		||||
@@ -45,20 +45,18 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
                case 3:
 | 
			
		||||
                    provider = GetYandereImageLink(tag);
 | 
			
		||||
                    break;
 | 
			
		||||
                default:
 | 
			
		||||
                    break;
 | 
			
		||||
            }
 | 
			
		||||
            var link = await provider.ConfigureAwait(false);
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(link))
 | 
			
		||||
            {
 | 
			
		||||
                if (!noError)
 | 
			
		||||
                    await channel.SendErrorAsync("No results found.").ConfigureAwait(false);
 | 
			
		||||
                    await ReplyErrorLocalized("not_found").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            await channel.EmbedAsync(new EmbedBuilder().WithOkColor()
 | 
			
		||||
                .WithImageUrl(link)
 | 
			
		||||
                .WithDescription("Tag: " + tag))
 | 
			
		||||
                .WithDescription($"{GetText("tag")}: " + tag))
 | 
			
		||||
                .ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -74,11 +72,10 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
 | 
			
		||||
            if (interval == 0)
 | 
			
		||||
            {
 | 
			
		||||
                if (AutoHentaiTimers.TryRemove(Context.Channel.Id, out t))
 | 
			
		||||
                {
 | 
			
		||||
                    t.Change(Timeout.Infinite, Timeout.Infinite); //proper way to disable the timer
 | 
			
		||||
                    await Context.Channel.SendConfirmAsync("Autohentai stopped.").ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
                if (!AutoHentaiTimers.TryRemove(Context.Channel.Id, out t)) return;
 | 
			
		||||
 | 
			
		||||
                t.Change(Timeout.Infinite, Timeout.Infinite); //proper way to disable the timer
 | 
			
		||||
                await ReplyConfirmLocalized("autohentai_stopped").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@@ -96,7 +93,10 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
                    else
 | 
			
		||||
                        await InternalHentai(Context.Channel, tagsArr[new NadekoRandom().Next(0, tagsArr.Length)], true).ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
                catch { }
 | 
			
		||||
                catch
 | 
			
		||||
                {
 | 
			
		||||
                    // ignored
 | 
			
		||||
                }
 | 
			
		||||
            }, null, interval * 1000, interval * 1000);
 | 
			
		||||
 | 
			
		||||
            AutoHentaiTimers.AddOrUpdate(Context.Channel.Id, t, (key, old) =>
 | 
			
		||||
@@ -105,15 +105,16 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
                return t;
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            await Context.Channel.SendConfirmAsync($"Autohentai started. Reposting every {interval}s with one of the following tags:\n{string.Join(", ", tagsArr)}")
 | 
			
		||||
                                 .ConfigureAwait(false);
 | 
			
		||||
            await ReplyConfirmLocalized("autohentai_started", 
 | 
			
		||||
                interval, 
 | 
			
		||||
                string.Join(", ", tagsArr)).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        [NadekoCommand, Usage, Description, Aliases]
 | 
			
		||||
        public async Task HentaiBomb([Remainder] string tag = null)
 | 
			
		||||
        {
 | 
			
		||||
            if (!_hentaiBombBlacklist.Add(Context.User.Id))
 | 
			
		||||
            if (!HentaiBombBlacklist.Add(Context.User.Id))
 | 
			
		||||
                return;
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
@@ -125,19 +126,19 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
                                               GetKonachanImageLink(tag),
 | 
			
		||||
                                               GetYandereImageLink(tag)).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                var linksEnum = links?.Where(l => l != null);
 | 
			
		||||
                var linksEnum = links?.Where(l => l != null).ToArray();
 | 
			
		||||
                if (links == null || !linksEnum.Any())
 | 
			
		||||
                {
 | 
			
		||||
                    await Context.Channel.SendErrorAsync("No results found.").ConfigureAwait(false);
 | 
			
		||||
                    await ReplyErrorLocalized("not_found").ConfigureAwait(false);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                await Context.Channel.SendMessageAsync(String.Join("\n\n", linksEnum)).ConfigureAwait(false);
 | 
			
		||||
                await Context.Channel.SendMessageAsync(string.Join("\n\n", linksEnum)).ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            finally
 | 
			
		||||
            {
 | 
			
		||||
                await Task.Delay(5000).ConfigureAwait(false);
 | 
			
		||||
                _hentaiBombBlacklist.TryRemove(Context.User.Id);
 | 
			
		||||
                HentaiBombBlacklist.TryRemove(Context.User.Id);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
@@ -157,7 +158,7 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
            var url = await GetE621ImageLink(tag).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
            if (url == null)
 | 
			
		||||
                await Context.Channel.SendErrorAsync(Context.User.Mention + " No results.");
 | 
			
		||||
                await ReplyErrorLocalized("not_found").ConfigureAwait(false);
 | 
			
		||||
            else
 | 
			
		||||
                await Context.Channel.EmbedAsync(new EmbedBuilder().WithOkColor()
 | 
			
		||||
                    .WithDescription(Context.User.Mention + " " + tag)
 | 
			
		||||
@@ -178,7 +179,7 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
            var url = await GetDanbooruImageLink(tag).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
            if (url == null)
 | 
			
		||||
                await Context.Channel.SendErrorAsync(Context.User.Mention + " No results.").ConfigureAwait(false);
 | 
			
		||||
                await ReplyErrorLocalized("not_found").ConfigureAwait(false);
 | 
			
		||||
            else
 | 
			
		||||
                await Context.Channel.EmbedAsync(new EmbedBuilder().WithOkColor()
 | 
			
		||||
                    .WithDescription(Context.User.Mention + " " + tag)
 | 
			
		||||
@@ -227,9 +228,9 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
                JToken obj;
 | 
			
		||||
                using (var http = new HttpClient())
 | 
			
		||||
                {
 | 
			
		||||
                    obj = JArray.Parse(await http.GetStringAsync($"http://api.oboobs.ru/boobs/{ new NadekoRandom().Next(0, 10330) }").ConfigureAwait(false))[0];
 | 
			
		||||
                    obj = JArray.Parse(await http.GetStringAsync($"http://api.oboobs.ru/boobs/{new NadekoRandom().Next(0, 10330)}").ConfigureAwait(false))[0];
 | 
			
		||||
                }
 | 
			
		||||
                await Context.Channel.SendMessageAsync($"http://media.oboobs.ru/{ obj["preview"].ToString() }").ConfigureAwait(false);
 | 
			
		||||
                await Context.Channel.SendMessageAsync($"http://media.oboobs.ru/{obj["preview"]}").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
@@ -245,9 +246,9 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
                JToken obj;
 | 
			
		||||
                using (var http = new HttpClient())
 | 
			
		||||
                {
 | 
			
		||||
                    obj = JArray.Parse(await http.GetStringAsync($"http://api.obutts.ru/butts/{ new NadekoRandom().Next(0, 4335) }").ConfigureAwait(false))[0];
 | 
			
		||||
                    obj = JArray.Parse(await http.GetStringAsync($"http://api.obutts.ru/butts/{new NadekoRandom().Next(0, 4335)}").ConfigureAwait(false))[0];
 | 
			
		||||
                }
 | 
			
		||||
                await Context.Channel.SendMessageAsync($"http://media.obutts.ru/{ obj["preview"].ToString() }").ConfigureAwait(false);
 | 
			
		||||
                await Context.Channel.SendMessageAsync($"http://media.obutts.ru/{obj["preview"]}").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								src/NadekoBot/Resources/ResponseStrings.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										37
									
								
								src/NadekoBot/Resources/ResponseStrings.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -383,6 +383,43 @@ namespace NadekoBot.Resources {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///    Looks up a localized string similar to Autohentai started. Reposting every {0}s with one of the following tags:
 | 
			
		||||
        ///{1}.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public static string nsfw_autohentai_started {
 | 
			
		||||
            get {
 | 
			
		||||
                return ResourceManager.GetString("nsfw_autohentai_started", resourceCulture);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///    Looks up a localized string similar to Autohentai stopped..
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public static string nsfw_autohentai_stopped {
 | 
			
		||||
            get {
 | 
			
		||||
                return ResourceManager.GetString("nsfw_autohentai_stopped", resourceCulture);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///    Looks up a localized string similar to No results found..
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public static string nsfw_not_found {
 | 
			
		||||
            get {
 | 
			
		||||
                return ResourceManager.GetString("nsfw_not_found", resourceCulture);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///    Looks up a localized string similar to Tag.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public static string nsfw_tag {
 | 
			
		||||
            get {
 | 
			
		||||
                return ResourceManager.GetString("nsfw_tag", resourceCulture);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        ///    Looks up a localized string similar to {0} has already fainted..
 | 
			
		||||
        /// </summary>
 | 
			
		||||
 
 | 
			
		||||
@@ -225,6 +225,12 @@
 | 
			
		||||
  <data name="customreactions_trigger" xml:space="preserve">
 | 
			
		||||
    <value>Trigger</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="nsfw_autohentai_stopped" xml:space="preserve">
 | 
			
		||||
    <value>Autohentai stopped.</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="nsfw_not_found" xml:space="preserve">
 | 
			
		||||
    <value>No results found.</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="pokemon_already_fainted" xml:space="preserve">
 | 
			
		||||
    <value>{0} has already fainted.</value>
 | 
			
		||||
  </data>
 | 
			
		||||
@@ -292,4 +298,11 @@
 | 
			
		||||
  <data name="pokemon_you_fainted" xml:space="preserve">
 | 
			
		||||
    <value>You fainted, so you are not able to move!</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="nsfw_autohentai_started" xml:space="preserve">
 | 
			
		||||
    <value>Autohentai started. Reposting every {0}s with one of the following tags:
 | 
			
		||||
{1}</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="nsfw_tag" xml:space="preserve">
 | 
			
		||||
    <value>Tag</value>
 | 
			
		||||
  </data>
 | 
			
		||||
</root>
 | 
			
		||||
@@ -292,4 +292,17 @@
 | 
			
		||||
  <data name="customreactions_trigger" xml:space="preserve">
 | 
			
		||||
    <value>Окидач</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="nsfw_autohentai_started" xml:space="preserve">
 | 
			
		||||
    <value>Аутохентаи започет. Постоваћу сваких {0} сек. користећи један од следећих тагова:
 | 
			
		||||
{1}</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="nsfw_autohentai_stopped" xml:space="preserve">
 | 
			
		||||
    <value>АутоХентаи заустављен.</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="nsfw_no_results" xml:space="preserve">
 | 
			
		||||
    <value>Нема резултата.</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="nsfw_tag" xml:space="preserve">
 | 
			
		||||
    <value>Таг</value>
 | 
			
		||||
  </data>
 | 
			
		||||
</root>
 | 
			
		||||
		Reference in New Issue
	
	Block a user