.reloadimages owner-only command added.
This commit is contained in:
		@@ -3,6 +3,7 @@ using Discord.Commands;
 | 
				
			|||||||
using NadekoBot.Attributes;
 | 
					using NadekoBot.Attributes;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Diagnostics;
 | 
				
			||||||
using System.IO;
 | 
					using System.IO;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Net.Http;
 | 
					using System.Net.Http;
 | 
				
			||||||
@@ -168,6 +169,23 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
                await Context.Channel.SendConfirmAsync("🆗").ConfigureAwait(false);
 | 
					                await Context.Channel.SendConfirmAsync("🆗").ConfigureAwait(false);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
 | 
					            [RequireContext(ContextType.Guild)]
 | 
				
			||||||
 | 
					            [OwnerOnly]
 | 
				
			||||||
 | 
					            public async Task ReloadImages()
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var channel = (ITextChannel)Context.Channel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var msg = await Context.Channel.SendMessageAsync("Reloading Images...").ConfigureAwait(false);
 | 
				
			||||||
 | 
					                var sw = Stopwatch.StartNew();
 | 
				
			||||||
 | 
					                await NadekoBot.Images.Reload().ConfigureAwait(false);
 | 
				
			||||||
 | 
					                sw.Stop();
 | 
				
			||||||
 | 
					                await msg.ModifyAsync(x =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    x.Content = "✅ Images reloaded.";
 | 
				
			||||||
 | 
					                }).ConfigureAwait(false);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            private static UserStatus SettableUserStatusToUserStatus(SettableUserStatus sus)
 | 
					            private static UserStatus SettableUserStatusToUserStatus(SettableUserStatus sus)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                switch (sus)
 | 
					                switch (sus)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,62 +51,70 @@ namespace NadekoBot.Modules.Games
 | 
				
			|||||||
                    .SelectMany(c => c.GenerateCurrencyChannelIds.Select(obj => obj.ChannelId)));
 | 
					                    .SelectMany(c => c.GenerateCurrencyChannelIds.Select(obj => obj.ChannelId)));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            private static async Task PotentialFlowerGeneration(SocketMessage imsg)
 | 
					            private static Task PotentialFlowerGeneration(SocketMessage imsg)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                try
 | 
					                var msg = imsg as SocketUserMessage;
 | 
				
			||||||
 | 
					                if (msg == null || msg.IsAuthor() || msg.Author.IsBot)
 | 
				
			||||||
 | 
					                    return Task.CompletedTask;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var channel = imsg.Channel as ITextChannel;
 | 
				
			||||||
 | 
					                if (channel == null)
 | 
				
			||||||
 | 
					                    return Task.CompletedTask;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (!generationChannels.Contains(channel.Id))
 | 
				
			||||||
 | 
					                    return Task.CompletedTask;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var _ = Task.Run(async () =>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var msg = imsg as SocketUserMessage;
 | 
					                    try
 | 
				
			||||||
                    if (msg == null || msg.IsAuthor() || msg.Author.IsBot)
 | 
					 | 
				
			||||||
                        return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    var channel = imsg.Channel as ITextChannel;
 | 
					 | 
				
			||||||
                    if (channel == null)
 | 
					 | 
				
			||||||
                        return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    if (!generationChannels.Contains(channel.Id))
 | 
					 | 
				
			||||||
                        return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    var lastGeneration = lastGenerations.GetOrAdd(channel.Id, DateTime.MinValue);
 | 
					 | 
				
			||||||
                    var rng = new NadekoRandom();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    if (DateTime.Now - TimeSpan.FromSeconds(NadekoBot.BotConfig.CurrencyGenerationCooldown) < lastGeneration) //recently generated in this channel, don't generate again
 | 
					 | 
				
			||||||
                        return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    var num = rng.Next(1, 101) + NadekoBot.BotConfig.CurrencyGenerationChance * 100;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    if (num > 100)
 | 
					 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        lastGenerations.AddOrUpdate(channel.Id, DateTime.Now, (id, old) => DateTime.Now);
 | 
					                        var lastGeneration = lastGenerations.GetOrAdd(channel.Id, DateTime.MinValue);
 | 
				
			||||||
 | 
					                        var rng = new NadekoRandom();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        var dropAmount = NadekoBot.BotConfig.CurrencyDropAmount;
 | 
					                        //todo i'm stupid :rofl: wtg kwoth. real async programming :100: :ok_hand: :100: :100: :thumbsup:
 | 
				
			||||||
 | 
					                        if (DateTime.Now - TimeSpan.FromSeconds(NadekoBot.BotConfig.CurrencyGenerationCooldown) < lastGeneration) //recently generated in this channel, don't generate again
 | 
				
			||||||
 | 
					                            return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        if (dropAmount > 0)
 | 
					                        var num = rng.Next(1, 101) + NadekoBot.BotConfig.CurrencyGenerationChance * 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if (num > 100)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            var msgs = new IUserMessage[dropAmount];
 | 
					                            lastGenerations.AddOrUpdate(channel.Id, DateTime.Now, (id, old) => DateTime.Now);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            string firstPart;
 | 
					                            var dropAmount = NadekoBot.BotConfig.CurrencyDropAmount;
 | 
				
			||||||
                            if (dropAmount == 1)
 | 
					
 | 
				
			||||||
 | 
					                            if (dropAmount > 0)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                firstPart = $"A random { NadekoBot.BotConfig.CurrencyName } appeared!";
 | 
					                                var msgs = new IUserMessage[dropAmount];
 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                            else
 | 
					 | 
				
			||||||
                            {
 | 
					 | 
				
			||||||
                                firstPart = $"{dropAmount} random { NadekoBot.BotConfig.CurrencyPluralName } appeared!";
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                            var file = GetRandomCurrencyImage();
 | 
					 | 
				
			||||||
                            var sent = await channel.SendFileAsync(
 | 
					 | 
				
			||||||
                                file.Item2,
 | 
					 | 
				
			||||||
                                file.Item1,
 | 
					 | 
				
			||||||
                                $"❗ {firstPart} Pick it up by typing `{NadekoBot.ModulePrefixes[typeof(Games).Name]}pick`")
 | 
					 | 
				
			||||||
                                    .ConfigureAwait(false);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            msgs[0] = sent;
 | 
					                                string firstPart;
 | 
				
			||||||
 | 
					                                if (dropAmount == 1)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    firstPart = $"A random { NadekoBot.BotConfig.CurrencyName } appeared!";
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                else
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    firstPart = $"{dropAmount} random { NadekoBot.BotConfig.CurrencyPluralName } appeared!";
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                var file = GetRandomCurrencyImage();
 | 
				
			||||||
 | 
					                                var sent = await channel.SendFileAsync(
 | 
				
			||||||
 | 
					                                    file.Item2,
 | 
				
			||||||
 | 
					                                    file.Item1,
 | 
				
			||||||
 | 
					                                    $"❗ {firstPart} Pick it up by typing `{NadekoBot.ModulePrefixes[typeof(Games).Name]}pick`")
 | 
				
			||||||
 | 
					                                        .ConfigureAwait(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            plantedFlowers.AddOrUpdate(channel.Id, msgs.ToList(), (id, old) => { old.AddRange(msgs); return old; });
 | 
					                                msgs[0] = sent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                plantedFlowers.AddOrUpdate(channel.Id, msgs.ToList(), (id, old) => { old.AddRange(msgs); return old; });
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                    catch (Exception ex)
 | 
				
			||||||
                catch { }
 | 
					                    {
 | 
				
			||||||
 | 
					                        _log.Warn(ex);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					                return Task.CompletedTask;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            [NadekoCommand, Usage, Description, Aliases]
 | 
					            [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
@@ -162,7 +170,7 @@ namespace NadekoBot.Modules.Games
 | 
				
			|||||||
                var file = GetRandomCurrencyImage();
 | 
					                var file = GetRandomCurrencyImage();
 | 
				
			||||||
                IUserMessage msg;
 | 
					                IUserMessage msg;
 | 
				
			||||||
                var vowelFirst = new[] { 'a', 'e', 'i', 'o', 'u' }.Contains(NadekoBot.BotConfig.CurrencyName[0]);
 | 
					                var vowelFirst = new[] { 'a', 'e', 'i', 'o', 'u' }.Contains(NadekoBot.BotConfig.CurrencyName[0]);
 | 
				
			||||||
                
 | 
					
 | 
				
			||||||
                var msgToSend = $"Oh how Nice! **{Context.User.Username}** planted {(amount == 1 ? (vowelFirst ? "an" : "a") : amount.ToString())} {(amount > 1 ? NadekoBot.BotConfig.CurrencyPluralName : NadekoBot.BotConfig.CurrencyName)}. Pick it using {NadekoBot.ModulePrefixes[typeof(Games).Name]}pick";
 | 
					                var msgToSend = $"Oh how Nice! **{Context.User.Username}** planted {(amount == 1 ? (vowelFirst ? "an" : "a") : amount.ToString())} {(amount > 1 ? NadekoBot.BotConfig.CurrencyPluralName : NadekoBot.BotConfig.CurrencyName)}. Pick it using {NadekoBot.ModulePrefixes[typeof(Games).Name]}pick";
 | 
				
			||||||
                if (file == null)
 | 
					                if (file == null)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										27
									
								
								src/NadekoBot/Resources/CommandStrings.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										27
									
								
								src/NadekoBot/Resources/CommandStrings.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -5621,6 +5621,33 @@ namespace NadekoBot.Resources {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to reloadimages.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string reloadimages_cmd {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("reloadimages_cmd", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to Reloads images bot is using. Safe to use even when bot is being used heavily..
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string reloadimages_desc {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("reloadimages_desc", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to `{0}reloadimages`.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string reloadimages_usage {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("reloadimages_usage", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        ///    Looks up a localized string similar to remind.
 | 
					        ///    Looks up a localized string similar to remind.
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3042,4 +3042,13 @@
 | 
				
			|||||||
  <data name="setmusicchannel_usage" xml:space="preserve">
 | 
					  <data name="setmusicchannel_usage" xml:space="preserve">
 | 
				
			||||||
    <value>`{0}smch`</value>
 | 
					    <value>`{0}smch`</value>
 | 
				
			||||||
  </data>
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="reloadimages_cmd" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>reloadimages</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="reloadimages_desc" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>Reloads images bot is using. Safe to use even when bot is being used heavily.</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="reloadimages_usage" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>`{0}reloadimages`</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
</root>
 | 
					</root>
 | 
				
			||||||
		Reference in New Issue
	
	Block a user