Simplified sending, more gambling done but commented out (needs DB)
This commit is contained in:
		@@ -30,7 +30,7 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
        //{
 | 
			
		||||
        //    var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
 | 
			
		||||
        //    await imsg.Channel.SendMessageAsync("`Restarting in 2 seconds...`");
 | 
			
		||||
        //    await channel.SendMessageAsync("`Restarting in 2 seconds...`");
 | 
			
		||||
        //    await Task.Delay(2000);
 | 
			
		||||
        //    System.Diagnostics.Process.Start(System.Reflection.Assembly.GetEntryAssembly().Location);
 | 
			
		||||
        //    Environment.Exit(0);
 | 
			
		||||
@@ -48,9 +48,9 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
        //    conf.AutoDeleteMessagesOnCommand = !conf.AutoDeleteMessagesOnCommand;
 | 
			
		||||
        //    await Classes.JSONModels.ConfigHandler.SaveConfig().ConfigureAwait(false);
 | 
			
		||||
        //    if (conf.AutoDeleteMessagesOnCommand)
 | 
			
		||||
        //        await imsg.Channel.SendMessageAsync("❗`Now automatically deleting successfull command invokations.`");
 | 
			
		||||
        //        await channel.SendMessageAsync("❗`Now automatically deleting successfull command invokations.`");
 | 
			
		||||
        //    else
 | 
			
		||||
        //        await imsg.Channel.SendMessageAsync("❗`Stopped automatic deletion of successfull command invokations.`");
 | 
			
		||||
        //        await channel.SendMessageAsync("❗`Stopped automatic deletion of successfull command invokations.`");
 | 
			
		||||
        //}
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -62,11 +62,11 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                await usr.AddRolesAsync(role).ConfigureAwait(false);
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"Successfully added role **{role.Name}** to user **{usr.Username}**").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"Successfully added role **{role.Name}** to user **{usr.Username}**").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Failed to add roles. Bot has insufficient permissions.\n").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Failed to add roles. Bot has insufficient permissions.\n").ConfigureAwait(false);
 | 
			
		||||
                Console.WriteLine(ex.ToString());
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -79,11 +79,11 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                await usr.RemoveRolesAsync(role).ConfigureAwait(false);
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"Successfully removed role **{role.Name}** from user **{usr.Username}**").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"Successfully removed role **{role.Name}** from user **{usr.Username}**").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Failed to remove roles. Most likely reason: Insufficient permissions.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Failed to remove roles. Most likely reason: Insufficient permissions.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -97,15 +97,15 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
            {
 | 
			
		||||
                if (roleToEdit.Position > (await channel.Guild.GetCurrentUserAsync().ConfigureAwait(false)).Roles.Max(r => r.Position))
 | 
			
		||||
                {
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("You can't edit roles higher than your highest role.").ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync("You can't edit roles higher than your highest role.").ConfigureAwait(false);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                await roleToEdit.ModifyAsync(g => g.Name = newname).ConfigureAwait(false);
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Role renamed.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Role renamed.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Failed to rename role. Probably insufficient permissions.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Failed to rename role. Probably insufficient permissions.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -119,11 +119,11 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                await user.RemoveRolesAsync(user.Roles).ConfigureAwait(false);
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"Successfully removed **all** roles from user **{user.Username}**").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"Successfully removed **all** roles from user **{user.Username}**").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Failed to remove roles. Most likely reason: Insufficient permissions.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Failed to remove roles. Most likely reason: Insufficient permissions.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -140,11 +140,11 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                var r = await channel.Guild.CreateRoleAsync(roleName).ConfigureAwait(false);
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"Successfully created role **{r.Name}**.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"Successfully created role **{r.Name}**.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync(":warning: Unspecified error.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync(":warning: Unspecified error.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -157,7 +157,7 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
 | 
			
		||||
            if (args.Count() != 2 && args.Count() != 4)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("The parameters are invalid.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("The parameters are invalid.").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            var roleName = args[0].ToUpperInvariant();
 | 
			
		||||
@@ -165,7 +165,7 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
 | 
			
		||||
            if (role == null)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("That role does not exist.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("That role does not exist.").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            try
 | 
			
		||||
@@ -178,11 +178,11 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
                var blue = Convert.ToByte(rgb ? int.Parse(args[3]) : Convert.ToInt32(arg1.Substring(4, 2), 16));
 | 
			
		||||
                
 | 
			
		||||
                await role.ModifyAsync(r => r.Color = new Color(red, green, blue).RawValue).ConfigureAwait(false);
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"Role {role.Name}'s color has been changed.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"Role {role.Name}'s color has been changed.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Error occured, most likely invalid parameters or insufficient permissions.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Error occured, most likely invalid parameters or insufficient permissions.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -205,11 +205,11 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
            {
 | 
			
		||||
                await channel.Guild.AddBanAsync(user, 7).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Banned user " + user.Username + " Id: " + user.Id).ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Banned user " + user.Username + " Id: " + user.Id).ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Error. Most likely I don't have sufficient permissions.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Error. Most likely I don't have sufficient permissions.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -231,11 +231,11 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
                await channel.Guild.AddBanAsync(user, 7).ConfigureAwait(false);
 | 
			
		||||
                await channel.Guild.RemoveBanAsync(user).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Soft-Banned user " + user.Username + " Id: " + user.Id).ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Soft-Banned user " + user.Username + " Id: " + user.Id).ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Error. Most likely I don't have sufficient permissions.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Error. Most likely I don't have sufficient permissions.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -247,7 +247,7 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
 | 
			
		||||
            if (user == null)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("User not found.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("User not found.").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(msg))
 | 
			
		||||
@@ -259,11 +259,11 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                await user.KickAsync().ConfigureAwait(false);
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Kicked user " + user.Username + " Id: " + user.Id).ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Kicked user " + user.Username + " Id: " + user.Id).ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Error. Most likely I don't have sufficient permissions.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Error. Most likely I don't have sufficient permissions.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -282,11 +282,11 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
                {
 | 
			
		||||
                    await u.ModifyAsync(usr => usr.Mute = true).ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Mute successful").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Mute successful").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("I most likely don't have the permission necessary for that.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("I most likely don't have the permission necessary for that.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -305,11 +305,11 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
                {
 | 
			
		||||
                    await u.ModifyAsync(usr => usr.Mute = false).ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Unmute successful").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Unmute successful").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("I most likely don't have the permission necessary for that.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("I most likely don't have the permission necessary for that.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -328,11 +328,11 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
                {
 | 
			
		||||
                    await u.ModifyAsync(usr=>usr.Deaf = true).ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Deafen successful").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Deafen successful").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("I most likely don't have the permission necessary for that.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("I most likely don't have the permission necessary for that.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
@@ -351,11 +351,11 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
                {
 | 
			
		||||
                    await u.ModifyAsync(usr=> usr.Deaf = false).ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Undeafen successful").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Undeafen successful").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("I most likely don't have the permission necessary for that.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("I most likely don't have the permission necessary for that.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -365,7 +365,7 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
        public async Task DelVoiChanl(IMessage imsg, [Remainder] IVoiceChannel channel)
 | 
			
		||||
        {
 | 
			
		||||
            await channel.DeleteAsync().ConfigureAwait(false);
 | 
			
		||||
            await imsg.Channel.SendMessageAsync($"Removed channel **{channel.Name}**.").ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync($"Removed channel **{channel.Name}**.").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -376,7 +376,7 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
            var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
            //todo actually print info about created channel
 | 
			
		||||
            await channel.Guild.CreateVoiceChannelAsync(channelName).ConfigureAwait(false);
 | 
			
		||||
            await imsg.Channel.SendMessageAsync($"Created voice channel **{channelName}**.").ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync($"Created voice channel **{channelName}**.").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -385,7 +385,7 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
        public async Task DelTxtChanl(IMessage imsg, [Remainder] ITextChannel channel)
 | 
			
		||||
        {
 | 
			
		||||
            await channel.DeleteAsync().ConfigureAwait(false);
 | 
			
		||||
            await imsg.Channel.SendMessageAsync($"Removed text channel **{channel.Name}**.").ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync($"Removed text channel **{channel.Name}**.").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -396,7 +396,7 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
            var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
            //todo actually print info about created channel
 | 
			
		||||
            var txtCh = await channel.Guild.CreateTextChannelAsync(channelName).ConfigureAwait(false);
 | 
			
		||||
            await imsg.Channel.SendMessageAsync($"Added text channel **{channelName}**.").ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync($"Added text channel **{channelName}**.").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -408,7 +408,7 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
            topic = topic ?? "";
 | 
			
		||||
            await (channel as ITextChannel).ModifyAsync(c => c.Topic = topic);
 | 
			
		||||
            //await (channel).ModifyAsync(c => c).ConfigureAwait(false);
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(":ok: **New channel topic set.**").ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync(":ok: **New channel topic set.**").ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -419,7 +419,7 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
            var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
 | 
			
		||||
            await channel.ModifyAsync(c => c.Name = name).ConfigureAwait(false);
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(":ok: **New channel name set.**").ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync(":ok: **New channel name set.**").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -471,7 +471,7 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
        //{
 | 
			
		||||
        //    var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
 | 
			
		||||
        //    await imsg.Channel.SendMessageAsync("`Shutting down.`").ConfigureAwait(false);
 | 
			
		||||
        //    await channel.SendMessageAsync("`Shutting down.`").ConfigureAwait(false);
 | 
			
		||||
        //    await Task.Delay(2000).ConfigureAwait(false);
 | 
			
		||||
        //    Environment.Exit(0);
 | 
			
		||||
        //}
 | 
			
		||||
@@ -501,7 +501,7 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
        //    await client.CurrentUser.Edit("", avatar: image.ToStream()).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
        //    // Send confirm.
 | 
			
		||||
        //    await imsg.Channel.SendMessageAsync("New avatar set.").ConfigureAwait(false);
 | 
			
		||||
        //    await channel.SendMessageAsync("New avatar set.").ConfigureAwait(false);
 | 
			
		||||
        //}
 | 
			
		||||
 | 
			
		||||
        ////todo owner only
 | 
			
		||||
@@ -557,7 +557,7 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
        //    }
 | 
			
		||||
        //    else
 | 
			
		||||
        //    {
 | 
			
		||||
        //        await imsg.Channel.SendMessageAsync("`Invalid format.`");
 | 
			
		||||
        //        await channel.SendMessageAsync("`Invalid format.`");
 | 
			
		||||
        //    }
 | 
			
		||||
        //}
 | 
			
		||||
 | 
			
		||||
@@ -579,7 +579,7 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
        //            UserName = donator.Name,
 | 
			
		||||
        //            UserId = (long)donator.Id
 | 
			
		||||
        //        });
 | 
			
		||||
        //        imsg.Channel.SendMessageAsync("Successfuly added a new donator. 👑").ConfigureAwait(false);
 | 
			
		||||
        //        channel.SendMessageAsync("Successfuly added a new donator. 👑").ConfigureAwait(false);
 | 
			
		||||
        //    }
 | 
			
		||||
        //    catch { }
 | 
			
		||||
 | 
			
		||||
@@ -594,10 +594,10 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
 | 
			
		||||
        //    foreach (var ch in (await _client.GetGuildsAsync().ConfigureAwait(false)).Select(async g => await g.GetDefaultChannelAsync().ConfigureAwait(false)))
 | 
			
		||||
        //    {
 | 
			
		||||
        //        await imsg.Channel.SendMessageAsync(message).ConfigureAwait(false);
 | 
			
		||||
        //        await channel.SendMessageAsync(message).ConfigureAwait(false);
 | 
			
		||||
        //    }
 | 
			
		||||
 | 
			
		||||
        //    await imsg.Channel.SendMessageAsync(":ok:").ConfigureAwait(false);
 | 
			
		||||
        //    await channel.SendMessageAsync(":ok:").ConfigureAwait(false);
 | 
			
		||||
        //}
 | 
			
		||||
 | 
			
		||||
        ////todo owner only
 | 
			
		||||
@@ -669,7 +669,7 @@ namespace NadekoBot.Modules.Administration
 | 
			
		||||
        //    var donatorsOrdered = rows.OrderByDescending(d => d.Amount);
 | 
			
		||||
        //    string str = $"**Thanks to the people listed below for making this project happen!**\n";
 | 
			
		||||
 | 
			
		||||
        //    await imsg.Channel.SendMessageAsync(str + string.Join("⭐", donatorsOrdered.Select(d => d.UserName))).ConfigureAwait(false);
 | 
			
		||||
        //    await channel.SendMessageAsync(str + string.Join("⭐", donatorsOrdered.Select(d => d.UserName))).ConfigureAwait(false);
 | 
			
		||||
        //}
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -41,12 +41,12 @@ namespace NadekoBot.Modules.Administration.Commands
 | 
			
		||||
            //    {
 | 
			
		||||
            //        config.AutoAssignedRole = 0;
 | 
			
		||||
 | 
			
		||||
            //        await imsg.Channel.SendMessageAsync("`Auto assign role on user join is now disabled.`").ConfigureAwait(false);
 | 
			
		||||
            //        await channel.SendMessageAsync("`Auto assign role on user join is now disabled.`").ConfigureAwait(false);
 | 
			
		||||
            //        return;
 | 
			
		||||
            //    }
 | 
			
		||||
 | 
			
		||||
            //    config.AutoAssignedRole = role.Id;
 | 
			
		||||
            //    await imsg.Channel.SendMessageAsync("`Auto assigned role is set.`").ConfigureAwait(false);
 | 
			
		||||
            //    await channel.SendMessageAsync("`Auto assigned role is set.`").ConfigureAwait(false);
 | 
			
		||||
            //}
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -92,7 +92,7 @@
 | 
			
		||||
//                    if (!Subscribers.TryGetValue(token, out set))
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    set.Add(e.Channel);
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync(":ok:").ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync(":ok:").ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
//            cgb.CreateCommand(Module.Prefix + "lcsc")
 | 
			
		||||
@@ -104,7 +104,7 @@
 | 
			
		||||
//                    {
 | 
			
		||||
//                        subscriber.Value.Remove(e.Channel);
 | 
			
		||||
//                    }
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync(":ok:").ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync(":ok:").ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
//        }
 | 
			
		||||
//    }
 | 
			
		||||
 
 | 
			
		||||
@@ -44,7 +44,7 @@
 | 
			
		||||
//                    var usr = e.Message.MentionedUsers.FirstOrDefault(u => u != e.User);
 | 
			
		||||
//                    if (usr?.Status != UserStatus.Offline)
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync($"User `{usr.Name}` is offline. PM sent.").ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync($"User `{usr.Name}` is offline. PM sent.").ConfigureAwait(false);
 | 
			
		||||
//                    await usr.SendMessage(
 | 
			
		||||
//                        $"User `{e.User.Name}` mentioned you on " +
 | 
			
		||||
//                        $"`{e.Server.Name}` server while you were offline.\n" +
 | 
			
		||||
@@ -385,10 +385,10 @@
 | 
			
		||||
//                    specificConfig.SendPrivateMessageOnMention =
 | 
			
		||||
//                        !specificConfig.SendPrivateMessageOnMention;
 | 
			
		||||
//                    if (specificConfig.SendPrivateMessageOnMention)
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync(":ok: I will send private messages " +
 | 
			
		||||
//                        await channel.SendMessageAsync(":ok: I will send private messages " +
 | 
			
		||||
//                                                    "to mentioned offline users.").ConfigureAwait(false);
 | 
			
		||||
//                    else
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync(":ok: I won't send private messages " +
 | 
			
		||||
//                        await channel.SendMessageAsync(":ok: I won't send private messages " +
 | 
			
		||||
//                                                    "to mentioned offline users anymore.").ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
@@ -402,7 +402,7 @@
 | 
			
		||||
//                      if (chId == null)
 | 
			
		||||
//                      {
 | 
			
		||||
//                          SpecificConfigurations.Default.Of(e.Server.Id).LogServerChannel = e.Channel.Id;
 | 
			
		||||
//                          await imsg.Channel.SendMessageAsync($"❗**I WILL BEGIN LOGGING SERVER ACTIVITY IN THIS CHANNEL**❗").ConfigureAwait(false);
 | 
			
		||||
//                          await channel.SendMessageAsync($"❗**I WILL BEGIN LOGGING SERVER ACTIVITY IN THIS CHANNEL**❗").ConfigureAwait(false);
 | 
			
		||||
//                          return;
 | 
			
		||||
//                      }
 | 
			
		||||
//                      Channel ch;
 | 
			
		||||
@@ -410,7 +410,7 @@
 | 
			
		||||
//                          return;
 | 
			
		||||
 | 
			
		||||
//                      SpecificConfigurations.Default.Of(e.Server.Id).LogServerChannel = null;
 | 
			
		||||
//                      await imsg.Channel.SendMessageAsync($"❗**NO LONGER LOGGING IN {ch.Mention} CHANNEL**❗").ConfigureAwait(false);
 | 
			
		||||
//                      await channel.SendMessageAsync($"❗**NO LONGER LOGGING IN {ch.Mention} CHANNEL**❗").ConfigureAwait(false);
 | 
			
		||||
//                  });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -423,12 +423,12 @@
 | 
			
		||||
//                    var config = SpecificConfigurations.Default.Of(e.Server.Id);
 | 
			
		||||
//                    if (config.LogserverIgnoreChannels.Remove(e.Channel.Id))
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync($"`{Prefix}logserver will stop ignoring this channel.`");
 | 
			
		||||
//                        await channel.SendMessageAsync($"`{Prefix}logserver will stop ignoring this channel.`");
 | 
			
		||||
//                    }
 | 
			
		||||
//                    else
 | 
			
		||||
//                    {
 | 
			
		||||
//                        config.LogserverIgnoreChannels.Add(e.Channel.Id);
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync($"`{Prefix}logserver will ignore this channel.`");
 | 
			
		||||
//                        await channel.SendMessageAsync($"`{Prefix}logserver will ignore this channel.`");
 | 
			
		||||
//                    }
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
@@ -441,11 +441,11 @@
 | 
			
		||||
//                      if (chId == null)
 | 
			
		||||
//                      {
 | 
			
		||||
//                          SpecificConfigurations.Default.Of(e.Server.Id).LogPresenceChannel = e.Channel.Id;
 | 
			
		||||
//                          await imsg.Channel.SendMessageAsync($"**User presence notifications enabled.**").ConfigureAwait(false);
 | 
			
		||||
//                          await channel.SendMessageAsync($"**User presence notifications enabled.**").ConfigureAwait(false);
 | 
			
		||||
//                          return;
 | 
			
		||||
//                      }
 | 
			
		||||
//                      SpecificConfigurations.Default.Of(e.Server.Id).LogPresenceChannel = null;
 | 
			
		||||
//                      await imsg.Channel.SendMessageAsync($"**User presence notifications disabled.**").ConfigureAwait(false);
 | 
			
		||||
//                      await channel.SendMessageAsync($"**User presence notifications disabled.**").ConfigureAwait(false);
 | 
			
		||||
//                  });
 | 
			
		||||
 | 
			
		||||
//            cgb.CreateCommand(Module.Prefix + "voicepresence")
 | 
			
		||||
@@ -462,23 +462,23 @@
 | 
			
		||||
//                          {
 | 
			
		||||
//                              config.VoiceChannelLog.TryAdd(voiceChannel.Id, e.Channel.Id);
 | 
			
		||||
//                          }
 | 
			
		||||
//                          await imsg.Channel.SendMessageAsync("Started logging user presence for **ALL** voice channels!").ConfigureAwait(false);
 | 
			
		||||
//                          await channel.SendMessageAsync("Started logging user presence for **ALL** voice channels!").ConfigureAwait(false);
 | 
			
		||||
//                          return;
 | 
			
		||||
//                      }
 | 
			
		||||
 | 
			
		||||
//                      if (e.User.VoiceChannel == null)
 | 
			
		||||
//                      {
 | 
			
		||||
//                          await imsg.Channel.SendMessageAsync("💢 You are not in a voice channel right now. If you are, please rejoin it.").ConfigureAwait(false);
 | 
			
		||||
//                          await channel.SendMessageAsync("💢 You are not in a voice channel right now. If you are, please rejoin it.").ConfigureAwait(false);
 | 
			
		||||
//                          return;
 | 
			
		||||
//                      }
 | 
			
		||||
//                      ulong throwaway;
 | 
			
		||||
//                      if (!config.VoiceChannelLog.TryRemove(e.User.VoiceChannel.Id, out throwaway))
 | 
			
		||||
//                      {
 | 
			
		||||
//                          config.VoiceChannelLog.TryAdd(e.User.VoiceChannel.Id, e.Channel.Id);
 | 
			
		||||
//                          await imsg.Channel.SendMessageAsync($"`Logging user updates for` {e.User.VoiceChannel.Mention} `voice channel.`").ConfigureAwait(false);
 | 
			
		||||
//                          await channel.SendMessageAsync($"`Logging user updates for` {e.User.VoiceChannel.Mention} `voice channel.`").ConfigureAwait(false);
 | 
			
		||||
//                      }
 | 
			
		||||
//                      else
 | 
			
		||||
//                          await imsg.Channel.SendMessageAsync($"`Stopped logging user updates for` {e.User.VoiceChannel.Mention} `voice channel.`").ConfigureAwait(false);
 | 
			
		||||
//                          await channel.SendMessageAsync($"`Stopped logging user updates for` {e.User.VoiceChannel.Mention} `voice channel.`").ConfigureAwait(false);
 | 
			
		||||
//                  });
 | 
			
		||||
//        }
 | 
			
		||||
//    }
 | 
			
		||||
 
 | 
			
		||||
@@ -65,7 +65,7 @@
 | 
			
		||||
//                    Repeater rep;
 | 
			
		||||
//                    if (!repeaters.TryGetValue(e.Server, out rep))
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("`No repeating message found on this server.`");
 | 
			
		||||
//                        await channel.SendMessageAsync("`No repeating message found on this server.`");
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
 | 
			
		||||
@@ -91,13 +91,13 @@
 | 
			
		||||
//                        if (!repeaters.TryRemove(e.Server, out rep))
 | 
			
		||||
//                            return;
 | 
			
		||||
//                        rep.MessageTimer.Stop();
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Repeating disabled").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Repeating disabled").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
//                    int minutes;
 | 
			
		||||
//                    if (!int.TryParse(minutesStr, out minutes) || minutes < 1 || minutes > 1440)
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Invalid value").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Invalid value").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
 | 
			
		||||
@@ -118,7 +118,7 @@
 | 
			
		||||
//                    repeater.MessageTimer.Stop();
 | 
			
		||||
//                    repeater.MessageTimer.Start();
 | 
			
		||||
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync(String.Format("👌 Repeating `{0}` every " +
 | 
			
		||||
//                    await channel.SendMessageAsync(String.Format("👌 Repeating `{0}` every " +
 | 
			
		||||
//                                                              "**{1}** minutes on {2} channel.",
 | 
			
		||||
//                                                              repeater.RepeatingMessage, minutes, repeater.RepeatingChannel))
 | 
			
		||||
//                                                              .ConfigureAwait(false);
 | 
			
		||||
 
 | 
			
		||||
@@ -90,7 +90,7 @@
 | 
			
		||||
//            finally {
 | 
			
		||||
//                playingPlaceholderLock.Release();
 | 
			
		||||
//            }
 | 
			
		||||
//            await imsg.Channel.SendMessageAsync($"❗`Rotating playing status has been {(timer.Enabled ? "enabled" : "disabled")}.`").ConfigureAwait(false);
 | 
			
		||||
//            await channel.SendMessageAsync($"❗`Rotating playing status has been {(timer.Enabled ? "enabled" : "disabled")}.`").ConfigureAwait(false);
 | 
			
		||||
//        };
 | 
			
		||||
 | 
			
		||||
//        internal override void Init(CommandGroupBuilder cgb)
 | 
			
		||||
@@ -122,7 +122,7 @@
 | 
			
		||||
//                    {
 | 
			
		||||
//                        playingPlaceholderLock.Release();
 | 
			
		||||
//                    }
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync("🆗 `Added a new playing string.`").ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync("🆗 `Added a new playing string.`").ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
//            cgb.CreateCommand(Module.Prefix + "listplaying")
 | 
			
		||||
@@ -132,14 +132,14 @@
 | 
			
		||||
//                .Do(async e =>
 | 
			
		||||
//                {
 | 
			
		||||
//                    if (NadekoBot.Config.RotatingStatuses.Count == 0)
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("`There are no playing strings. " +
 | 
			
		||||
//                        await channel.SendMessageAsync("`There are no playing strings. " +
 | 
			
		||||
//                                                    "Add some with .addplaying [text] command.`").ConfigureAwait(false);
 | 
			
		||||
//                    var sb = new StringBuilder();
 | 
			
		||||
//                    for (var i = 0; i < NadekoBot.Config.RotatingStatuses.Count; i++)
 | 
			
		||||
//                    {
 | 
			
		||||
//                        sb.AppendLine($"`{i + 1}.` {NadekoBot.Config.RotatingStatuses[i]}");
 | 
			
		||||
//                    }
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync(sb.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync(sb.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
//            cgb.CreateCommand(Module.Prefix + "removeplaying")
 | 
			
		||||
@@ -161,7 +161,7 @@
 | 
			
		||||
//                        await ConfigHandler.SaveConfig().ConfigureAwait(false);
 | 
			
		||||
//                    }
 | 
			
		||||
//                    finally { playingPlaceholderLock.Release(); }
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync($"🆗 `Removed playing string #{num}`({str})").ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync($"🆗 `Removed playing string #{num}`({str})").ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
//        }
 | 
			
		||||
//    }
 | 
			
		||||
 
 | 
			
		||||
@@ -60,12 +60,12 @@ namespace NadekoBot.Modules.Administration.Commands
 | 
			
		||||
                ConcurrentDictionary<ulong, DateTime> throwaway;
 | 
			
		||||
                if (RatelimitingChannels.TryRemove(channel.Id, out throwaway))
 | 
			
		||||
                {
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("Slow mode disabled.").ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync("Slow mode disabled.").ConfigureAwait(false);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                if (RatelimitingChannels.TryAdd(channel.Id, new ConcurrentDictionary<ulong, DateTime>()))
 | 
			
		||||
                {
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("Slow mode initiated. " +
 | 
			
		||||
                    await channel.SendMessageAsync("Slow mode initiated. " +
 | 
			
		||||
                                                "Users can't send more than 1 message every 5 seconds.")
 | 
			
		||||
                                                .ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,7 @@
 | 
			
		||||
//                            msg.AppendLine($":ok:Role **{role.Name}** added to the list.");
 | 
			
		||||
//                        }
 | 
			
		||||
//                    }
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync(msg.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync(msg.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
//            cgb.CreateCommand(Module.Prefix + "rsar")
 | 
			
		||||
@@ -55,17 +55,17 @@
 | 
			
		||||
//                    var role = e.Server.FindRoles(roleName).FirstOrDefault();
 | 
			
		||||
//                    if (role == null)
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync(":anger:That role does not exist.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync(":anger:That role does not exist.").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
//                    var config = SpecificConfigurations.Default.Of(e.Server.Id);
 | 
			
		||||
//                    if (!config.ListOfSelfAssignableRoles.Contains(role.Id))
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync(":anger:That role is not self-assignable.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync(":anger:That role is not self-assignable.").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
//                    config.ListOfSelfAssignableRoles.Remove(role.Id);
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync($":ok:**{role.Name}** has been removed from the list of self-assignable roles").ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync($":ok:**{role.Name}** has been removed from the list of self-assignable roles").ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
//            cgb.CreateCommand(Module.Prefix + "lsar")
 | 
			
		||||
@@ -93,7 +93,7 @@
 | 
			
		||||
//                    {
 | 
			
		||||
//                        config.ListOfSelfAssignableRoles.Remove(id);
 | 
			
		||||
//                    }
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync(msg.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync(msg.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -106,7 +106,7 @@
 | 
			
		||||
//                    var config = SpecificConfigurations.Default.Of(e.Server.Id);
 | 
			
		||||
//                    config.ExclusiveSelfAssignedRoles = !config.ExclusiveSelfAssignedRoles;
 | 
			
		||||
//                    string exl = config.ExclusiveSelfAssignedRoles ? "exclusive" : "not exclusive";
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync("Self assigned roles are now " + exl);
 | 
			
		||||
//                    await channel.SendMessageAsync("Self assigned roles are now " + exl);
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
//            cgb.CreateCommand(Module.Prefix + "iam")
 | 
			
		||||
@@ -122,24 +122,24 @@
 | 
			
		||||
//                    var role = e.Server.FindRoles(roleName).FirstOrDefault();
 | 
			
		||||
//                    if (role == null)
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync(":anger:That role does not exist.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync(":anger:That role does not exist.").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
//                    var config = SpecificConfigurations.Default.Of(e.Server.Id);
 | 
			
		||||
//                    if (!config.ListOfSelfAssignableRoles.Contains(role.Id))
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync(":anger:That role is not self-assignable.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync(":anger:That role is not self-assignable.").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
//                    if (e.User.HasRole(role))
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync($":anger:You already have {role.Name} role.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync($":anger:You already have {role.Name} role.").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
//                    var sameRoles = e.User.Roles.Where(r => config.ListOfSelfAssignableRoles.Contains(r.Id));
 | 
			
		||||
//                    if (config.ExclusiveSelfAssignedRoles && sameRoles.Any())
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync($":anger:You already have {sameRoles.FirstOrDefault().Name} role.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync($":anger:You already have {sameRoles.FirstOrDefault().Name} role.").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
//                    try
 | 
			
		||||
@@ -151,10 +151,10 @@
 | 
			
		||||
//                    }
 | 
			
		||||
//                    catch (Exception ex)
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync($":anger:`I am unable to add that role to you. I can't add roles to owners or other roles higher than my role in the role hierarchy.`").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync($":anger:`I am unable to add that role to you. I can't add roles to owners or other roles higher than my role in the role hierarchy.`").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
//                    var msg = await imsg.Channel.SendMessageAsync($":ok:You now have {role.Name} role.").ConfigureAwait(false);
 | 
			
		||||
//                    var msg = await channel.SendMessageAsync($":ok:You now have {role.Name} role.").ConfigureAwait(false);
 | 
			
		||||
//                    await Task.Delay(3000).ConfigureAwait(false);
 | 
			
		||||
//                    await msg.Delete().ConfigureAwait(false);
 | 
			
		||||
//                    try
 | 
			
		||||
@@ -178,22 +178,22 @@
 | 
			
		||||
//                    var role = e.Server.FindRoles(roleName).FirstOrDefault();
 | 
			
		||||
//                    if (role == null)
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync(":anger:That role does not exist.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync(":anger:That role does not exist.").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
//                    var config = SpecificConfigurations.Default.Of(e.Server.Id);
 | 
			
		||||
//                    if (!config.ListOfSelfAssignableRoles.Contains(role.Id))
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync(":anger:That role is not self-assignable.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync(":anger:That role is not self-assignable.").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
//                    if (!e.User.HasRole(role))
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync($":anger:You don't have {role.Name} role.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync($":anger:You don't have {role.Name} role.").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
//                    await e.User.RemoveRoles(role).ConfigureAwait(false);
 | 
			
		||||
//                    var msg = await imsg.Channel.SendMessageAsync($":ok:Successfuly removed {role.Name} role from you.").ConfigureAwait(false);
 | 
			
		||||
//                    var msg = await channel.SendMessageAsync($":ok:Successfuly removed {role.Name} role from you.").ConfigureAwait(false);
 | 
			
		||||
//                    await Task.Delay(3000).ConfigureAwait(false);
 | 
			
		||||
//                    await msg.Delete().ConfigureAwait(false);
 | 
			
		||||
//                    try
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,7 @@
 | 
			
		||||
 | 
			
		||||
//                if (server == null)
 | 
			
		||||
//                {
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync("Cannot find that server").ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync("Cannot find that server").ConfigureAwait(false);
 | 
			
		||||
//                    return;
 | 
			
		||||
//                }
 | 
			
		||||
//                if (server.OwnerId != _client.GetCurrentUser().Id)
 | 
			
		||||
 
 | 
			
		||||
@@ -215,9 +215,9 @@
 | 
			
		||||
//                    var ann = AnnouncementsDictionary.GetOrAdd(e.Server.Id, new AnnounceControls(e.Server.Id));
 | 
			
		||||
 | 
			
		||||
//                    if (ann.ToggleDelete())
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("`Automatic deletion of greet and bye messages has been enabled.`").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("`Automatic deletion of greet and bye messages has been enabled.`").ConfigureAwait(false);
 | 
			
		||||
//                    else
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("`Automatic deletion of greet and bye messages has been disabled.`").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("`Automatic deletion of greet and bye messages has been disabled.`").ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
//            cgb.CreateCommand(Module.Prefix + "greet")
 | 
			
		||||
@@ -228,9 +228,9 @@
 | 
			
		||||
//                    var ann = AnnouncementsDictionary.GetOrAdd(e.Server.Id, new AnnounceControls(e.Server.Id));
 | 
			
		||||
 | 
			
		||||
//                    if (ann.ToggleGreet(e.Channel.Id))
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Greet announcements enabled on this channel.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Greet announcements enabled on this channel.").ConfigureAwait(false);
 | 
			
		||||
//                    else
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Greet announcements disabled.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Greet announcements disabled.").ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
//            cgb.CreateCommand(Module.Prefix + "greetmsg")
 | 
			
		||||
@@ -242,15 +242,15 @@
 | 
			
		||||
//                    var ann = AnnouncementsDictionary.GetOrAdd(e.Server.Id, new AnnounceControls(e.Server.Id));
 | 
			
		||||
//                    if (string.IsNullOrWhiteSpace(e.GetArg("msg")))
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("`Current greet message:` " + ann.GreetText);
 | 
			
		||||
//                        await channel.SendMessageAsync("`Current greet message:` " + ann.GreetText);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//                    ann.GreetText = e.GetArg("msg");
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync("New greet message set.").ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync("New greet message set.").ConfigureAwait(false);
 | 
			
		||||
//                    if (!ann.Greet)
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Enable greet messsages by typing `.greet`").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Enable greet messsages by typing `.greet`").ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
//            cgb.CreateCommand(Module.Prefix + "bye")
 | 
			
		||||
@@ -261,9 +261,9 @@
 | 
			
		||||
//                    var ann = AnnouncementsDictionary.GetOrAdd(e.Server.Id, new AnnounceControls(e.Server.Id));
 | 
			
		||||
 | 
			
		||||
//                    if (ann.ToggleBye(e.Channel.Id))
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Bye announcements enabled on this channel.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Bye announcements enabled on this channel.").ConfigureAwait(false);
 | 
			
		||||
//                    else
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Bye announcements disabled.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Bye announcements disabled.").ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
//            cgb.CreateCommand(Module.Prefix + "byemsg")
 | 
			
		||||
@@ -275,14 +275,14 @@
 | 
			
		||||
//                    var ann = AnnouncementsDictionary.GetOrAdd(e.Server.Id, new AnnounceControls(e.Server.Id));
 | 
			
		||||
//                    if (string.IsNullOrWhiteSpace(e.GetArg("msg")))
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("`Current bye message:` " + ann.ByeText);
 | 
			
		||||
//                        await channel.SendMessageAsync("`Current bye message:` " + ann.ByeText);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
 | 
			
		||||
//                    ann.ByeText = e.GetArg("msg");
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync("New bye message set.").ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync("New bye message set.").ConfigureAwait(false);
 | 
			
		||||
//                    if (!ann.Bye)
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Enable bye messsages by typing `.bye`.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Enable bye messsages by typing `.bye`.").ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
//            cgb.CreateCommand(Module.Prefix + "byepm")
 | 
			
		||||
@@ -294,11 +294,11 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//                    if (ann.ToggleByePM())
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Bye messages will be sent in a PM from now on.\n ⚠ Keep in mind this might fail if the user and the bot have no common servers after the user leaves.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Bye messages will be sent in a PM from now on.\n ⚠ Keep in mind this might fail if the user and the bot have no common servers after the user leaves.").ConfigureAwait(false);
 | 
			
		||||
//                    else
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Bye messages will be sent in a bound channel from now on.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Bye messages will be sent in a bound channel from now on.").ConfigureAwait(false);
 | 
			
		||||
//                    if (!ann.Bye)
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Enable bye messsages by typing `.bye`, and set the bye message using `.byemsg`").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Enable bye messsages by typing `.bye`, and set the bye message using `.byemsg`").ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
//            cgb.CreateCommand(Module.Prefix + "greetpm")
 | 
			
		||||
@@ -310,11 +310,11 @@
 | 
			
		||||
//                    var ann = AnnouncementsDictionary.GetOrAdd(e.Server.Id, new AnnounceControls(e.Server.Id));
 | 
			
		||||
 | 
			
		||||
//                    if (ann.ToggleGreetPM())
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Greet messages will be sent in a PM from now on.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Greet messages will be sent in a PM from now on.").ConfigureAwait(false);
 | 
			
		||||
//                    else
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Greet messages will be sent in a bound channel from now on.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Greet messages will be sent in a bound channel from now on.").ConfigureAwait(false);
 | 
			
		||||
//                    if (!ann.Greet)
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Enable greet messsages by typing `.greet`, and set the greet message using `.greetmsg`").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Enable greet messsages by typing `.greet`, and set the greet message using `.greetmsg`").ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
//        }
 | 
			
		||||
//    }
 | 
			
		||||
 
 | 
			
		||||
@@ -97,7 +97,7 @@
 | 
			
		||||
//                {
 | 
			
		||||
//                    if (!e.Server.CurrentUser.ServerPermissions.ManageChannels)
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("`I have insufficient permission to do that.`");
 | 
			
		||||
//                        await channel.SendMessageAsync("`I have insufficient permission to do that.`");
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
 | 
			
		||||
@@ -116,7 +116,7 @@
 | 
			
		||||
//                        await Task.Delay(500);
 | 
			
		||||
//                    }
 | 
			
		||||
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync("`Done.`");
 | 
			
		||||
//                    await channel.SendMessageAsync("`Done.`");
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
//            cgb.CreateCommand(Module.Prefix + "voice+text")
 | 
			
		||||
@@ -141,24 +141,24 @@
 | 
			
		||||
//                                }
 | 
			
		||||
//                                catch
 | 
			
		||||
//                                {
 | 
			
		||||
//                                    await imsg.Channel.SendMessageAsync(
 | 
			
		||||
//                                    await channel.SendMessageAsync(
 | 
			
		||||
//                                            ":anger: Error: Most likely i don't have permissions to do this.")
 | 
			
		||||
//                                                .ConfigureAwait(false);
 | 
			
		||||
//                                    return;
 | 
			
		||||
//                                }
 | 
			
		||||
//                            }
 | 
			
		||||
//                            await imsg.Channel.SendMessageAsync("Successfuly removed voice + text feature.").ConfigureAwait(false);
 | 
			
		||||
//                            await channel.SendMessageAsync("Successfuly removed voice + text feature.").ConfigureAwait(false);
 | 
			
		||||
//                            return;
 | 
			
		||||
//                        }
 | 
			
		||||
//                        config.VoicePlusTextEnabled = true;
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Successfuly enabled voice + text feature. " +
 | 
			
		||||
//                        await channel.SendMessageAsync("Successfuly enabled voice + text feature. " +
 | 
			
		||||
//                                                    "**Make sure the bot has manage roles and manage channels permissions**")
 | 
			
		||||
//                                                    .ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
//                    }
 | 
			
		||||
//                    catch (Exception ex)
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync(ex.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync(ex.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                    }
 | 
			
		||||
//                });
 | 
			
		||||
//        }
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,7 @@ namespace NadekoBot.Modules.ClashOfClans
 | 
			
		||||
 | 
			
		||||
            if (size < 10 || size > 50 || size % 5 != 0)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("💢🔰 Not a Valid war size").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("💢🔰 Not a Valid war size").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            List<ClashWar> wars;
 | 
			
		||||
@@ -65,7 +65,7 @@ namespace NadekoBot.Modules.ClashOfClans
 | 
			
		||||
            //cw.Start();
 | 
			
		||||
 | 
			
		||||
            wars.Add(cw);
 | 
			
		||||
            await imsg.Channel.SendMessageAsync($"❗🔰**CREATED CLAN WAR AGAINST {cw.ShortPrint()}**").ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync($"❗🔰**CREATED CLAN WAR AGAINST {cw.ShortPrint()}**").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -80,18 +80,18 @@ namespace NadekoBot.Modules.ClashOfClans
 | 
			
		||||
            var warsInfo = GetWarInfo(imsg, num);
 | 
			
		||||
            if (warsInfo == null)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("💢🔰 **That war does not exist.**").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("💢🔰 **That war does not exist.**").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            var war = warsInfo.Item1[warsInfo.Item2];
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                war.Start();
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"🔰**STARTED WAR AGAINST {war.ShortPrint()}**").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"🔰**STARTED WAR AGAINST {war.ShortPrint()}**").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"🔰**WAR AGAINST {war.ShortPrint()} HAS ALREADY STARTED**").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"🔰**WAR AGAINST {war.ShortPrint()} HAS ALREADY STARTED**").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -109,7 +109,7 @@ namespace NadekoBot.Modules.ClashOfClans
 | 
			
		||||
                ClashWars.TryGetValue(channel.Guild.Id, out wars);
 | 
			
		||||
                if (wars == null || wars.Count == 0)
 | 
			
		||||
                {
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("🔰 **No active wars.**").ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync("🔰 **No active wars.**").ConfigureAwait(false);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
@@ -122,7 +122,7 @@ namespace NadekoBot.Modules.ClashOfClans
 | 
			
		||||
                    sb.AppendLine($"\t\t`Size:` **{wars[i].Size} v {wars[i].Size}**");
 | 
			
		||||
                    sb.AppendLine("**-------------------------**");
 | 
			
		||||
                }
 | 
			
		||||
                await imsg.Channel.SendMessageAsync(sb.ToString()).ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync(sb.ToString()).ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
@@ -132,10 +132,10 @@ namespace NadekoBot.Modules.ClashOfClans
 | 
			
		||||
            var warsInfo = GetWarInfo(imsg, num);
 | 
			
		||||
            if (warsInfo == null)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("💢🔰 **That war does not exist.**").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("💢🔰 **That war does not exist.**").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(warsInfo.Item1[warsInfo.Item2].ToString()).ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync(warsInfo.Item1[warsInfo.Item2].ToString()).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -146,7 +146,7 @@ namespace NadekoBot.Modules.ClashOfClans
 | 
			
		||||
            var warsInfo = GetWarInfo(imsg, number);
 | 
			
		||||
            if (warsInfo == null || warsInfo.Item1.Count == 0)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("💢🔰 **That war does not exist.**").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("💢🔰 **That war does not exist.**").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            var usr =
 | 
			
		||||
@@ -157,11 +157,11 @@ namespace NadekoBot.Modules.ClashOfClans
 | 
			
		||||
            {
 | 
			
		||||
                var war = warsInfo.Item1[warsInfo.Item2];
 | 
			
		||||
                war.Call(usr, baseNumber - 1);
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"🔰**{usr}** claimed a base #{baseNumber} for a war against {war.ShortPrint()}").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"🔰**{usr}** claimed a base #{baseNumber} for a war against {war.ShortPrint()}").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"💢🔰 {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"💢🔰 {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -198,11 +198,11 @@ namespace NadekoBot.Modules.ClashOfClans
 | 
			
		||||
            var warsInfo = GetWarInfo(imsg,number);
 | 
			
		||||
            if (warsInfo == null)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("💢🔰 That war does not exist.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("💢🔰 That war does not exist.").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            warsInfo.Item1[warsInfo.Item2].End();
 | 
			
		||||
            await imsg.Channel.SendMessageAsync($"❗🔰**War against {warsInfo.Item1[warsInfo.Item2].ShortPrint()} ended.**").ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync($"❗🔰**War against {warsInfo.Item1[warsInfo.Item2].ShortPrint()} ended.**").ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
            var size = warsInfo.Item1[warsInfo.Item2].Size;
 | 
			
		||||
            warsInfo.Item1.RemoveAt(warsInfo.Item2);
 | 
			
		||||
@@ -217,7 +217,7 @@ namespace NadekoBot.Modules.ClashOfClans
 | 
			
		||||
            var warsInfo = GetWarInfo(imsg, number);
 | 
			
		||||
            if (warsInfo == null || warsInfo.Item1.Count == 0)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("💢🔰 **That war does not exist.**").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("💢🔰 **That war does not exist.**").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            var usr =
 | 
			
		||||
@@ -228,11 +228,11 @@ namespace NadekoBot.Modules.ClashOfClans
 | 
			
		||||
            {
 | 
			
		||||
                var war = warsInfo.Item1[warsInfo.Item2];
 | 
			
		||||
                var baseNumber = war.Uncall(usr);
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"🔰 @{usr} has **UNCLAIMED** a base #{baseNumber + 1} from a war against {war.ShortPrint()}").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"🔰 @{usr} has **UNCLAIMED** a base #{baseNumber + 1} from a war against {war.ShortPrint()}").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"💢🔰 {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"💢🔰 {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -242,7 +242,7 @@ namespace NadekoBot.Modules.ClashOfClans
 | 
			
		||||
            var warInfo = GetWarInfo(imsg, number);
 | 
			
		||||
            if (warInfo == null || warInfo.Item1.Count == 0)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("💢🔰 **That war does not exist.**").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("💢🔰 **That war does not exist.**").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            var usr =
 | 
			
		||||
@@ -254,11 +254,11 @@ namespace NadekoBot.Modules.ClashOfClans
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                var baseNum = war.FinishClaim(usr, stars);
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"❗🔰{imsg.Author.Mention} **DESTROYED** a base #{baseNum + 1} in a war against {war.ShortPrint()}").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"❗🔰{imsg.Author.Mention} **DESTROYED** a base #{baseNum + 1} in a war against {war.ShortPrint()}").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"💢🔰 {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"💢🔰 {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -78,7 +78,7 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
                            arr[i] = r.Next(1, n2 + 1);
 | 
			
		||||
                        }
 | 
			
		||||
                        var elemCnt = 0;
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"`Rolled {n1} {(n1 == 1 ? "die" : "dice")} 1-{n2}.`\n`Result:` " + string.Join(", ", (ordered ? arr.OrderBy(x => x).AsEnumerable() : arr).Select(x => elemCnt++ % 2 == 0 ? $"**{x}**" : x.ToString()))).ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync($"`Rolled {n1} {(n1 == 1 ? "die" : "dice")} 1-{n2}.`\n`Result:` " + string.Join(", ", (ordered ? arr.OrderBy(x => x).AsEnumerable() : arr).Select(x => elemCnt++ % 2 == 0 ? $"**{x}**" : x.ToString()))).ConfigureAwait(false);
 | 
			
		||||
                    }
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
@@ -88,7 +88,7 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
                    if (num < 1) num = 1;
 | 
			
		||||
                    if (num > 30)
 | 
			
		||||
                    {
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync("You can roll up to 30 dice at a time.").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync("You can roll up to 30 dice at a time.").ConfigureAwait(false);
 | 
			
		||||
                        num = 30;
 | 
			
		||||
                    }
 | 
			
		||||
                    var dices = new List<Image>(num);
 | 
			
		||||
@@ -119,12 +119,12 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    var bitmap = dices.Merge();
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync(values.Count + " Dice rolled. Total: **" + values.Sum() + "** Average: **" + (values.Sum() / (1.0f * values.Count)).ToString("N2") + "**").ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync(values.Count + " Dice rolled. Total: **" + values.Sum() + "** Average: **" + (values.Sum() / (1.0f * values.Count)).ToString("N2") + "**").ConfigureAwait(false);
 | 
			
		||||
                    await e.Channel.SendFile("dice.png", bitmap.ToStream(ImageFormat.Png)).ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
                catch
 | 
			
		||||
                {
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("Please enter a number of dice to roll.").ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync("Please enter a number of dice to roll.").ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
@@ -151,11 +151,11 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
                        rolled = new Random().Next(0, int.Parse(e.GetArg("range")) + 1);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync($"{e.User.Mention} rolled **{rolled}**.").ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync($"{e.User.Mention} rolled **{rolled}**.").ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
                catch (Exception ex)
 | 
			
		||||
                {
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync($":anger: {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync($":anger: {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -41,7 +41,7 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
                        return c;
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Deck reshuffled.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Deck reshuffled.").ConfigureAwait(false);
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -68,7 +68,7 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
                {
 | 
			
		||||
                    if (cards.CardPool.Count == 0 && i != 0)
 | 
			
		||||
                    {
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync("No more cards in a deck.").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync("No more cards in a deck.").ConfigureAwait(false);
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
                    var currentCard = cards.DrawACard();
 | 
			
		||||
@@ -79,7 +79,7 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
                await e.Channel.SendFile(images.Count + " cards.jpg", bitmap.ToStream()).ConfigureAwait(false);
 | 
			
		||||
                if (cardObjects.Count == 5)
 | 
			
		||||
                {
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync($"{e.User.Mention} `{Cards.GetHandValue(cardObjects)}`").ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync($"{e.User.Mention} `{Cards.GetHandValue(cardObjects)}`").ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
 
 | 
			
		||||
@@ -29,180 +29,180 @@ namespace NadekoBot.Modules.Gambling
 | 
			
		||||
            var members = (await role.Members()).Where(u => u.Status == UserStatus.Online);
 | 
			
		||||
            var membersArray = members as IUser[] ?? members.ToArray();
 | 
			
		||||
            var usr = membersArray[new Random().Next(0, membersArray.Length)];
 | 
			
		||||
            await imsg.Channel.SendMessageAsync($"**Raffled user:** {usr.Username} (id: {usr.Id})").ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync($"**Raffled user:** {usr.Username} (id: {usr.Id})").ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ////todo DB
 | 
			
		||||
        //[LocalizedCommand("$$$"), LocalizedDescription("$$$"), LocalizedSummary("$$$")]
 | 
			
		||||
        //[RequireContext(ContextType.Guild)]
 | 
			
		||||
        //public async Task Cash(IMessage imsg, [Remainder] string arg)
 | 
			
		||||
        //{
 | 
			
		||||
        //    var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
 | 
			
		||||
        //    var usr = e.Message.MentionedUsers.FirstOrDefault() ?? e.User;
 | 
			
		||||
        //    var pts = GetUserFlowers(usr.Id);
 | 
			
		||||
        //    var str = $"{usr.Name} has {pts} {NadekoBot.Config.CurrencySign}";
 | 
			
		||||
        //    await channel.SendMessageAsync(str).ConfigureAwait(false);
 | 
			
		||||
        //}
 | 
			
		||||
 | 
			
		||||
        ////todo DB
 | 
			
		||||
        //[LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
        //[RequireContext(ContextType.Guild)]
 | 
			
		||||
        //public async Task Give(IMessage imsg, long amount, [Remainder] IUser receiver)
 | 
			
		||||
        //{
 | 
			
		||||
        //    var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
        //    if (amount <= 0)
 | 
			
		||||
        //        return;
 | 
			
		||||
        //    var userFlowers = GetUserFlowers(imsg.Author.Id);
 | 
			
		||||
 | 
			
		||||
        //    if (userFlowers < amount)
 | 
			
		||||
        //    {
 | 
			
		||||
        //        await channel.SendMessageAsync($"{e.User.Mention} You don't have enough {NadekoBot.Config.CurrencyName}s. You only have {userFlowers}{NadekoBot.Config.CurrencySign}.").ConfigureAwait(false);
 | 
			
		||||
        //        return;
 | 
			
		||||
        //    }
 | 
			
		||||
 | 
			
		||||
        //    await FlowersHandler.RemoveFlowers(e.User, "Gift", (int)amount, true).ConfigureAwait(false);
 | 
			
		||||
        //    await FlowersHandler.AddFlowersAsync(receiver, "Gift", (int)amount).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
        //    await channel.SendMessageAsync($"{e.User.Mention} successfully sent {amount} {NadekoBot.Config.CurrencyName}s to {receiver.Mention}!").ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
        //}
 | 
			
		||||
 | 
			
		||||
        ////todo DB
 | 
			
		||||
        ////todo owner only
 | 
			
		||||
        //[LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
        //[RequireContext(ContextType.Guild)]
 | 
			
		||||
        //public Task Award(IMessage imsg, long amount, [Remainder] IGuildUser usr) =>
 | 
			
		||||
        //    Award(imsg, amount, usr.Id);
 | 
			
		||||
 | 
			
		||||
        //[LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
        //[RequireContext(ContextType.Guild)]
 | 
			
		||||
        //public async Task Award(IMessage imsg, long amount, [Remainder] ulong usrId)
 | 
			
		||||
        //{
 | 
			
		||||
        //    var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
 | 
			
		||||
        //    if (amount <= 0)
 | 
			
		||||
        //        return;
 | 
			
		||||
 | 
			
		||||
        //    await FlowersHandler.AddFlowersAsync(usrId, $"Awarded by bot owner. ({imsg.Author.Username}/{imsg.Author.Id})", (int)amount).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
        //    await channel.SendMessageAsync($"{e.User.Mention} successfully awarded {amount} {NadekoBot.Config.CurrencyName}s to <@{usrId}>!").ConfigureAwait(false);
 | 
			
		||||
        //}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
        [RequireContext(ContextType.Guild)]
 | 
			
		||||
        public async Task Take(IMessage imsg, long amount, [Remainder] IGuildUser ownedPerson)
 | 
			
		||||
        {
 | 
			
		||||
            var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
 | 
			
		||||
            if (amount < 0)
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            var mentionedUser = e.Message.MentionedUsers.FirstOrDefault(u =>
 | 
			
		||||
                                                u.Id != NadekoBot.Client.CurrentUser.Id);
 | 
			
		||||
            if (mentionedUser == null)
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            await FlowersHandler.RemoveFlowers(ownedPerson.Id, $"Taken by bot owner.({e.User.Name}/{e.User.Id})", (int)amount).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
            await channel.SendMessageAsync($"{e.User.Mention} successfully took {amount} {NadekoBot.Config.CurrencyName}s from {mentionedUser.Mention}!").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void Install(ModuleManager manager)
 | 
			
		||||
        {
 | 
			
		||||
            manager.CreateCommands("", cgb =>
 | 
			
		||||
            {
 | 
			
		||||
                cgb.CreateCommand(Prefix + "raffle")
 | 
			
		||||
                    .Description($"Prints a name and ID of a random user from the online list from the (optional) role. | `{Prefix}raffle` or `{Prefix}raffle RoleName`")
 | 
			
		||||
                    .Parameter("role", ParameterType.Optional)
 | 
			
		||||
                    .Do(async e =>
 | 
			
		||||
            cgb.CreateCommand(Prefix + "award")
 | 
			
		||||
                .Description($"Gives someone a certain amount of flowers. **Bot Owner Only!** | `{Prefix}award 100 @person`")
 | 
			
		||||
                .AddCheck(SimpleCheckers.OwnerOnly())
 | 
			
		||||
                .Parameter("amount", ParameterType.Required)
 | 
			
		||||
                .Parameter("receiver", ParameterType.Unparsed)
 | 
			
		||||
                .Do(async e =>
 | 
			
		||||
                {
 | 
			
		||||
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
            cgb.CreateCommand(Prefix + "take")
 | 
			
		||||
                .Description($"Takes a certain amount of flowers from someone. **Bot Owner Only!** | `{Prefix}take 1 \"@someguy\"`")
 | 
			
		||||
                .AddCheck(SimpleCheckers.OwnerOnly())
 | 
			
		||||
                .Parameter("amount", ParameterType.Required)
 | 
			
		||||
                .Parameter("rektperson", ParameterType.Unparsed)
 | 
			
		||||
                .Do(async e =>
 | 
			
		||||
                {
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
            cgb.CreateCommand(Prefix + "betroll")
 | 
			
		||||
                .Alias(Prefix + "br")
 | 
			
		||||
                .Description($"Bets a certain amount of {NadekoBot.Config.CurrencyName}s and rolls a dice. Rolling over 66 yields x2 flowers, over 90 - x3 and 100 x10. | `{Prefix}br 5`")
 | 
			
		||||
                .Parameter("amount", ParameterType.Required)
 | 
			
		||||
                .Do(async e =>
 | 
			
		||||
                {
 | 
			
		||||
                    var amountstr = e.GetArg("amount").Trim();
 | 
			
		||||
                    int amount;
 | 
			
		||||
 | 
			
		||||
                    if (!int.TryParse(amountstr, out amount) || amount < 1)
 | 
			
		||||
                        return;
 | 
			
		||||
 | 
			
		||||
                    var userFlowers = GetUserFlowers(e.User.Id);
 | 
			
		||||
 | 
			
		||||
                    if (userFlowers < amount)
 | 
			
		||||
                    {
 | 
			
		||||
                        
 | 
			
		||||
                    });
 | 
			
		||||
                        await channel.SendMessageAsync($"{e.User.Mention} You don't have enough {NadekoBot.Config.CurrencyName}s. You only have {userFlowers}{NadekoBot.Config.CurrencySign}.").ConfigureAwait(false);
 | 
			
		||||
                        return;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "$$")
 | 
			
		||||
                    .Description(string.Format("Check how much {0}s a person has. (Defaults to yourself) |`{1}$$` or `{1}$$ @Someone`",
 | 
			
		||||
                        NadekoBot.Config.CurrencyName, Prefix))
 | 
			
		||||
                    .Parameter("all", ParameterType.Unparsed)
 | 
			
		||||
                    .Do(async e =>
 | 
			
		||||
                    await FlowersHandler.RemoveFlowers(e.User, "Betroll Gamble", (int)amount, true).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                    var rng = new Random().Next(0, 101);
 | 
			
		||||
                    var str = $"{e.User.Mention} `You rolled {rng}.` ";
 | 
			
		||||
                    if (rng < 67)
 | 
			
		||||
                    {
 | 
			
		||||
                        var usr = e.Message.MentionedUsers.FirstOrDefault() ?? e.User;
 | 
			
		||||
                        var pts = GetUserFlowers(usr.Id);
 | 
			
		||||
                        var str = $"{usr.Name} has {pts} {NadekoBot.Config.CurrencySign}";
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync(str).ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "give")
 | 
			
		||||
                    .Description(string.Format("Give someone a certain amount of {0}s", NadekoBot.Config.CurrencyName)+ $"|`{Prefix}give 1 \"@SomeGuy\"`")
 | 
			
		||||
                    .Parameter("amount", ParameterType.Required)
 | 
			
		||||
                    .Parameter("receiver", ParameterType.Unparsed)
 | 
			
		||||
                    .Do(async e =>
 | 
			
		||||
                        str += "Better luck next time.";
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (rng < 90)
 | 
			
		||||
                    {
 | 
			
		||||
                        var amountStr = e.GetArg("amount")?.Trim();
 | 
			
		||||
                        long amount;
 | 
			
		||||
                        if (!long.TryParse(amountStr, out amount) || amount <= 0)
 | 
			
		||||
                            return;
 | 
			
		||||
 | 
			
		||||
                        var mentionedUser = e.Message.MentionedUsers.FirstOrDefault(u =>
 | 
			
		||||
                                                            u.Id != NadekoBot.Client.CurrentUser.Id &&
 | 
			
		||||
                                                            u.Id != e.User.Id);
 | 
			
		||||
                        if (mentionedUser == null)
 | 
			
		||||
                            return;
 | 
			
		||||
 | 
			
		||||
                        var userFlowers = GetUserFlowers(e.User.Id);
 | 
			
		||||
 | 
			
		||||
                        if (userFlowers < amount)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"{e.User.Mention} You don't have enough {NadekoBot.Config.CurrencyName}s. You only have {userFlowers}{NadekoBot.Config.CurrencySign}.").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        await FlowersHandler.RemoveFlowers(e.User, "Gift", (int)amount, true).ConfigureAwait(false);
 | 
			
		||||
                        await FlowersHandler.AddFlowersAsync(mentionedUser, "Gift", (int)amount).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"{e.User.Mention} successfully sent {amount} {NadekoBot.Config.CurrencyName}s to {mentionedUser.Mention}!").ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "award")
 | 
			
		||||
                    .Description($"Gives someone a certain amount of flowers. **Bot Owner Only!** | `{Prefix}award 100 @person`")
 | 
			
		||||
                    .AddCheck(SimpleCheckers.OwnerOnly())
 | 
			
		||||
                    .Parameter("amount", ParameterType.Required)
 | 
			
		||||
                    .Parameter("receiver", ParameterType.Unparsed)
 | 
			
		||||
                    .Do(async e =>
 | 
			
		||||
                        str += $"Congratulations! You won {amount * 2}{NadekoBot.Config.CurrencySign} for rolling above 66";
 | 
			
		||||
                        await FlowersHandler.AddFlowersAsync(e.User, "Betroll Gamble", amount * 2, true).ConfigureAwait(false);
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (rng < 100)
 | 
			
		||||
                    {
 | 
			
		||||
                        var amountStr = e.GetArg("amount")?.Trim();
 | 
			
		||||
                        long amount;
 | 
			
		||||
                        if (!long.TryParse(amountStr, out amount) || amount < 0)
 | 
			
		||||
                            return;
 | 
			
		||||
 | 
			
		||||
                        var mentionedUser = e.Message.MentionedUsers.FirstOrDefault(u =>
 | 
			
		||||
                                                            u.Id != NadekoBot.Client.CurrentUser.Id);
 | 
			
		||||
                        if (mentionedUser == null)
 | 
			
		||||
                            return;
 | 
			
		||||
 | 
			
		||||
                        await FlowersHandler.AddFlowersAsync(mentionedUser, $"Awarded by bot owner. ({e.User.Name}/{e.User.Id})", (int)amount).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"{e.User.Mention} successfully awarded {amount} {NadekoBot.Config.CurrencyName}s to {mentionedUser.Mention}!").ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "take")
 | 
			
		||||
                    .Description($"Takes a certain amount of flowers from someone. **Bot Owner Only!** | `{Prefix}take 1 \"@someguy\"`")
 | 
			
		||||
                    .AddCheck(SimpleCheckers.OwnerOnly())
 | 
			
		||||
                    .Parameter("amount", ParameterType.Required)
 | 
			
		||||
                    .Parameter("rektperson", ParameterType.Unparsed)
 | 
			
		||||
                    .Do(async e =>
 | 
			
		||||
                        str += $"Congratulations! You won {amount * 3}{NadekoBot.Config.CurrencySign} for rolling above 90.";
 | 
			
		||||
                        await FlowersHandler.AddFlowersAsync(e.User, "Betroll Gamble", amount * 3, true).ConfigureAwait(false);
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        var amountStr = e.GetArg("amount")?.Trim();
 | 
			
		||||
                        long amount;
 | 
			
		||||
                        if (!long.TryParse(amountStr, out amount) || amount < 0)
 | 
			
		||||
                            return;
 | 
			
		||||
                        str += $"👑 Congratulations! You won {amount * 10}{NadekoBot.Config.CurrencySign} for rolling **100**. 👑";
 | 
			
		||||
                        await FlowersHandler.AddFlowersAsync(e.User, "Betroll Gamble", amount * 10, true).ConfigureAwait(false);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                        var mentionedUser = e.Message.MentionedUsers.FirstOrDefault(u =>
 | 
			
		||||
                                                            u.Id != NadekoBot.Client.CurrentUser.Id);
 | 
			
		||||
                        if (mentionedUser == null)
 | 
			
		||||
                            return;
 | 
			
		||||
                    await channel.SendMessageAsync(str).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                        await FlowersHandler.RemoveFlowers(mentionedUser, $"Taken by bot owner.({e.User.Name}/{e.User.Id})", (int)amount).ConfigureAwait(false);
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"{e.User.Mention} successfully took {amount} {NadekoBot.Config.CurrencyName}s from {mentionedUser.Mention}!").ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "betroll")
 | 
			
		||||
                    .Alias(Prefix + "br")
 | 
			
		||||
                    .Description($"Bets a certain amount of {NadekoBot.Config.CurrencyName}s and rolls a dice. Rolling over 66 yields x2 flowers, over 90 - x3 and 100 x10. | `{Prefix}br 5`")
 | 
			
		||||
                    .Parameter("amount",ParameterType.Required)
 | 
			
		||||
                    .Do(async e =>
 | 
			
		||||
                    {
 | 
			
		||||
                        var amountstr = e.GetArg("amount").Trim();
 | 
			
		||||
                        int amount;
 | 
			
		||||
 | 
			
		||||
                        if (!int.TryParse(amountstr, out amount) || amount < 1)
 | 
			
		||||
                            return;
 | 
			
		||||
 | 
			
		||||
                        var userFlowers = GetUserFlowers(e.User.Id);
 | 
			
		||||
 | 
			
		||||
                        if (userFlowers < amount)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"{e.User.Mention} You don't have enough {NadekoBot.Config.CurrencyName}s. You only have {userFlowers}{NadekoBot.Config.CurrencySign}.").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        await FlowersHandler.RemoveFlowers(e.User, "Betroll Gamble", (int)amount, true).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                        var rng = new Random().Next(0, 101);
 | 
			
		||||
                        var str = $"{e.User.Mention} `You rolled {rng}.` ";
 | 
			
		||||
                        if (rng < 67)
 | 
			
		||||
                        {
 | 
			
		||||
                            str += "Better luck next time.";
 | 
			
		||||
                        }
 | 
			
		||||
                        else if (rng < 90)
 | 
			
		||||
                        {
 | 
			
		||||
                            str += $"Congratulations! You won {amount * 2}{NadekoBot.Config.CurrencySign} for rolling above 66";
 | 
			
		||||
                            await FlowersHandler.AddFlowersAsync(e.User, "Betroll Gamble", amount * 2, true).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        else if (rng < 100)
 | 
			
		||||
                        {
 | 
			
		||||
                            str += $"Congratulations! You won {amount * 3}{NadekoBot.Config.CurrencySign} for rolling above 90.";
 | 
			
		||||
                            await FlowersHandler.AddFlowersAsync(e.User, "Betroll Gamble", amount * 3, true).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        else {
 | 
			
		||||
                            str += $"👑 Congratulations! You won {amount * 10}{NadekoBot.Config.CurrencySign} for rolling **100**. 👑";
 | 
			
		||||
                            await FlowersHandler.AddFlowersAsync(e.User, "Betroll Gamble", amount * 10, true).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync(str).ConfigureAwait(false);
 | 
			
		||||
                        
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "leaderboard")
 | 
			
		||||
                    .Alias(Prefix + "lb")
 | 
			
		||||
                    .Description($"Displays bot currency leaderboard | `{Prefix}lb`")
 | 
			
		||||
                    .Do(async e =>
 | 
			
		||||
                    {
 | 
			
		||||
                        var richestTemp = DbHandler.Instance.GetTopRichest();
 | 
			
		||||
                        var richest = richestTemp as CurrencyState[] ?? richestTemp.ToArray();
 | 
			
		||||
                        if (richest.Length == 0)
 | 
			
		||||
                            return;
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync(
 | 
			
		||||
                            richest.Aggregate(new StringBuilder(
 | 
			
		||||
    $@"```xl
 | 
			
		||||
            cgb.CreateCommand(Prefix + "leaderboard")
 | 
			
		||||
                .Alias(Prefix + "lb")
 | 
			
		||||
                .Description($"Displays bot currency leaderboard | `{Prefix}lb`")
 | 
			
		||||
                .Do(async e =>
 | 
			
		||||
                {
 | 
			
		||||
                    var richestTemp = DbHandler.Instance.GetTopRichest();
 | 
			
		||||
                    var richest = richestTemp as CurrencyState[] ?? richestTemp.ToArray();
 | 
			
		||||
                    if (richest.Length == 0)
 | 
			
		||||
                        return;
 | 
			
		||||
                    await channel.SendMessageAsync(
 | 
			
		||||
                        richest.Aggregate(new StringBuilder(
 | 
			
		||||
$@"```xl
 | 
			
		||||
┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┓
 | 
			
		||||
┃        Id           ┃  $$$  ┃
 | 
			
		||||
"),
 | 
			
		||||
                            (cur, cs) => cur.AppendLine(
 | 
			
		||||
    $@"┣━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━┫
 | 
			
		||||
                        (cur, cs) => cur.AppendLine(
 | 
			
		||||
$@"┣━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━┫
 | 
			
		||||
┃{(e.Server.Users.Where(u => u.Id == (ulong)cs.UserId).FirstOrDefault()?.Name.TrimTo(18, true) ?? cs.UserId.ToString()),-20} ┃ {cs.Value,5} ┃")
 | 
			
		||||
                                    ).ToString() + "┗━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━┛```").ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
            });
 | 
			
		||||
                                ).ToString() + "┗━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━┛```").ConfigureAwait(false);
 | 
			
		||||
                });
 | 
			
		||||
        });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static long GetUserFlowers(ulong userId) =>
 | 
			
		||||
            Classes.DbHandler.Instance.GetStateByUserId((long)userId)?.Value ?? 0;
 | 
			
		||||
    }
 | 
			
		||||
    public static long GetUserFlowers(ulong userId) =>
 | 
			
		||||
        Classes.DbHandler.Instance.GetStateByUserId((long)userId)?.Value ?? 0;
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@ namespace NadekoBot.Modules.Games.Commands
 | 
			
		||||
            text = text.Trim();
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(text))
 | 
			
		||||
                return;
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(ToLeet(text, level)).ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync(ToLeet(text, level)).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -51,7 +51,7 @@
 | 
			
		||||
//                        var rnd = Math.Abs(rng.Next(0,101));
 | 
			
		||||
//                        if (rnd == 0)
 | 
			
		||||
//                        {
 | 
			
		||||
//                            var msgs = new[] { await e.Channel.SendFile(GetRandomCurrencyImagePath()), await imsg.Channel.SendMessageAsync($"❗ A random {NadekoBot.Config.CurrencyName} appeared! Pick it up by typing `>pick`") };
 | 
			
		||||
//                            var msgs = new[] { await e.Channel.SendFile(GetRandomCurrencyImagePath()), await channel.SendMessageAsync($"❗ A random {NadekoBot.Config.CurrencyName} appeared! Pick it up by typing `>pick`") };
 | 
			
		||||
//                            plantedFlowerChannels.AddOrUpdate(e.Channel.Id, msgs, (u, m) => { m.ForEach(async msgToDelete => { try { await msgToDelete.Delete(); } catch { } }); return msgs; });
 | 
			
		||||
//                            plantpickCooldowns.AddOrUpdate(e.Channel.Id, now, (i, d) => now);
 | 
			
		||||
//                        }
 | 
			
		||||
@@ -80,7 +80,7 @@
 | 
			
		||||
//                        await msgToDelete.Delete().ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
//                    await FlowersHandler.AddFlowersAsync(e.User, "Picked a flower.", 1, true).ConfigureAwait(false);
 | 
			
		||||
//                    var msg = await imsg.Channel.SendMessageAsync($"**{e.User.Name}** picked a {NadekoBot.Config.CurrencyName}!").ConfigureAwait(false);
 | 
			
		||||
//                    var msg = await channel.SendMessageAsync($"**{e.User.Name}** picked a {NadekoBot.Config.CurrencyName}!").ConfigureAwait(false);
 | 
			
		||||
//                    ThreadPool.QueueUserWorkItem(async (state) =>
 | 
			
		||||
//                    {
 | 
			
		||||
//                        try
 | 
			
		||||
@@ -101,24 +101,24 @@
 | 
			
		||||
//                    {
 | 
			
		||||
//                        if (plantedFlowerChannels.ContainsKey(e.Channel.Id))
 | 
			
		||||
//                        {
 | 
			
		||||
//                            await imsg.Channel.SendMessageAsync($"There is already a {NadekoBot.Config.CurrencyName} in this channel.").ConfigureAwait(false);
 | 
			
		||||
//                            await channel.SendMessageAsync($"There is already a {NadekoBot.Config.CurrencyName} in this channel.").ConfigureAwait(false);
 | 
			
		||||
//                            return;
 | 
			
		||||
//                        }
 | 
			
		||||
//                        var removed = await FlowersHandler.RemoveFlowers(e.User, "Planted a flower.", 1, true).ConfigureAwait(false);
 | 
			
		||||
//                        if (!removed)
 | 
			
		||||
//                        {
 | 
			
		||||
//                            await imsg.Channel.SendMessageAsync($"You don't have any {NadekoBot.Config.CurrencyName}s.").ConfigureAwait(false);
 | 
			
		||||
//                            await channel.SendMessageAsync($"You don't have any {NadekoBot.Config.CurrencyName}s.").ConfigureAwait(false);
 | 
			
		||||
//                            return;
 | 
			
		||||
//                        }
 | 
			
		||||
 | 
			
		||||
//                        var file = GetRandomCurrencyImagePath();
 | 
			
		||||
//                        Message msg;
 | 
			
		||||
//                        if (file == null)
 | 
			
		||||
//                            msg = await imsg.Channel.SendMessageAsync(NadekoBot.Config.CurrencySign).ConfigureAwait(false);
 | 
			
		||||
//                            msg = await channel.SendMessageAsync(NadekoBot.Config.CurrencySign).ConfigureAwait(false);
 | 
			
		||||
//                        else
 | 
			
		||||
//                            msg = await e.Channel.SendFile(file).ConfigureAwait(false);
 | 
			
		||||
//                        var vowelFirst = new[] { 'a', 'e', 'i', 'o', 'u' }.Contains(NadekoBot.Config.CurrencyName[0]);
 | 
			
		||||
//                        var msg2 = await imsg.Channel.SendMessageAsync($"Oh how Nice! **{e.User.Name}** planted {(vowelFirst ? "an" : "a")} {NadekoBot.Config.CurrencyName}. Pick it using {Module.Prefix}pick").ConfigureAwait(false);
 | 
			
		||||
//                        var msg2 = await channel.SendMessageAsync($"Oh how Nice! **{e.User.Name}** planted {(vowelFirst ? "an" : "a")} {NadekoBot.Config.CurrencyName}. Pick it using {Module.Prefix}pick").ConfigureAwait(false);
 | 
			
		||||
//                        plantedFlowerChannels.TryAdd(e.Channel.Id, new[] { msg, msg2 });
 | 
			
		||||
//                    }
 | 
			
		||||
//                    finally { locker.Release();  }
 | 
			
		||||
@@ -141,12 +141,12 @@
 | 
			
		||||
//                    int throwaway;
 | 
			
		||||
//                    if (config.GenerateCurrencyChannels.TryRemove(e.Channel.Id, out throwaway))
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("`Currency generation disabled on this channel.`").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("`Currency generation disabled on this channel.`").ConfigureAwait(false);
 | 
			
		||||
//                    }
 | 
			
		||||
//                    else
 | 
			
		||||
//                    {
 | 
			
		||||
//                        if (config.GenerateCurrencyChannels.TryAdd(e.Channel.Id, cd))
 | 
			
		||||
//                            await imsg.Channel.SendMessageAsync($"`Currency generation enabled on this channel. Cooldown is {cd} minutes.`").ConfigureAwait(false);
 | 
			
		||||
//                            await channel.SendMessageAsync($"`Currency generation enabled on this channel. Cooldown is {cd} minutes.`").ConfigureAwait(false);
 | 
			
		||||
//                    }
 | 
			
		||||
//                });
 | 
			
		||||
//        }
 | 
			
		||||
 
 | 
			
		||||
@@ -76,7 +76,7 @@ namespace NadekoBot.Modules.Games.Commands
 | 
			
		||||
            var num = 1;
 | 
			
		||||
            msgToSend = answers.Aggregate(msgToSend, (current, answ) => current + $"`{num++}.` **{answ}**\n");
 | 
			
		||||
            msgToSend += "\n**Private Message me with the corresponding number of the answer.**";
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(msgToSend).ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync(msgToSend).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public async Task StopPoll(IGuildChannel ch)
 | 
			
		||||
@@ -91,7 +91,7 @@ namespace NadekoBot.Modules.Games.Commands
 | 
			
		||||
                var totalVotesCast = results.Sum(kvp => kvp.Value);
 | 
			
		||||
                if (totalVotesCast == 0)
 | 
			
		||||
                {
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("📄 **No votes have been cast.**").ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync("📄 **No votes have been cast.**").ConfigureAwait(false);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                var closeMessage = $"--------------**POLL CLOSED**--------------\n" +
 | 
			
		||||
@@ -100,7 +100,7 @@ namespace NadekoBot.Modules.Games.Commands
 | 
			
		||||
                                                                                 $" has {kvp.Value} votes." +
 | 
			
		||||
                                                                                 $"({kvp.Value * 1.0f / totalVotesCast * 100}%)\n");
 | 
			
		||||
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"📄 **Total votes cast**: {totalVotesCast}\n{closeMessage}").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"📄 **Total votes cast**: {totalVotesCast}\n{closeMessage}").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
 
 | 
			
		||||
@@ -115,7 +115,7 @@
 | 
			
		||||
//                    await channel.Send($"{e.User.Mention} finished in **{sw.Elapsed.Seconds}** seconds with { distance } errors, **{ CurrentSentence.Length / WORD_VALUE / sw.Elapsed.Seconds * 60 }** WPM!").ConfigureAwait(false);
 | 
			
		||||
//                    if (finishedUserIds.Count % 2 == 0)
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync($":exclamation: `A lot of people finished, here is the text for those still typing:`\n\n:book:**{CurrentSentence}**:book:").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync($":exclamation: `A lot of people finished, here is the text for those still typing:`\n\n:book:**{CurrentSentence}**:book:").ConfigureAwait(false);
 | 
			
		||||
//                    }
 | 
			
		||||
//                }
 | 
			
		||||
//            }
 | 
			
		||||
@@ -143,7 +143,7 @@
 | 
			
		||||
 | 
			
		||||
//                if (game.IsActive)
 | 
			
		||||
//                {
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync(
 | 
			
		||||
//                    await channel.SendMessageAsync(
 | 
			
		||||
//                            $"Contest already running in " +
 | 
			
		||||
//                            $"{game.Channell.Mention} channel.")
 | 
			
		||||
//                                .ConfigureAwait(false);
 | 
			
		||||
@@ -163,7 +163,7 @@
 | 
			
		||||
//                    await game.Stop().ConfigureAwait(false);
 | 
			
		||||
//                    return;
 | 
			
		||||
//                }
 | 
			
		||||
//                await imsg.Channel.SendMessageAsync("No contest to stop on this channel.").ConfigureAwait(false);
 | 
			
		||||
//                await channel.SendMessageAsync("No contest to stop on this channel.").ConfigureAwait(false);
 | 
			
		||||
//            };
 | 
			
		||||
 | 
			
		||||
//        internal override void Init(CommandGroupBuilder cgb)
 | 
			
		||||
@@ -189,7 +189,7 @@
 | 
			
		||||
//                        DateAdded = DateTime.Now
 | 
			
		||||
//                    });
 | 
			
		||||
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync("Added new article for typing game.").ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync("Added new article for typing game.").ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
//        }
 | 
			
		||||
//    }
 | 
			
		||||
 
 | 
			
		||||
@@ -36,12 +36,12 @@ namespace NadekoBot.Modules.Games.Commands
 | 
			
		||||
                        return;
 | 
			
		||||
                    var triviaGame = new TriviaGame(channel.Guild, imsg.Channel as ITextChannel, showHints, number == 0 ? 10 : number);
 | 
			
		||||
                    if (RunningTrivias.TryAdd(channel.Guild.Id, triviaGame))
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"**Trivia game started! {triviaGame.WinRequirement} points needed to win.**").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync($"**Trivia game started! {triviaGame.WinRequirement} points needed to win.**").ConfigureAwait(false);
 | 
			
		||||
                    else
 | 
			
		||||
                        await triviaGame.StopGame().ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("Trivia game is already running on this server.\n" + trivia.CurrentQuestion).ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync("Trivia game is already running on this server.\n" + trivia.CurrentQuestion).ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -52,9 +52,9 @@ namespace NadekoBot.Modules.Games.Commands
 | 
			
		||||
 | 
			
		||||
                TriviaGame trivia;
 | 
			
		||||
                if (RunningTrivias.TryGetValue(channel.Guild.Id, out trivia))
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync(trivia.GetLeaderboard()).ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync(trivia.GetLeaderboard()).ConfigureAwait(false);
 | 
			
		||||
                else
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("No trivia is running on this server.").ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync("No trivia is running on this server.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -69,7 +69,7 @@ namespace NadekoBot.Modules.Games.Commands
 | 
			
		||||
                    await trivia.StopGame().ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("No trivia is running on this server.").ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync("No trivia is running on this server.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ namespace NadekoBot.Modules.Games
 | 
			
		||||
            if (listArr.Count() < 2)
 | 
			
		||||
                return;
 | 
			
		||||
            var rng = new Random();
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(listArr[rng.Next(0, listArr.Length)]).ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync(listArr[rng.Next(0, listArr.Length)]).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -42,7 +42,7 @@ namespace NadekoBot.Modules.Games
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(question))
 | 
			
		||||
                return;
 | 
			
		||||
                var rng = new Random();
 | 
			
		||||
            await imsg.Channel.SendMessageAsync($@":question: `Question` __**{question}**__ 
 | 
			
		||||
            await channel.SendMessageAsync($@":question: `Question` __**{question}**__ 
 | 
			
		||||
🎱 `8Ball Answers` __**{_8BallResponses.Shuffle().FirstOrDefault()}**__").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -93,7 +93,7 @@ namespace NadekoBot.Modules.Games
 | 
			
		||||
            else
 | 
			
		||||
                msg = $"{imsg.Author.Mention} won! :{GetRPSPick(pick)}: beats :{GetRPSPick(nadekoPick)}:";
 | 
			
		||||
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(msg).ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync(msg).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -102,7 +102,7 @@ namespace NadekoBot.Modules.Games
 | 
			
		||||
        {
 | 
			
		||||
            var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(
 | 
			
		||||
            await channel.SendMessageAsync(
 | 
			
		||||
$@"I'd just like to interject for moment. What you're refering to as {loonix}, is in fact, {guhnoo}/{loonix}, or as I've recently taken to calling it, {guhnoo} plus {loonix}. {loonix} is not an operating system unto itself, but rather another free component of a fully functioning {guhnoo} system made useful by the {guhnoo} corelibs, shell utilities and vital system components comprising a full OS as defined by POSIX.
 | 
			
		||||
 | 
			
		||||
Many computer users run a modified version of the {guhnoo} system every day, without realizing it. Through a peculiar turn of events, the version of {guhnoo} which is widely used today is often called {loonix}, and many of its users are not aware that it is basically the {guhnoo} system, developed by the {guhnoo} Project.
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ namespace NadekoBot.Modules.Help
 | 
			
		||||
        {
 | 
			
		||||
            var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
 | 
			
		||||
            await imsg.Channel.SendMessageAsync("`List of modules:` \n• " + string.Join("\n• ", _commands.Modules.Select(m => m.Name)) + $"\n`Type \"-commands module_name\" to get a list of commands in that module.`")
 | 
			
		||||
            await channel.SendMessageAsync("`List of modules:` \n• " + string.Join("\n• ", _commands.Modules.Select(m => m.Name)) + $"\n`Type \"-commands module_name\" to get a list of commands in that module.`")
 | 
			
		||||
                                       .ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -49,19 +49,19 @@ namespace NadekoBot.Modules.Help
 | 
			
		||||
            var cmdsArray = cmds as Command[] ?? cmds.ToArray();
 | 
			
		||||
            if (!cmdsArray.Any())
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("That module does not exist.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("That module does not exist.").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            if (module != "customreactions" && module != "conversations")
 | 
			
		||||
            {
 | 
			
		||||
                //todo aliases
 | 
			
		||||
                await imsg.Channel.SendTableAsync("`List Of Commands:`\n", cmdsArray, el => $"{el.Text,-15}").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendTableAsync("`List Of Commands:`\n", cmdsArray, el => $"{el.Text,-15}").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("`List Of Commands:`\n• " + string.Join("\n• ", cmdsArray.Select(c => $"{c.Text}")));
 | 
			
		||||
                await channel.SendMessageAsync("`List Of Commands:`\n• " + string.Join("\n• ", cmdsArray.Select(c => $"{c.Text}")));
 | 
			
		||||
            }
 | 
			
		||||
            await imsg.Channel.SendMessageAsync($"`You can type \"-h command_name\" to see the help about that specific command.`").ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync($"`You can type \"-h command_name\" to see the help about that specific command.`").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -80,7 +80,7 @@ namespace NadekoBot.Modules.Help
 | 
			
		||||
 | 
			
		||||
            //todo aliases
 | 
			
		||||
            if (com != null)
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($@"**__Help for:__ `{com.Text}`**
 | 
			
		||||
                await channel.SendMessageAsync($@"**__Help for:__ `{com.Text}`**
 | 
			
		||||
**Desc:** {com.Description}
 | 
			
		||||
**Usage:** {com.Summary}").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
@@ -118,7 +118,7 @@ namespace NadekoBot.Modules.Help
 | 
			
		||||
        {
 | 
			
		||||
            var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(
 | 
			
		||||
            await channel.SendMessageAsync(
 | 
			
		||||
@"**LIST OF COMMANDS**: <http://nadekobot.readthedocs.io/en/latest/Commands%20List/>
 | 
			
		||||
**Hosting Guides and docs can be found here**: <http://nadekobot.rtfd.io>").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
@@ -129,7 +129,7 @@ namespace NadekoBot.Modules.Help
 | 
			
		||||
        {
 | 
			
		||||
            var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(
 | 
			
		||||
            await channel.SendMessageAsync(
 | 
			
		||||
$@"You can support the project on patreon. <https://patreon.com/nadekobot> or
 | 
			
		||||
You can send donations to `nadekodiscordbot@gmail.com`
 | 
			
		||||
Don't forget to leave your discord name or id in the message.
 | 
			
		||||
 
 | 
			
		||||
@@ -32,11 +32,11 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
 | 
			
		||||
            if (links.All(l => l == null))
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("`No results.`");
 | 
			
		||||
                await channel.SendMessageAsync("`No results.`");
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(String.Join("\n\n", links)).ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync(String.Join("\n\n", links)).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -48,9 +48,9 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
            tag = tag?.Trim() ?? "";
 | 
			
		||||
            var link = await GetDanbooruImageLink(tag).ConfigureAwait(false);
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(link))
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Search yielded no results ;(");
 | 
			
		||||
                await channel.SendMessageAsync("Search yielded no results ;(");
 | 
			
		||||
            else
 | 
			
		||||
                await imsg.Channel.SendMessageAsync(link).ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync(link).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -62,9 +62,9 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
            tag = tag?.Trim() ?? "";
 | 
			
		||||
            var link = await GetRule34ImageLink(tag).ConfigureAwait(false);
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(link))
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Search yielded no results ;(");
 | 
			
		||||
                await channel.SendMessageAsync("Search yielded no results ;(");
 | 
			
		||||
            else
 | 
			
		||||
                await imsg.Channel.SendMessageAsync(link).ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync(link).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -76,9 +76,9 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
            tag = tag?.Trim() ?? "";
 | 
			
		||||
            var link = await GetGelbooruImageLink(tag).ConfigureAwait(false);
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(link))
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Search yielded no results ;(");
 | 
			
		||||
                await channel.SendMessageAsync("Search yielded no results ;(");
 | 
			
		||||
            else
 | 
			
		||||
                await imsg.Channel.SendMessageAsync(link).ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync(link).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -90,9 +90,9 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
            tag = tag?.Trim() ?? "";
 | 
			
		||||
            var link = await GetE621ImageLink(tag).ConfigureAwait(false);
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(link))
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Search yielded no results ;(");
 | 
			
		||||
                await channel.SendMessageAsync("Search yielded no results ;(");
 | 
			
		||||
            else
 | 
			
		||||
                await imsg.Channel.SendMessageAsync(link).ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync(link).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -101,7 +101,7 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
        {
 | 
			
		||||
            var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
 | 
			
		||||
            await imsg.Channel.SendMessageAsync("http://i.imgur.com/MZkY1md.jpg").ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync("http://i.imgur.com/MZkY1md.jpg").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -116,11 +116,11 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
                {
 | 
			
		||||
                    obj = JArray.Parse(await http.GetStringAsync($"http://api.oboobs.ru/boobs/{ new Random().Next(0, 9880) }").ConfigureAwait(false))[0];
 | 
			
		||||
                }
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"http://media.oboobs.ru/{ obj["preview"].ToString() }").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"http://media.oboobs.ru/{ obj["preview"].ToString() }").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"💢 {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"💢 {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -137,11 +137,11 @@ namespace NadekoBot.Modules.NSFW
 | 
			
		||||
                {
 | 
			
		||||
                    obj = JArray.Parse(await http.GetStringAsync($"http://api.obutts.ru/butts/{ new Random().Next(0, 3873) }").ConfigureAwait(false))[0];
 | 
			
		||||
                }
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"http://media.obutts.ru/{ obj["preview"].ToString() }").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"http://media.obutts.ru/{ obj["preview"].ToString() }").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"💢 {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"💢 {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -25,11 +25,11 @@
 | 
			
		||||
//            }
 | 
			
		||||
//            catch
 | 
			
		||||
//            {
 | 
			
		||||
//                await imsg.Channel.SendMessageAsync("Failed to find that anime.").ConfigureAwait(false);
 | 
			
		||||
//                await channel.SendMessageAsync("Failed to find that anime.").ConfigureAwait(false);
 | 
			
		||||
//                return;
 | 
			
		||||
//            }
 | 
			
		||||
 | 
			
		||||
//            await imsg.Channel.SendMessageAsync(result.ToString()).ConfigureAwait(false);
 | 
			
		||||
//            await channel.SendMessageAsync(result.ToString()).ConfigureAwait(false);
 | 
			
		||||
//        }
 | 
			
		||||
 | 
			
		||||
//        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -46,10 +46,10 @@
 | 
			
		||||
//            }
 | 
			
		||||
//            catch
 | 
			
		||||
//            {
 | 
			
		||||
//                await imsg.Channel.SendMessageAsync("Failed to find that manga.").ConfigureAwait(false);
 | 
			
		||||
//                await channel.SendMessageAsync("Failed to find that manga.").ConfigureAwait(false);
 | 
			
		||||
//                return;
 | 
			
		||||
//            }
 | 
			
		||||
//            await imsg.Channel.SendMessageAsync(result).ConfigureAwait(false);
 | 
			
		||||
//            await channel.SendMessageAsync(result).ConfigureAwait(false);
 | 
			
		||||
//        }
 | 
			
		||||
 | 
			
		||||
//        public static async Task<AnimeResult> GetAnimeData(string query)
 | 
			
		||||
 
 | 
			
		||||
@@ -62,7 +62,7 @@
 | 
			
		||||
//                    msg += curr + "; ";
 | 
			
		||||
//                }
 | 
			
		||||
 | 
			
		||||
//                await imsg.Channel.SendMessageAsync(msg).ConfigureAwait(false);
 | 
			
		||||
//                await channel.SendMessageAsync(msg).ConfigureAwait(false);
 | 
			
		||||
//            };
 | 
			
		||||
 | 
			
		||||
//        private Func<CommandEventArgs, Task> ConvertFunc() =>
 | 
			
		||||
@@ -89,7 +89,7 @@
 | 
			
		||||
//                    {
 | 
			
		||||
//                        Unit inUnit = new Unit(fromCode, quantity, table);
 | 
			
		||||
//                        Unit outUnit = inUnit.Convert(toCode);
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync(inUnit.ToString() + " = " + outUnit.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync(inUnit.ToString() + " = " + outUnit.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                    }
 | 
			
		||||
//                    else
 | 
			
		||||
//                    {
 | 
			
		||||
@@ -98,13 +98,13 @@
 | 
			
		||||
//                        reInitCurrencyConverterTable();
 | 
			
		||||
//                        Unit inUnit = currTable.CreateUnit(quantity, from.ToUpperInvariant());
 | 
			
		||||
//                        Unit outUnit = inUnit.Convert(currTable.CurrencyCode(to.ToUpperInvariant()));
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync(inUnit.ToString() + " = " + outUnit.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync(inUnit.ToString() + " = " + outUnit.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                    }
 | 
			
		||||
//                }
 | 
			
		||||
//                catch //(Exception ex)
 | 
			
		||||
//                {
 | 
			
		||||
//                    //Console.WriteLine(ex.ToString());
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync("Bad input format, or sth went wrong... Try to list them with `" + Module.Prefix + "`convertlist").ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync("Bad input format, or sth went wrong... Try to list them with `" + Module.Prefix + "`convertlist").ConfigureAwait(false);
 | 
			
		||||
//                }
 | 
			
		||||
//            };
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -35,10 +35,10 @@
 | 
			
		||||
//            string answer = Evaluate(expression);
 | 
			
		||||
//            if (answer == null)
 | 
			
		||||
//            {
 | 
			
		||||
//                await imsg.Channel.SendMessageAsync($"Expression {expression} failed to evaluate");
 | 
			
		||||
//                await channel.SendMessageAsync($"Expression {expression} failed to evaluate");
 | 
			
		||||
//                return;
 | 
			
		||||
//            }
 | 
			
		||||
//            await imsg.Channel.SendMessageAsync($"⚙ `{answer}`");
 | 
			
		||||
//            await channel.SendMessageAsync($"⚙ `{answer}`");
 | 
			
		||||
//        };
 | 
			
		||||
 | 
			
		||||
//        private string Evaluate(string expression)
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,7 @@ namespace NadekoBot.Modules.Searches.Commands
 | 
			
		||||
                using (var http = new HttpClient())
 | 
			
		||||
                {
 | 
			
		||||
                    var response = await http.GetStringAsync("http://api.yomomma.info/").ConfigureAwait(false);
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("`" + JObject.Parse(response)["joke"].ToString() + "` 😆").ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync("`" + JObject.Parse(response)["joke"].ToString() + "` 😆").ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@@ -48,7 +48,7 @@ namespace NadekoBot.Modules.Searches.Commands
 | 
			
		||||
                using (var http = new HttpClient())
 | 
			
		||||
                {
 | 
			
		||||
                    var response = await http.GetStringAsync("http://tambal.azurewebsites.net/joke/random").ConfigureAwait(false);
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("`" + JObject.Parse(response)["joke"].ToString() + "` 😆").ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync("`" + JObject.Parse(response)["joke"].ToString() + "` 😆").ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@@ -60,7 +60,7 @@ namespace NadekoBot.Modules.Searches.Commands
 | 
			
		||||
                using (var http = new HttpClient())
 | 
			
		||||
                {
 | 
			
		||||
                    var response = await http.GetStringAsync("http://tambal.azurewebsites.net/joke/random").ConfigureAwait(false);
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("`" + JObject.Parse(response)["joke"].ToString() + "` 😆").ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync("`" + JObject.Parse(response)["joke"].ToString() + "` 😆").ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@@ -73,7 +73,7 @@ namespace NadekoBot.Modules.Searches.Commands
 | 
			
		||||
                if (!wowJokes.Any())
 | 
			
		||||
                {
 | 
			
		||||
                }
 | 
			
		||||
                await imsg.Channel.SendMessageAsync(wowJokes[new Random().Next(0, wowJokes.Count)].ToString());
 | 
			
		||||
                await channel.SendMessageAsync(wowJokes[new Random().Next(0, wowJokes.Count)].ToString());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -84,7 +84,7 @@ namespace NadekoBot.Modules.Searches.Commands
 | 
			
		||||
                var rng = new Random();
 | 
			
		||||
                var item = magicItems[rng.Next(0, magicItems.Count)].ToString();
 | 
			
		||||
 | 
			
		||||
                await imsg.Channel.SendMessageAsync(item).ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync(item).ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -107,7 +107,7 @@
 | 
			
		||||
//                              }
 | 
			
		||||
//                              if (data == null)
 | 
			
		||||
//                              {
 | 
			
		||||
//                                  await imsg.Channel.SendMessageAsync("💢 Data for that role does not exist.").ConfigureAwait(false);
 | 
			
		||||
//                                  await channel.SendMessageAsync("💢 Data for that role does not exist.").ConfigureAwait(false);
 | 
			
		||||
//                                  return;
 | 
			
		||||
//                              }
 | 
			
		||||
//                          }
 | 
			
		||||
@@ -276,7 +276,7 @@
 | 
			
		||||
//                      catch (Exception ex)
 | 
			
		||||
//                      {
 | 
			
		||||
//                          Console.WriteLine(ex);
 | 
			
		||||
//                          await imsg.Channel.SendMessageAsync("💢 Failed retreiving data for that champion.").ConfigureAwait(false);
 | 
			
		||||
//                          await channel.SendMessageAsync("💢 Failed retreiving data for that champion.").ConfigureAwait(false);
 | 
			
		||||
//                      }
 | 
			
		||||
//                  });
 | 
			
		||||
 | 
			
		||||
@@ -308,11 +308,11 @@
 | 
			
		||||
//                              //sb.AppendLine($" ({dataList[i]["general"]["banRate"]}%)");
 | 
			
		||||
//                          }
 | 
			
		||||
 | 
			
		||||
//                          await imsg.Channel.SendMessageAsync(sb.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                          await channel.SendMessageAsync(sb.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                      }
 | 
			
		||||
//                      catch (Exception)
 | 
			
		||||
//                      {
 | 
			
		||||
//                          await imsg.Channel.SendMessageAsync($":anger: Fail: Champion.gg didsabled ban data until next patch. Sorry for the inconvenience.").ConfigureAwait(false);
 | 
			
		||||
//                          await channel.SendMessageAsync($":anger: Fail: Champion.gg didsabled ban data until next patch. Sorry for the inconvenience.").ConfigureAwait(false);
 | 
			
		||||
//                      }
 | 
			
		||||
//                  });
 | 
			
		||||
//        }
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@ namespace NadekoBot.Modules.Searches.Commands
 | 
			
		||||
                var data = JsonConvert.DeserializeObject<Dictionary<string, string>>(await http.GetStringAsync("http://memegen.link/templates/"))
 | 
			
		||||
                                          .Select(kvp => Path.GetFileName(kvp.Value));
 | 
			
		||||
 | 
			
		||||
                await imsg.Channel.SendTableAsync(data, x => $"{x,-17}", 3);
 | 
			
		||||
                await channel.SendTableAsync(data, x => $"{x,-17}", 3);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -41,7 +41,7 @@ namespace NadekoBot.Modules.Searches.Commands
 | 
			
		||||
 | 
			
		||||
            var top = Uri.EscapeDataString(topText.Replace(' ', '-'));
 | 
			
		||||
            var bot = Uri.EscapeDataString(botText.Replace(' ', '-'));
 | 
			
		||||
            await imsg.Channel.SendMessageAsync($"http://memegen.link/{meme}/{top}/{bot}.jpg");
 | 
			
		||||
            await channel.SendMessageAsync($"http://memegen.link/{meme}/{top}/{bot}.jpg");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -44,14 +44,14 @@
 | 
			
		||||
//                                  try
 | 
			
		||||
//                                  {
 | 
			
		||||
//                                      await e.Channel.SendFile($"{e.GetArg("usr")}.png", new MemoryStream(cle.Result)).ConfigureAwait(false);
 | 
			
		||||
//                                      await imsg.Channel.SendMessageAsync($"`Profile Link:`https://osu.ppy.sh/u/{Uri.EscapeDataString(e.GetArg("usr"))}\n`Image provided by https://lemmmy.pw/osusig`").ConfigureAwait(false);
 | 
			
		||||
//                                      await channel.SendMessageAsync($"`Profile Link:`https://osu.ppy.sh/u/{Uri.EscapeDataString(e.GetArg("usr"))}\n`Image provided by https://lemmmy.pw/osusig`").ConfigureAwait(false);
 | 
			
		||||
//                                  }
 | 
			
		||||
//                                  catch { }
 | 
			
		||||
//                              };
 | 
			
		||||
//                          }
 | 
			
		||||
//                          catch
 | 
			
		||||
//                          {
 | 
			
		||||
//                              await imsg.Channel.SendMessageAsync("💢 Failed retrieving osu signature :\\").ConfigureAwait(false);
 | 
			
		||||
//                              await channel.SendMessageAsync("💢 Failed retrieving osu signature :\\").ConfigureAwait(false);
 | 
			
		||||
//                          }
 | 
			
		||||
//                      }
 | 
			
		||||
//                  });
 | 
			
		||||
@@ -63,7 +63,7 @@
 | 
			
		||||
//                {
 | 
			
		||||
//                    if (string.IsNullOrWhiteSpace(NadekoBot.Creds.OsuAPIKey))
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("💢 An osu! API key is required.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("💢 An osu! API key is required.").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
 | 
			
		||||
@@ -80,11 +80,11 @@
 | 
			
		||||
//                        var time = TimeSpan.FromSeconds(Double.Parse($"{obj["total_length"]}")).ToString(@"mm\:ss");
 | 
			
		||||
//                        sb.AppendLine($"{obj["artist"]} - {obj["title"]}, mapped by {obj["creator"]}. https://osu.ppy.sh/s/{obj["beatmapset_id"]}");
 | 
			
		||||
//                        sb.AppendLine($"{starRating} stars, {obj["bpm"]} BPM | AR{obj["diff_approach"]}, CS{obj["diff_size"]}, OD{obj["diff_overall"]} | Length: {time}");
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync(sb.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync(sb.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                    }
 | 
			
		||||
//                    catch
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Something went wrong.");
 | 
			
		||||
//                        await channel.SendMessageAsync("Something went wrong.");
 | 
			
		||||
//                    }
 | 
			
		||||
//                });
 | 
			
		||||
 | 
			
		||||
@@ -96,13 +96,13 @@
 | 
			
		||||
//                {
 | 
			
		||||
//                    if (string.IsNullOrWhiteSpace(NadekoBot.Creds.OsuAPIKey))
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("💢 An osu! API key is required.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("💢 An osu! API key is required.").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
 | 
			
		||||
//                    if (string.IsNullOrWhiteSpace(e.GetArg("usr")))
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("💢 Please provide a username.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("💢 Please provide a username.").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
 | 
			
		||||
@@ -130,11 +130,11 @@
 | 
			
		||||
//                                sb.AppendLine($"{pp + "pp",-7} | {acc + "%",-7} | {map["artist"] + "-" + map["title"] + " (" + map["version"],-40})  | /b/{item["beatmap_id"]}");
 | 
			
		||||
//                        }
 | 
			
		||||
//                        sb.Append("```");
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync(sb.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync(sb.ToString()).ConfigureAwait(false);
 | 
			
		||||
//                    }
 | 
			
		||||
//                    catch
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Something went wrong.");
 | 
			
		||||
//                        await channel.SendMessageAsync("Something went wrong.");
 | 
			
		||||
//                    }
 | 
			
		||||
//                });
 | 
			
		||||
//        }
 | 
			
		||||
 
 | 
			
		||||
@@ -38,11 +38,11 @@ namespace NadekoBot.Modules.Searches.Commands
 | 
			
		||||
                {
 | 
			
		||||
                    if (kvp.Key.ToUpperInvariant() == pokemon.ToUpperInvariant())
 | 
			
		||||
                    {
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"`Stats for \"{kvp.Key}\" pokemon:`\n{kvp.Value}");
 | 
			
		||||
                        await channel.SendMessageAsync($"`Stats for \"{kvp.Key}\" pokemon:`\n{kvp.Value}");
 | 
			
		||||
                        return;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("`No pokemon found.`");
 | 
			
		||||
                await channel.SendMessageAsync("`No pokemon found.`");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -58,11 +58,11 @@ namespace NadekoBot.Modules.Searches.Commands
 | 
			
		||||
                {
 | 
			
		||||
                    if (kvp.Key.ToUpperInvariant() == ability)
 | 
			
		||||
                    {
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"`Info for \"{kvp.Key}\" ability:`\n{kvp.Value}");
 | 
			
		||||
                        await channel.SendMessageAsync($"`Info for \"{kvp.Key}\" ability:`\n{kvp.Value}");
 | 
			
		||||
                        return;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("`No ability found.`");
 | 
			
		||||
                await channel.SendMessageAsync("`No ability found.`");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -166,12 +166,12 @@
 | 
			
		||||
//                            }));
 | 
			
		||||
//                            if (streamStatus.Item1)
 | 
			
		||||
//                            {
 | 
			
		||||
//                                await imsg.Channel.SendMessageAsync($"`Streamer {streamStatus.Item2} is online.`");
 | 
			
		||||
//                                await channel.SendMessageAsync($"`Streamer {streamStatus.Item2} is online.`");
 | 
			
		||||
//                            }
 | 
			
		||||
//                        }
 | 
			
		||||
//                        catch
 | 
			
		||||
//                        {
 | 
			
		||||
//                            await imsg.Channel.SendMessageAsync("No channel found.");
 | 
			
		||||
//                            await channel.SendMessageAsync("No channel found.");
 | 
			
		||||
//                        }
 | 
			
		||||
//                    });
 | 
			
		||||
 | 
			
		||||
@@ -195,12 +195,12 @@
 | 
			
		||||
//                            }));
 | 
			
		||||
//                            if (streamStatus.Item1)
 | 
			
		||||
//                            {
 | 
			
		||||
//                                await imsg.Channel.SendMessageAsync($"`Streamer {streamStatus.Item2} is online.`");
 | 
			
		||||
//                                await channel.SendMessageAsync($"`Streamer {streamStatus.Item2} is online.`");
 | 
			
		||||
//                            }
 | 
			
		||||
//                        }
 | 
			
		||||
//                        catch
 | 
			
		||||
//                        {
 | 
			
		||||
//                            await imsg.Channel.SendMessageAsync("No channel found.");
 | 
			
		||||
//                            await channel.SendMessageAsync("No channel found.");
 | 
			
		||||
//                        }
 | 
			
		||||
//                    });
 | 
			
		||||
 | 
			
		||||
@@ -224,12 +224,12 @@
 | 
			
		||||
//                            }));
 | 
			
		||||
//                            if (streamStatus.Item1)
 | 
			
		||||
//                            {
 | 
			
		||||
//                                await imsg.Channel.SendMessageAsync($"`Streamer {streamStatus.Item2} is online.`");
 | 
			
		||||
//                                await channel.SendMessageAsync($"`Streamer {streamStatus.Item2} is online.`");
 | 
			
		||||
//                            }
 | 
			
		||||
//                        }
 | 
			
		||||
//                        catch
 | 
			
		||||
//                        {
 | 
			
		||||
//                            await imsg.Channel.SendMessageAsync("No channel found.");
 | 
			
		||||
//                            await channel.SendMessageAsync("No channel found.");
 | 
			
		||||
//                        }
 | 
			
		||||
//                    });
 | 
			
		||||
 | 
			
		||||
@@ -252,13 +252,13 @@
 | 
			
		||||
//                                            snc.Username.ToLower().Trim() == username);
 | 
			
		||||
//                        if (toRemove == null)
 | 
			
		||||
//                        {
 | 
			
		||||
//                            await imsg.Channel.SendMessageAsync(":anger: No such stream.").ConfigureAwait(false);
 | 
			
		||||
//                            await channel.SendMessageAsync(":anger: No such stream.").ConfigureAwait(false);
 | 
			
		||||
//                            return;
 | 
			
		||||
//                        }
 | 
			
		||||
 | 
			
		||||
//                        config.ObservingStreams.Remove(toRemove);
 | 
			
		||||
//                        await ConfigHandler.SaveConfig().ConfigureAwait(false);
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync($":ok: Removed `{toRemove.Username}`'s stream from notifications.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync($":ok: Removed `{toRemove.Username}`'s stream from notifications.").ConfigureAwait(false);
 | 
			
		||||
//                    });
 | 
			
		||||
 | 
			
		||||
//                cgb.CreateCommand(Module.Prefix + "liststreams")
 | 
			
		||||
@@ -277,7 +277,7 @@
 | 
			
		||||
 | 
			
		||||
//                        if (streamsArray.Length == 0)
 | 
			
		||||
//                        {
 | 
			
		||||
//                            await imsg.Channel.SendMessageAsync("You are not following any streams on this server.").ConfigureAwait(false);
 | 
			
		||||
//                            await channel.SendMessageAsync("You are not following any streams on this server.").ConfigureAwait(false);
 | 
			
		||||
//                            return;
 | 
			
		||||
//                        }
 | 
			
		||||
 | 
			
		||||
@@ -291,7 +291,7 @@
 | 
			
		||||
//                            return "";
 | 
			
		||||
//                        }));
 | 
			
		||||
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync($"You are following **{streamsArray.Length}** streams on this server.\n\n" + text).ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync($"You are following **{streamsArray.Length}** streams on this server.\n\n" + text).ConfigureAwait(false);
 | 
			
		||||
//                    });
 | 
			
		||||
//            }
 | 
			
		||||
 | 
			
		||||
@@ -314,7 +314,7 @@
 | 
			
		||||
//                    var exists = config.ObservingStreams.Contains(stream);
 | 
			
		||||
//                    if (exists)
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync(":anger: I am already notifying that stream on this channel.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync(":anger: I am already notifying that stream on this channel.").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
//                    Tuple<bool, string> data;
 | 
			
		||||
@@ -324,7 +324,7 @@
 | 
			
		||||
//                    }
 | 
			
		||||
//                    catch
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync(":anger: Stream probably doesn't exist.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync(":anger: Stream probably doesn't exist.").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
//                    var msg = $"Stream is currently **{(data.Item1 ? "ONLINE" : "OFFLINE")}** with **{data.Item2}** viewers";
 | 
			
		||||
@@ -340,7 +340,7 @@
 | 
			
		||||
//                    stream.LastStatus = data.Item1;
 | 
			
		||||
//                    if (!exists)
 | 
			
		||||
//                        msg = $":ok: I will notify this channel when status changes.\n{msg}";
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync(msg).ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync(msg).ConfigureAwait(false);
 | 
			
		||||
//                    config.ObservingStreams.Add(stream);
 | 
			
		||||
//                };
 | 
			
		||||
//        }
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ namespace NadekoBot.Modules.Searches
 | 
			
		||||
 | 
			
		||||
            var obj = JObject.Parse(response)["weather"];
 | 
			
		||||
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(
 | 
			
		||||
            await channel.SendMessageAsync(
 | 
			
		||||
$@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
📏 **Lat,Long:** ({obj["latitude"]}, {obj["longitude"]}) ☁ **Condition:** {obj["condition"]}
 | 
			
		||||
😓 **Humidity:** {obj["humidity"]}% 💨 **Wind Speed:** {obj["windspeedk"]}km/h / {obj["windspeedm"]}mph 
 | 
			
		||||
@@ -56,11 +56,11 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
            var result = (await _yt.FindVideosByKeywordsAsync(query, 1)).FirstOrDefault();
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(result))
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("No results found for that query.");
 | 
			
		||||
                await channel.SendMessageAsync("No results found for that query.");
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            var shortUrl = await result.ShortenUrl().ConfigureAwait(false);
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(shortUrl).ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync(shortUrl).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -80,11 +80,11 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Failed to find that movie.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Failed to find that movie.").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(result.ToString()).ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync(result.ToString()).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -94,7 +94,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
            var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
            using (var http = new HttpClient())
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync(JObject.Parse(
 | 
			
		||||
                await channel.SendMessageAsync(JObject.Parse(
 | 
			
		||||
                                await http.GetStringAsync("http://www.random.cat/meow").ConfigureAwait(false))["file"].ToString())
 | 
			
		||||
                                    .ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
@@ -107,7 +107,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
            var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
            using (var http = new HttpClient())
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("http://random.dog/" + await http.GetStringAsync("http://random.dog/woof").ConfigureAwait(false)).ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("http://random.dog/" + await http.GetStringAsync("http://random.dog/woof").ConfigureAwait(false)).ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -125,18 +125,18 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
                {
 | 
			
		||||
                    var reqString = $"https://www.googleapis.com/customsearch/v1?q={Uri.EscapeDataString(query)}&cx=018084019232060951019%3Ahs5piey28-e&num=1&searchType=image&fields=items%2Flink&key={NadekoBot.Credentials.GoogleApiKey}";
 | 
			
		||||
                    var obj = JObject.Parse(await http.GetStringAsync(reqString).ConfigureAwait(false));
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync(obj["items"][0]["link"].ToString()).ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync(obj["items"][0]["link"].ToString()).ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            catch (HttpRequestException exception)
 | 
			
		||||
            {
 | 
			
		||||
                if (exception.Message.Contains("403 (Forbidden)"))
 | 
			
		||||
                {
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("Daily limit reached!");
 | 
			
		||||
                    await channel.SendMessageAsync("Daily limit reached!");
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("Something went wrong.");
 | 
			
		||||
                    await channel.SendMessageAsync("Something went wrong.");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -157,18 +157,18 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
                    var reqString = $"https://www.googleapis.com/customsearch/v1?q={Uri.EscapeDataString(query)}&cx=018084019232060951019%3Ahs5piey28-e&num=1&searchType=image&start={ rng.Next(1, 50) }&fields=items%2Flink&key={NadekoBot.Credentials.GoogleApiKey}";
 | 
			
		||||
                    var obj = JObject.Parse(await http.GetStringAsync(reqString).ConfigureAwait(false));
 | 
			
		||||
                    var items = obj["items"] as JArray;
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync(items[0]["link"].ToString()).ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync(items[0]["link"].ToString()).ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            catch (HttpRequestException exception)
 | 
			
		||||
            {
 | 
			
		||||
                if (exception.Message.Contains("403 (Forbidden)"))
 | 
			
		||||
                {
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("Daily limit reached!");
 | 
			
		||||
                    await channel.SendMessageAsync("Daily limit reached!");
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("Something went wrong.");
 | 
			
		||||
                    await channel.SendMessageAsync("Something went wrong.");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -183,7 +183,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(ffs))
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(await $"<http://lmgtfy.com/?q={ Uri.EscapeUriString(ffs) }>".ShortenUrl())
 | 
			
		||||
            await channel.SendMessageAsync(await $"<http://lmgtfy.com/?q={ Uri.EscapeUriString(ffs) }>".ShortenUrl())
 | 
			
		||||
                           .ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -197,7 +197,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
            terms = terms?.Trim();
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(terms))
 | 
			
		||||
                return;
 | 
			
		||||
            await imsg.Channel.SendMessageAsync($"https://google.com/search?q={ WebUtility.UrlEncode(terms).Replace(' ', '+') }")
 | 
			
		||||
            await channel.SendMessageAsync($"https://google.com/search?q={ WebUtility.UrlEncode(terms).Replace(' ', '+') }")
 | 
			
		||||
                           .ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
        ////todo drawing
 | 
			
		||||
@@ -209,7 +209,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
        //    var arg = e.GetArg("name");
 | 
			
		||||
        //    if (string.IsNullOrWhiteSpace(arg))
 | 
			
		||||
        //    {
 | 
			
		||||
        //        await imsg.Channel.SendMessageAsync("💢 Please enter a card name to search for.").ConfigureAwait(false);
 | 
			
		||||
        //        await channel.SendMessageAsync("💢 Please enter a card name to search for.").ConfigureAwait(false);
 | 
			
		||||
        //        return;
 | 
			
		||||
        //    }
 | 
			
		||||
        //    await imsg.Channel.TriggerTypingAsync().ConfigureAwait(false);
 | 
			
		||||
@@ -234,14 +234,14 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
        //            }
 | 
			
		||||
        //            if (items.Count > 4)
 | 
			
		||||
        //            {
 | 
			
		||||
        //                await imsg.Channel.SendMessageAsync("⚠ Found over 4 images. Showing random 4.").ConfigureAwait(false);
 | 
			
		||||
        //                await channel.SendMessageAsync("⚠ Found over 4 images. Showing random 4.").ConfigureAwait(false);
 | 
			
		||||
        //            }
 | 
			
		||||
        //            await imsg.Channel.SendMessageAsync(arg + ".png", (await images.MergeAsync()).ToStream(System.Drawing.Imaging.ImageFormat.Png))
 | 
			
		||||
        //            await channel.SendMessageAsync(arg + ".png", (await images.MergeAsync()).ToStream(System.Drawing.Imaging.ImageFormat.Png))
 | 
			
		||||
        //                           .ConfigureAwait(false);
 | 
			
		||||
        //        }
 | 
			
		||||
        //        catch (Exception ex)
 | 
			
		||||
        //        {
 | 
			
		||||
        //            await imsg.Channel.SendMessageAsync($"💢 Error {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
        //            await channel.SendMessageAsync($"💢 Error {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
        //        }
 | 
			
		||||
        //    }
 | 
			
		||||
        //}
 | 
			
		||||
@@ -255,7 +255,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
            var arg = query;
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(arg))
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("💢 Please enter a search term.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("💢 Please enter a search term.").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            await imsg.Channel.TriggerTypingAsync().ConfigureAwait(false);
 | 
			
		||||
@@ -271,11 +271,11 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
                    sb.AppendLine($"`Term:` {items["list"][0]["word"].ToString()}");
 | 
			
		||||
                    sb.AppendLine($"`Definition:` {items["list"][0]["definition"].ToString()}");
 | 
			
		||||
                    sb.Append($"`Link:` <{await items["list"][0]["permalink"].ToString().ShortenUrl().ConfigureAwait(false)}>");
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync(sb.ToString());
 | 
			
		||||
                    await channel.SendMessageAsync(sb.ToString());
 | 
			
		||||
                }
 | 
			
		||||
                catch
 | 
			
		||||
                {
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("💢 Failed finding a definition for that term.").ConfigureAwait(false);
 | 
			
		||||
                    await channel.SendMessageAsync("💢 Failed finding a definition for that term.").ConfigureAwait(false);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -289,7 +289,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
            var arg = query;
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(arg))
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("💢 Please enter a search term.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("💢 Please enter a search term.").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            await imsg.Channel.TriggerTypingAsync().ConfigureAwait(false);
 | 
			
		||||
@@ -307,11 +307,11 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
                var str = $@"`Hashtag:` {items["defs"]["def"]["hashtag"].ToString()}
 | 
			
		||||
`Definition:` {items["defs"]["def"]["text"].ToString()}
 | 
			
		||||
`Link:` <{await items["defs"]["def"]["uri"].ToString().ShortenUrl().ConfigureAwait(false)}>";
 | 
			
		||||
                await imsg.Channel.SendMessageAsync(str);
 | 
			
		||||
                await channel.SendMessageAsync(str);
 | 
			
		||||
            }
 | 
			
		||||
            catch
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("💢 Failed finding a definition for that tag.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("💢 Failed finding a definition for that tag.").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        //todo DB
 | 
			
		||||
@@ -322,7 +322,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
        //    var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
 | 
			
		||||
        //    var quote = NadekoBot.Config.Quotes[rng.Next(0, NadekoBot.Config.Quotes.Count)].ToString();
 | 
			
		||||
        //    await imsg.Channel.SendMessageAsync(quote).ConfigureAwait(false);
 | 
			
		||||
        //    await channel.SendMessageAsync(quote).ConfigureAwait(false);
 | 
			
		||||
        //}
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -335,7 +335,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
                var response = await http.GetStringAsync("http://catfacts-api.appspot.com/api/facts").ConfigureAwait(false);
 | 
			
		||||
                if (response == null)
 | 
			
		||||
                    return;
 | 
			
		||||
                await imsg.Channel.SendMessageAsync($"🐈 `{JObject.Parse(response)["facts"][0].ToString()}`").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync($"🐈 `{JObject.Parse(response)["facts"][0].ToString()}`").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -353,7 +353,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
 | 
			
		||||
            if (usr == null || string.IsNullOrWhiteSpace(usr.AvatarUrl))
 | 
			
		||||
                return;
 | 
			
		||||
            await imsg.Channel.SendMessageAsync($"https://images.google.com/searchbyimage?image_url={usr.AvatarUrl}").ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync($"https://images.google.com/searchbyimage?image_url={usr.AvatarUrl}").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -365,7 +365,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(imageLink))
 | 
			
		||||
                return;
 | 
			
		||||
            await imsg.Channel.SendMessageAsync($"https://images.google.com/searchbyimage?image_url={imageLink}").ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync($"https://images.google.com/searchbyimage?image_url={imageLink}").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -377,9 +377,9 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
            tag = tag?.Trim() ?? "";
 | 
			
		||||
            var link = await GetSafebooruImageLink(tag).ConfigureAwait(false);
 | 
			
		||||
            if (link == null)
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("`No results.`");
 | 
			
		||||
                await channel.SendMessageAsync("`No results.`");
 | 
			
		||||
            else
 | 
			
		||||
                await imsg.Channel.SendMessageAsync(link).ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync(link).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -396,9 +396,9 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
                var result = await http.GetStringAsync("https://en.wikipedia.org//w/api.php?action=query&format=json&prop=info&redirects=1&formatversion=2&inprop=url&titles=" + Uri.EscapeDataString(query));
 | 
			
		||||
                var data = JsonConvert.DeserializeObject<WikipediaApiModel>(result);
 | 
			
		||||
                if (data.Query.Pages[0].Missing)
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync("`That page could not be found.`");
 | 
			
		||||
                    await channel.SendMessageAsync("`That page could not be found.`");
 | 
			
		||||
                else
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync(data.Query.Pages[0].FullUrl);
 | 
			
		||||
                    await channel.SendMessageAsync(data.Query.Pages[0].FullUrl);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -425,7 +425,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
        //        g.Flush();
 | 
			
		||||
        //    }
 | 
			
		||||
 | 
			
		||||
        //    await imsg.Channel.SendFileAsync("arg1.png", img.ToStream());
 | 
			
		||||
        //    await channel.SendFileAsync("arg1.png", img.ToStream());
 | 
			
		||||
        //}
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -460,10 +460,10 @@ $@"🌍 **Weather for** 【{obj["target"]}】
 | 
			
		||||
            var usr = imsg.MentionedUsers.FirstOrDefault();
 | 
			
		||||
            if (usr == null)
 | 
			
		||||
            {
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Invalid user specified.").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Invalid user specified.").ConfigureAwait(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(await usr.AvatarUrl.ShortenUrl()).ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync(await usr.AvatarUrl.ShortenUrl()).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static async Task<string> GetSafebooruImageLink(string tag)
 | 
			
		||||
 
 | 
			
		||||
@@ -34,12 +34,12 @@ namespace NadekoBot.Modules.Translator
 | 
			
		||||
 | 
			
		||||
                await imsg.Channel.TriggerTypingAsync().ConfigureAwait(false);
 | 
			
		||||
                string translation = await GoogleTranslator.Instance.Translate(text, from, to).ConfigureAwait(false);
 | 
			
		||||
                await imsg.Channel.SendMessageAsync(translation).ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync(translation).ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
                Console.WriteLine(ex);
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("Bad input format, or something went wrong...").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("Bad input format, or something went wrong...").ConfigureAwait(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -49,7 +49,7 @@ namespace NadekoBot.Modules.Translator
 | 
			
		||||
        {
 | 
			
		||||
            var channel = imsg.Channel as ITextChannel;
 | 
			
		||||
 | 
			
		||||
            await imsg.Channel.SendTableAsync(GoogleTranslator.Instance.Languages, str => str, columns: 4);
 | 
			
		||||
            await channel.SendTableAsync(GoogleTranslator.Instance.Languages, str => str, columns: 4);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -82,7 +82,7 @@
 | 
			
		||||
//                            bound = e.Channel;
 | 
			
		||||
//                            board = new Board(e.GetArg("board_id").Trim());
 | 
			
		||||
//                            board.Refresh();
 | 
			
		||||
//                            await imsg.Channel.SendMessageAsync("Successfully bound to this channel and board " + board.Name);
 | 
			
		||||
//                            await channel.SendMessageAsync("Successfully bound to this channel and board " + board.Name);
 | 
			
		||||
//                            t.Start();
 | 
			
		||||
//                        }
 | 
			
		||||
//                        catch (Exception ex)
 | 
			
		||||
@@ -100,7 +100,7 @@
 | 
			
		||||
//                        t.Stop();
 | 
			
		||||
//                        bound = null;
 | 
			
		||||
//                        board = null;
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Successfully unbound trello from this channel.").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Successfully unbound trello from this channel.").ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
//                    });
 | 
			
		||||
 | 
			
		||||
@@ -111,7 +111,7 @@
 | 
			
		||||
//                    {
 | 
			
		||||
//                        if (!NadekoBot.IsOwner(e.User.Id)) return;
 | 
			
		||||
//                        if (bound == null || board == null || bound != e.Channel) return;
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Lists for a board '" + board.Name + "'\n" + string.Join("\n", board.Lists.Select(l => "**• " + l.ToString() + "**")))
 | 
			
		||||
//                        await channel.SendMessageAsync("Lists for a board '" + board.Name + "'\n" + string.Join("\n", board.Lists.Select(l => "**• " + l.ToString() + "**")))
 | 
			
		||||
//                                       .ConfigureAwait(false);
 | 
			
		||||
//                    });
 | 
			
		||||
 | 
			
		||||
@@ -133,10 +133,10 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//                        if (list != null)
 | 
			
		||||
//                            await imsg.Channel.SendMessageAsync("There are " + list.Cards.Count() + " cards in a **" + list.Name + "** list\n" + string.Join("\n", list.Cards.Select(c => "**• " + c.ToString() + "**")))
 | 
			
		||||
//                            await channel.SendMessageAsync("There are " + list.Cards.Count() + " cards in a **" + list.Name + "** list\n" + string.Join("\n", list.Cards.Select(c => "**• " + c.ToString() + "**")))
 | 
			
		||||
//                                           .ConfigureAwait(false);
 | 
			
		||||
//                        else
 | 
			
		||||
//                            await imsg.Channel.SendMessageAsync("No such list.")
 | 
			
		||||
//                            await channel.SendMessageAsync("No such list.")
 | 
			
		||||
//                                           .ConfigureAwait(false);
 | 
			
		||||
//                    });
 | 
			
		||||
//            });
 | 
			
		||||
 
 | 
			
		||||
@@ -113,7 +113,7 @@
 | 
			
		||||
 | 
			
		||||
//                    if (ch == null)
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync($"{e.User.Mention} Something went wrong (channel cannot be found) ;(").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync($"{e.User.Mention} Something went wrong (channel cannot be found) ;(").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
 | 
			
		||||
@@ -123,7 +123,7 @@
 | 
			
		||||
 | 
			
		||||
//                    if (m.Length == 0)
 | 
			
		||||
//                    {
 | 
			
		||||
//                        await imsg.Channel.SendMessageAsync("Not a valid time format blablabla").ConfigureAwait(false);
 | 
			
		||||
//                        await channel.SendMessageAsync("Not a valid time format blablabla").ConfigureAwait(false);
 | 
			
		||||
//                        return;
 | 
			
		||||
//                    }
 | 
			
		||||
 | 
			
		||||
@@ -148,7 +148,7 @@
 | 
			
		||||
//                            (groupName == "hours" && value > 23) ||
 | 
			
		||||
//                            (groupName == "minutes" && value > 59))
 | 
			
		||||
//                        {
 | 
			
		||||
//                            await imsg.Channel.SendMessageAsync($"Invalid {groupName} value.").ConfigureAwait(false);
 | 
			
		||||
//                            await channel.SendMessageAsync($"Invalid {groupName} value.").ConfigureAwait(false);
 | 
			
		||||
//                            return;
 | 
			
		||||
//                        }
 | 
			
		||||
//                        else
 | 
			
		||||
@@ -175,7 +175,7 @@
 | 
			
		||||
 | 
			
		||||
//                    reminders.Add(StartNewReminder(rem));
 | 
			
		||||
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync($"⏰ I will remind \"{ch.Name}\" to \"{e.GetArg("message").ToString()}\" in {output}. ({time:d.M.yyyy.} at {time:HH:mm})").ConfigureAwait(false);
 | 
			
		||||
//                    await channel.SendMessageAsync($"⏰ I will remind \"{ch.Name}\" to \"{e.GetArg("message").ToString()}\" in {output}. ({time:d.M.yyyy.} at {time:HH:mm})").ConfigureAwait(false);
 | 
			
		||||
//                });
 | 
			
		||||
//            cgb.CreateCommand(Module.Prefix + "remindmsg")
 | 
			
		||||
//                .Description("Sets message for when the remind is triggered. " +
 | 
			
		||||
@@ -190,7 +190,7 @@
 | 
			
		||||
//                        return;
 | 
			
		||||
 | 
			
		||||
//                    NadekoBot.Config.RemindMessageFormat = arg;
 | 
			
		||||
//                    await imsg.Channel.SendMessageAsync("`New remind message set.`");
 | 
			
		||||
//                    await channel.SendMessageAsync("`New remind message set.`");
 | 
			
		||||
//                });
 | 
			
		||||
//        }
 | 
			
		||||
//    }
 | 
			
		||||
 
 | 
			
		||||
@@ -37,9 +37,9 @@ namespace NadekoBot.Modules.Utility
 | 
			
		||||
 | 
			
		||||
            int i = 0;
 | 
			
		||||
            if (!arr.Any())
 | 
			
		||||
                await imsg.Channel.SendMessageAsync(_l["`Nobody is playing that game.`"]).ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync(_l["`Nobody is playing that game.`"]).ConfigureAwait(false);
 | 
			
		||||
            else
 | 
			
		||||
                await imsg.Channel.SendMessageAsync("```xl\n" + string.Join("\n", arr.GroupBy(item => (i++) / 3).Select(ig => string.Concat(ig.Select(el => $"• {el,-35}")))) + "\n```").ConfigureAwait(false);
 | 
			
		||||
                await channel.SendMessageAsync("```xl\n" + string.Join("\n", arr.GroupBy(item => (i++) / 3).Select(ig => string.Concat(ig.Select(el => $"• {el,-35}")))) + "\n```").ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
@@ -63,16 +63,16 @@ namespace NadekoBot.Modules.Utility
 | 
			
		||||
            {
 | 
			
		||||
                if (!usr.GetPermissions(channel).ManageMessages)
 | 
			
		||||
                {
 | 
			
		||||
                    await imsg.Channel.SendMessageAsync($"{usr.Mention} you are not allowed to use this command on roles with a lot of users in them to prevent abuse.");
 | 
			
		||||
                    await channel.SendMessageAsync($"{usr.Mention} you are not allowed to use this command on roles with a lot of users in them to prevent abuse.");
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                var curstr = send.Substring(0, 2000);
 | 
			
		||||
                await imsg.Channel.SendMessageAsync(curstr.Substring(0,
 | 
			
		||||
                await channel.SendMessageAsync(curstr.Substring(0,
 | 
			
		||||
                        curstr.LastIndexOf(", ", StringComparison.Ordinal) + 1)).ConfigureAwait(false);
 | 
			
		||||
                send = curstr.Substring(curstr.LastIndexOf(", ", StringComparison.Ordinal) + 1) +
 | 
			
		||||
                       send.Substring(2000);
 | 
			
		||||
            }
 | 
			
		||||
            await imsg.Channel.SendMessageAsync(send).ConfigureAwait(false);
 | 
			
		||||
            await channel.SendMessageAsync(send).ConfigureAwait(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [LocalizedCommand, LocalizedDescription, LocalizedSummary]
 | 
			
		||||
 
 | 
			
		||||
@@ -58,7 +58,7 @@ namespace NadekoBot.Modules.CustomReactions
 | 
			
		||||
                              commandFuncs.Keys.ForEach(key => str = key.Replace(str, m => commandFuncs[key](e, m)));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                              await imsg.Channel.SendMessageAsync(str).ConfigureAwait(false);
 | 
			
		||||
                              await channel.SendMessageAsync(str).ConfigureAwait(false);
 | 
			
		||||
                          });
 | 
			
		||||
                 }
 | 
			
		||||
             });
 | 
			
		||||
 
 | 
			
		||||
@@ -92,9 +92,9 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                            return;
 | 
			
		||||
                        musicPlayer.TogglePause();
 | 
			
		||||
                        if (musicPlayer.Paused)
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("🎵`Music Player paused.`").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("🎵`Music Player paused.`").ConfigureAwait(false);
 | 
			
		||||
                        else
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("🎵`Music Player unpaused.`").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("🎵`Music Player unpaused.`").ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "queue")
 | 
			
		||||
@@ -137,7 +137,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                        MusicPlayer musicPlayer;
 | 
			
		||||
                        if (!MusicPlayers.TryGetValue(e.Server, out musicPlayer))
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("🎵 No active music player.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("🎵 No active music player.").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
@@ -163,7 +163,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                        const int itemsPerPage = 15;
 | 
			
		||||
                        int startAt = itemsPerPage * (page - 1);
 | 
			
		||||
                        var number = 1 + startAt;
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync(toSend + string.Join("\n", musicPlayer.Playlist.Skip(startAt).Take(15).Select(v => $"`{number++}.` {v.PrettyName}"))).ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync(toSend + string.Join("\n", musicPlayer.Playlist.Skip(startAt).Take(15).Select(v => $"`{number++}.` {v.PrettyName}"))).ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "nowplaying")
 | 
			
		||||
@@ -177,7 +177,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                        var currentSong = musicPlayer.CurrentSong;
 | 
			
		||||
                        if (currentSong == null)
 | 
			
		||||
                            return;
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"🎵`Now Playing` {currentSong.PrettyName} " +
 | 
			
		||||
                        await channel.SendMessageAsync($"🎵`Now Playing` {currentSong.PrettyName} " +
 | 
			
		||||
                                                    $"{currentSong.PrettyCurrentTime()}").ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -196,11 +196,11 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                        int volume;
 | 
			
		||||
                        if (!int.TryParse(arg, out volume))
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Volume number invalid.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Volume number invalid.").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        volume = musicPlayer.SetVolume(volume);
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"🎵 `Volume set to {volume}%`").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync($"🎵 `Volume set to {volume}%`").ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "defvol")
 | 
			
		||||
@@ -214,12 +214,12 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                        float volume;
 | 
			
		||||
                        if (!float.TryParse(arg, out volume) || volume < 0 || volume > 100)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Volume number invalid.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Volume number invalid.").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        var conf = SpecificConfigurations.Default.Of(e.Server.Id);
 | 
			
		||||
                        conf.DefaultMusicVolume = volume / 100;
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"🎵 `Default volume set to {volume}%`").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync($"🎵 `Default volume set to {volume}%`").ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "mute")
 | 
			
		||||
@@ -271,12 +271,12 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                            return;
 | 
			
		||||
                        if (musicPlayer.Playlist.Count < 2)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("💢 Not enough songs in order to perform the shuffle.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("💢 Not enough songs in order to perform the shuffle.").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        musicPlayer.Shuffle();
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync("🎵 `Songs shuffled.`").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync("🎵 `Songs shuffled.`").ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "playlist")
 | 
			
		||||
@@ -290,25 +290,25 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                            return;
 | 
			
		||||
                        if (e.User.VoiceChannel?.Server != e.Server)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("💢 You need to be in a voice channel on this server.\n If you are already in a voice channel, try rejoining it.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("💢 You need to be in a voice channel on this server.\n If you are already in a voice channel, try rejoining it.").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        var plId = await SearchHelper.GetPlaylistIdByKeyword(arg).ConfigureAwait(false);
 | 
			
		||||
                        if (plId == null)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("No search results for that query.");
 | 
			
		||||
                            await channel.SendMessageAsync("No search results for that query.");
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        var ids = await SearchHelper.GetVideoIDs(plId, 500).ConfigureAwait(false);
 | 
			
		||||
                        if (ids == null || ids.Count == 0)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"🎵 `Failed to find any songs.`").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"🎵 `Failed to find any songs.`").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        var idArray = ids as string[] ?? ids.ToArray();
 | 
			
		||||
                        var count = idArray.Length;
 | 
			
		||||
                        var msg =
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"🎵 `Attempting to queue {count} songs".SnPl(count) + "...`").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"🎵 `Attempting to queue {count} songs".SnPl(count) + "...`").ConfigureAwait(false);
 | 
			
		||||
                        foreach (var id in idArray)
 | 
			
		||||
                        {
 | 
			
		||||
                            try
 | 
			
		||||
@@ -383,7 +383,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                                }
 | 
			
		||||
                                catch { }
 | 
			
		||||
                            }
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("🎵 `Directory queue complete.`").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("🎵 `Directory queue complete.`").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch { }
 | 
			
		||||
                    });
 | 
			
		||||
@@ -395,7 +395,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                    {
 | 
			
		||||
                        if (e.User.VoiceChannel?.Server != e.Server)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("💢 You need to be in a voice channel on this server.\n If you are already in a voice channel, try rejoining it.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("💢 You need to be in a voice channel on this server.\n If you are already in a voice channel, try rejoining it.").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        await QueueSong(e.User, e.Channel, e.User.VoiceChannel, e.GetArg("radio_link"), musicType: MusicType.Radio).ConfigureAwait(false);
 | 
			
		||||
@@ -448,7 +448,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                        if (arg?.ToLower() == "all")
 | 
			
		||||
                        {
 | 
			
		||||
                            musicPlayer.ClearQueue();
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"🎵`Queue cleared!`").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"🎵`Queue cleared!`").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        int num;
 | 
			
		||||
@@ -460,7 +460,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                            return;
 | 
			
		||||
                        var song = (musicPlayer.Playlist as List<Song>)?[num - 1];
 | 
			
		||||
                        musicPlayer.RemoveSongAt(num - 1);
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"🎵**Track {song.PrettyName} at position `#{num}` has been removed.**").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync($"🎵**Track {song.PrettyName} at position `#{num}` has been removed.**").ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                //var msRegex = new Regex(@"(?<n1>\d+)>(?<n2>\d+)", RegexOptions.Compiled);
 | 
			
		||||
@@ -487,7 +487,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                            !int.TryParse(fromtoArr[1], out n2) || n1 < 1 || n2 < 1 || n1 == n2 ||
 | 
			
		||||
                            n1 > playlist.Count || n2 > playlist.Count)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("`Invalid input.`").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("`Invalid input.`").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
@@ -496,7 +496,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                        var nn1 = n2 < n1 ? n1 : n1 - 1;
 | 
			
		||||
                        playlist.RemoveAt(nn1);
 | 
			
		||||
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"🎵`Moved` {s.PrettyName} `from #{n1} to #{n2}`").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync($"🎵`Moved` {s.PrettyName} `from #{n1} to #{n2}`").ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -520,7 +520,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        musicPlayer.MaxQueueSize = size;
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"🎵 `Max queue set to {(size == 0 ? ("unlimited") : size + " tracks")}`");
 | 
			
		||||
                        await channel.SendMessageAsync($"🎵 `Max queue set to {(size == 0 ? ("unlimited") : size + " tracks")}`");
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "cleanup")
 | 
			
		||||
@@ -553,7 +553,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                        if (currentSong == null)
 | 
			
		||||
                            return;
 | 
			
		||||
                        var currentValue = musicPlayer.ToggleRepeatSong();
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync(currentValue ?
 | 
			
		||||
                        await channel.SendMessageAsync(currentValue ?
 | 
			
		||||
                                                    $"🎵🔂`Repeating track:`{currentSong.PrettyName}" :
 | 
			
		||||
                                                    $"🎵🔂`Current track repeat stopped.`")
 | 
			
		||||
                                                        .ConfigureAwait(false);
 | 
			
		||||
@@ -568,7 +568,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                        if (!MusicPlayers.TryGetValue(e.Server, out musicPlayer))
 | 
			
		||||
                            return;
 | 
			
		||||
                        var currentValue = musicPlayer.ToggleRepeatPlaylist();
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"🎵🔁`Repeat playlist {(currentValue ? "enabled" : "disabled")}`").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync($"🎵🔁`Repeat playlist {(currentValue ? "enabled" : "disabled")}`").ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "save")
 | 
			
		||||
@@ -620,7 +620,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                            SongInfoId = s.Id.Value
 | 
			
		||||
                        }), typeof(PlaylistSongInfo));
 | 
			
		||||
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"🎵 `Saved playlist as {name}-{playlist.Id}`").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync($"🎵 `Saved playlist as {name}-{playlist.Id}`").ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -655,7 +655,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
 | 
			
		||||
                        if (playlist == null)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Can't find playlist under that name.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Can't find playlist under that name.").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
@@ -665,7 +665,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                        var songInfos = psis.Select(psi => DbHandler.Instance
 | 
			
		||||
                            .FindOne<DataModels.SongInfo>(si => si.Id == psi.SongInfoId));
 | 
			
		||||
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"`Attempting to load {songInfos.Count()} songs`").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync($"`Attempting to load {songInfos.Count()} songs`").ConfigureAwait(false);
 | 
			
		||||
                        foreach (var si in songInfos)
 | 
			
		||||
                        {
 | 
			
		||||
                            try
 | 
			
		||||
@@ -695,9 +695,9 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                            return;
 | 
			
		||||
                        var result = DbHandler.Instance.GetPlaylistData(num);
 | 
			
		||||
                        if (result.Count == 0)
 | 
			
		||||
                            imsg.Channel.SendMessageAsync($"`No saved playlists found on page {num}`").ConfigureAwait(false);
 | 
			
		||||
                            channel.SendMessageAsync($"`No saved playlists found on page {num}`").ConfigureAwait(false);
 | 
			
		||||
                        else
 | 
			
		||||
                            imsg.Channel.SendMessageAsync($"```js\n--- List of saved playlists ---\n\n" + string.Join("\n", result.Select(r => $"'{r.Name}-{r.Id}' by {r.Creator} ({r.SongCnt} songs)")) + $"\n\n        --- Page {num} ---```").ConfigureAwait(false);
 | 
			
		||||
                            channel.SendMessageAsync($"```js\n--- List of saved playlists ---\n\n" + string.Join("\n", result.Select(r => $"'{r.Name}-{r.Id}' by {r.Creator} ({r.SongCnt} songs)")) + $"\n\n        --- Page {num} ---```").ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "deleteplaylist")
 | 
			
		||||
@@ -714,7 +714,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                            DbHandler.Instance.Delete<MusicPlaylist>(plnum);
 | 
			
		||||
                        else
 | 
			
		||||
                            DbHandler.Instance.DeleteWhere<MusicPlaylist>(mp => mp.Id == plnum && (long)e.User.Id == mp.CreatorId);
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync("`Ok.` :ok:").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync("`Ok.` :ok:").ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "goto")
 | 
			
		||||
@@ -751,7 +751,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                        if (seconds.Length == 1)
 | 
			
		||||
                            seconds = "0" + seconds;
 | 
			
		||||
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"`Skipped to {minutes}:{seconds}`").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync($"`Skipped to {minutes}:{seconds}`").ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "getlink")
 | 
			
		||||
@@ -771,12 +771,12 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                            var selSong = musicPlayer.Playlist.DefaultIfEmpty(null).ElementAtOrDefault(index - 1);
 | 
			
		||||
                            if (selSong == null)
 | 
			
		||||
                            {
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync("Could not select song, likely wrong index");
 | 
			
		||||
                                await channel.SendMessageAsync("Could not select song, likely wrong index");
 | 
			
		||||
 | 
			
		||||
                            }
 | 
			
		||||
                            else
 | 
			
		||||
                            {
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync($"🎶`Selected song {selSong.SongInfo.Title}:` <{selSong.SongInfo.Query}>").ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync($"🎶`Selected song {selSong.SongInfo.Title}:` <{selSong.SongInfo.Query}>").ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        else
 | 
			
		||||
@@ -784,7 +784,7 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                            var curSong = musicPlayer.CurrentSong;
 | 
			
		||||
                            if (curSong == null)
 | 
			
		||||
                                return;
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"🎶`Current song:` <{curSong.SongInfo.Query}>").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"🎶`Current song:` <{curSong.SongInfo.Query}>").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                    });
 | 
			
		||||
@@ -800,9 +800,9 @@ namespace NadekoBot.Modules.Music
 | 
			
		||||
                            return;
 | 
			
		||||
 | 
			
		||||
                        if (!musicPlayer.ToggleAutoplay())
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("🎶`Autoplay disabled.`").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("🎶`Autoplay disabled.`").ConfigureAwait(false);
 | 
			
		||||
                        else
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("🎶`Autoplay enabled.`").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("🎶`Autoplay enabled.`").ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -72,7 +72,7 @@ namespace NadekoBot.Modules.Permissions.Commands
 | 
			
		||||
                                ? e.Channel
 | 
			
		||||
                                : PermissionHelper.ValidateChannel(e.Server, chanStr);
 | 
			
		||||
                            await PermissionsHandler.SetChannelFilterInvitesPermission(chan, state).ConfigureAwait(false);
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"Invite Filter has been **{(state ? "enabled" : "disabled")}** for **{chan.Name}** channel.")
 | 
			
		||||
                            await channel.SendMessageAsync($"Invite Filter has been **{(state ? "enabled" : "disabled")}** for **{chan.Name}** channel.")
 | 
			
		||||
                                            .ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
@@ -82,13 +82,13 @@ namespace NadekoBot.Modules.Permissions.Commands
 | 
			
		||||
                        {
 | 
			
		||||
                            await PermissionsHandler.SetChannelFilterInvitesPermission(curChannel, state).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"Invite Filter has been **{(state ? "enabled" : "disabled")}** for **ALL** channels.")
 | 
			
		||||
                        await channel.SendMessageAsync($"Invite Filter has been **{(state ? "enabled" : "disabled")}** for **ALL** channels.")
 | 
			
		||||
                                       .ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (Exception ex)
 | 
			
		||||
                    {
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"💢 Error: {ex.Message}")
 | 
			
		||||
                        await channel.SendMessageAsync($"💢 Error: {ex.Message}")
 | 
			
		||||
                                       .ConfigureAwait(false);
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
@@ -103,13 +103,13 @@ namespace NadekoBot.Modules.Permissions.Commands
 | 
			
		||||
                    {
 | 
			
		||||
                        var state = PermissionHelper.ValidateBool(e.GetArg("bool"));
 | 
			
		||||
                        await PermissionsHandler.SetServerFilterInvitesPermission(e.Server, state).ConfigureAwait(false);
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"Invite Filter has been **{(state ? "enabled" : "disabled")}** for this server.")
 | 
			
		||||
                        await channel.SendMessageAsync($"Invite Filter has been **{(state ? "enabled" : "disabled")}** for this server.")
 | 
			
		||||
                                       .ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (Exception ex)
 | 
			
		||||
                    {
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"💢 Error: {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync($"💢 Error: {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -69,7 +69,7 @@ namespace NadekoBot.Modules.Permissions.Commands
 | 
			
		||||
                                ? e.Channel
 | 
			
		||||
                                : PermissionHelper.ValidateChannel(e.Server, chanStr);
 | 
			
		||||
                            await PermissionsHandler.SetChannelWordPermission(chan, state).ConfigureAwait(false);
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"Word filtering has been **{(state ? "enabled" : "disabled")}** for **{chan.Name}** channel.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"Word filtering has been **{(state ? "enabled" : "disabled")}** for **{chan.Name}** channel.").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        //all channels
 | 
			
		||||
@@ -78,11 +78,11 @@ namespace NadekoBot.Modules.Permissions.Commands
 | 
			
		||||
                        {
 | 
			
		||||
                            await PermissionsHandler.SetChannelWordPermission(curChannel, state).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"Word filtering has been **{(state ? "enabled" : "disabled")}** for **ALL** channels.").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync($"Word filtering has been **{(state ? "enabled" : "disabled")}** for **ALL** channels.").ConfigureAwait(false);
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (Exception ex)
 | 
			
		||||
                    {
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"💢 Error: {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync($"💢 Error: {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
@@ -99,12 +99,12 @@ namespace NadekoBot.Modules.Permissions.Commands
 | 
			
		||||
                       if (string.IsNullOrWhiteSpace(word))
 | 
			
		||||
                           return;
 | 
			
		||||
                       await PermissionsHandler.AddFilteredWord(e.Server, word.ToLowerInvariant().Trim()).ConfigureAwait(false);
 | 
			
		||||
                       await imsg.Channel.SendMessageAsync($"Successfully added new filtered word.").ConfigureAwait(false);
 | 
			
		||||
                       await channel.SendMessageAsync($"Successfully added new filtered word.").ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                   }
 | 
			
		||||
                   catch (Exception ex)
 | 
			
		||||
                   {
 | 
			
		||||
                       await imsg.Channel.SendMessageAsync($"💢 Error: {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                       await channel.SendMessageAsync($"💢 Error: {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                   }
 | 
			
		||||
               });
 | 
			
		||||
 | 
			
		||||
@@ -121,12 +121,12 @@ namespace NadekoBot.Modules.Permissions.Commands
 | 
			
		||||
                       if (string.IsNullOrWhiteSpace(word))
 | 
			
		||||
                           return;
 | 
			
		||||
                       await PermissionsHandler.RemoveFilteredWord(e.Server, word.ToLowerInvariant().Trim()).ConfigureAwait(false);
 | 
			
		||||
                       await imsg.Channel.SendMessageAsync($"Successfully removed filtered word.").ConfigureAwait(false);
 | 
			
		||||
                       await channel.SendMessageAsync($"Successfully removed filtered word.").ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                   }
 | 
			
		||||
                   catch (Exception ex)
 | 
			
		||||
                   {
 | 
			
		||||
                       await imsg.Channel.SendMessageAsync($"💢 Error: {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                       await channel.SendMessageAsync($"💢 Error: {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                   }
 | 
			
		||||
               });
 | 
			
		||||
 | 
			
		||||
@@ -141,12 +141,12 @@ namespace NadekoBot.Modules.Permissions.Commands
 | 
			
		||||
                       Classes.ServerPermissions serverPerms;
 | 
			
		||||
                       if (!PermissionsHandler.PermissionsDict.TryGetValue(e.Server.Id, out serverPerms))
 | 
			
		||||
                           return;
 | 
			
		||||
                       await imsg.Channel.SendMessageAsync($"There are `{serverPerms.Words.Count}` filtered words.\n" +
 | 
			
		||||
                       await channel.SendMessageAsync($"There are `{serverPerms.Words.Count}` filtered words.\n" +
 | 
			
		||||
                           string.Join("\n", serverPerms.Words)).ConfigureAwait(false);
 | 
			
		||||
                   }
 | 
			
		||||
                   catch (Exception ex)
 | 
			
		||||
                   {
 | 
			
		||||
                       await imsg.Channel.SendMessageAsync($"💢 Error: {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                       await channel.SendMessageAsync($"💢 Error: {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                   }
 | 
			
		||||
               });
 | 
			
		||||
 | 
			
		||||
@@ -160,13 +160,13 @@ namespace NadekoBot.Modules.Permissions.Commands
 | 
			
		||||
                    {
 | 
			
		||||
                        var state = PermissionHelper.ValidateBool(e.GetArg("bool"));
 | 
			
		||||
                        await PermissionsHandler.SetServerWordPermission(e.Server, state).ConfigureAwait(false);
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"Word filtering has been **{(state ? "enabled" : "disabled")}** on this server.")
 | 
			
		||||
                        await channel.SendMessageAsync($"Word filtering has been **{(state ? "enabled" : "disabled")}** on this server.")
 | 
			
		||||
                                       .ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (Exception ex)
 | 
			
		||||
                    {
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"💢 Error: {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync($"💢 Error: {ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                     {
 | 
			
		||||
                         if (string.IsNullOrWhiteSpace(e.GetArg("role")))
 | 
			
		||||
                         {
 | 
			
		||||
                             await imsg.Channel.SendMessageAsync($"Current permissions role is `{PermissionsHandler.GetServerPermissionsRoleName(e.Server)}`").ConfigureAwait(false);
 | 
			
		||||
                             await channel.SendMessageAsync($"Current permissions role is `{PermissionsHandler.GetServerPermissionsRoleName(e.Server)}`").ConfigureAwait(false);
 | 
			
		||||
                             return;
 | 
			
		||||
                         }
 | 
			
		||||
 | 
			
		||||
@@ -52,11 +52,11 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                         catch (Exception ex)
 | 
			
		||||
                         {
 | 
			
		||||
                             Console.WriteLine(ex.Message);
 | 
			
		||||
                             await imsg.Channel.SendMessageAsync($"Role `{arg}` probably doesn't exist. Create the role with that name first.").ConfigureAwait(false);
 | 
			
		||||
                             await channel.SendMessageAsync($"Role `{arg}` probably doesn't exist. Create the role with that name first.").ConfigureAwait(false);
 | 
			
		||||
                             return;
 | 
			
		||||
                         }
 | 
			
		||||
                         await PermissionsHandler.SetPermissionsRole(e.Server, role.Name).ConfigureAwait(false);
 | 
			
		||||
                         await imsg.Channel.SendMessageAsync($"Role `{role.Name}` is now required in order to change permissions.").ConfigureAwait(false);
 | 
			
		||||
                         await channel.SendMessageAsync($"Role `{role.Name}` is now required in order to change permissions.").ConfigureAwait(false);
 | 
			
		||||
                     });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "rolepermscopy")
 | 
			
		||||
@@ -71,7 +71,7 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                        var args = arg.Split('~').Select(a => a.Trim()).ToArray();
 | 
			
		||||
                        if (args.Length > 2)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("💢Invalid number of '~'s in the argument.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("💢Invalid number of '~'s in the argument.").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        try
 | 
			
		||||
@@ -80,11 +80,11 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            var toRole = PermissionHelper.ValidateRole(e.Server, args[1]);
 | 
			
		||||
 | 
			
		||||
                            await PermissionsHandler.CopyRolePermissions(fromRole, toRole).ConfigureAwait(false);
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"Copied permission settings from **{fromRole.Name}** to **{toRole.Name}**.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"Copied permission settings from **{fromRole.Name}** to **{toRole.Name}**.").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"💢{ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"💢{ex.Message}").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
                cgb.CreateCommand(Prefix + "chnlpermscopy")
 | 
			
		||||
@@ -99,7 +99,7 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                        var args = arg.Split('~').Select(a => a.Trim()).ToArray();
 | 
			
		||||
                        if (args.Length > 2)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("💢Invalid number of '~'s in the argument.");
 | 
			
		||||
                            await channel.SendMessageAsync("💢Invalid number of '~'s in the argument.");
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        try
 | 
			
		||||
@@ -108,11 +108,11 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            var toChannel = PermissionHelper.ValidateChannel(e.Server, args[1]);
 | 
			
		||||
 | 
			
		||||
                            await PermissionsHandler.CopyChannelPermissions(fromChannel, toChannel).ConfigureAwait(false);
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"Copied permission settings from **{fromChannel.Name}** to **{toChannel.Name}**.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"Copied permission settings from **{fromChannel.Name}** to **{toChannel.Name}**.").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"💢{ex.Message}");
 | 
			
		||||
                            await channel.SendMessageAsync($"💢{ex.Message}");
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
                cgb.CreateCommand(Prefix + "usrpermscopy")
 | 
			
		||||
@@ -127,7 +127,7 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                        var args = arg.Split('~').Select(a => a.Trim()).ToArray();
 | 
			
		||||
                        if (args.Length > 2)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("💢Invalid number of '~'s in the argument.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("💢Invalid number of '~'s in the argument.").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        try
 | 
			
		||||
@@ -136,11 +136,11 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            var toUser = PermissionHelper.ValidateUser(e.Server, args[1]);
 | 
			
		||||
 | 
			
		||||
                            await PermissionsHandler.CopyUserPermissions(fromUser, toUser).ConfigureAwait(false);
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"Copied permission settings from **{fromUser.ToString()}**to * *{toUser.ToString()}**.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"Copied permission settings from **{fromUser.ToString()}**to * *{toUser.ToString()}**.").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"💢{ex.Message}");
 | 
			
		||||
                            await channel.SendMessageAsync($"💢{ex.Message}");
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -153,7 +153,7 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                        var arg = e.GetArg("arg");
 | 
			
		||||
                        var val = PermissionHelper.ValidateBool(arg);
 | 
			
		||||
                        await PermissionsHandler.SetVerbosity(e.Server, val).ConfigureAwait(false);
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync($"Verbosity set to {val}.").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync($"Verbosity set to {val}.").ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "srvrperms")
 | 
			
		||||
@@ -163,8 +163,8 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                    {
 | 
			
		||||
                        var perms = PermissionsHandler.GetServerPermissions(e.Server);
 | 
			
		||||
                        if (string.IsNullOrWhiteSpace(perms?.ToString()))
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("No permissions set for this server.").ConfigureAwait(false);
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync(perms.ToString()).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("No permissions set for this server.").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync(perms.ToString()).ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "roleperms")
 | 
			
		||||
@@ -182,15 +182,15 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            }
 | 
			
		||||
                            catch (Exception ex)
 | 
			
		||||
                            {
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync("💢 Error: " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync("💢 Error: " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                                return;
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                        var perms = PermissionsHandler.GetRolePermissionsById(e.Server, role.Id);
 | 
			
		||||
 | 
			
		||||
                        if (string.IsNullOrWhiteSpace(perms?.ToString()))
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"No permissions set for **{role.Name}** role.").ConfigureAwait(false);
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync(perms.ToString()).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"No permissions set for **{role.Name}** role.").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync(perms.ToString()).ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "chnlperms")
 | 
			
		||||
@@ -208,14 +208,14 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            }
 | 
			
		||||
                            catch (Exception ex)
 | 
			
		||||
                            {
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync("💢 Error: " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync("💢 Error: " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                                return;
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                        var perms = PermissionsHandler.GetChannelPermissionsById(e.Server, channel.Id);
 | 
			
		||||
                        if (string.IsNullOrWhiteSpace(perms?.ToString()))
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"No permissions set for **{channel.Name}** channel.").ConfigureAwait(false);
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync(perms.ToString()).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"No permissions set for **{channel.Name}** channel.").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync(perms.ToString()).ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "userperms")
 | 
			
		||||
@@ -232,14 +232,14 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            }
 | 
			
		||||
                            catch (Exception ex)
 | 
			
		||||
                            {
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync("💢 Error: " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync("💢 Error: " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                                return;
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                        var perms = PermissionsHandler.GetUserPermissionsById(e.Server, user.Id);
 | 
			
		||||
                        if (string.IsNullOrWhiteSpace(perms?.ToString()))
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"No permissions set for user **{user.Name}**.").ConfigureAwait(false);
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync(perms.ToString()).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"No permissions set for user **{user.Name}**.").ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync(perms.ToString()).ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                cgb.CreateCommand(Prefix + "srvrmdl")
 | 
			
		||||
@@ -255,15 +255,15 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            var state = PermissionHelper.ValidateBool(e.GetArg("bool"));
 | 
			
		||||
 | 
			
		||||
                            await PermissionsHandler.SetServerModulePermission(e.Server, module, state).ConfigureAwait(false);
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"Module **{module}** has been **{(state ? "enabled" : "disabled")}** on this server.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"Module **{module}** has been **{(state ? "enabled" : "disabled")}** on this server.").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (ArgumentException exArg)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -279,15 +279,15 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            var state = PermissionHelper.ValidateBool(e.GetArg("bool"));
 | 
			
		||||
 | 
			
		||||
                            await PermissionsHandler.SetServerCommandPermission(e.Server, command, state).ConfigureAwait(false);
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"Command **{command}** has been **{(state ? "enabled" : "disabled")}** on this server.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"Command **{command}** has been **{(state ? "enabled" : "disabled")}** on this server.").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (ArgumentException exArg)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -309,23 +309,23 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                                {
 | 
			
		||||
                                    await PermissionsHandler.SetRoleModulePermission(role, module, state).ConfigureAwait(false);
 | 
			
		||||
                                }
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync($"Module **{module}** has been **{(state ? "enabled" : "disabled")}** for **ALL** roles.").ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync($"Module **{module}** has been **{(state ? "enabled" : "disabled")}** for **ALL** roles.").ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
                            else
 | 
			
		||||
                            {
 | 
			
		||||
                                var role = PermissionHelper.ValidateRole(e.Server, e.GetArg("role"));
 | 
			
		||||
 | 
			
		||||
                                await PermissionsHandler.SetRoleModulePermission(role, module, state).ConfigureAwait(false);
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync($"Module **{module}** has been **{(state ? "enabled" : "disabled")}** for **{role.Name}** role.").ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync($"Module **{module}** has been **{(state ? "enabled" : "disabled")}** for **{role.Name}** role.").ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (ArgumentException exArg)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -347,23 +347,23 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                                {
 | 
			
		||||
                                    await PermissionsHandler.SetRoleCommandPermission(role, command, state).ConfigureAwait(false);
 | 
			
		||||
                                }
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync($"Command **{command}** has been **{(state ? "enabled" : "disabled")}** for **ALL** roles.").ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync($"Command **{command}** has been **{(state ? "enabled" : "disabled")}** for **ALL** roles.").ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
                            else
 | 
			
		||||
                            {
 | 
			
		||||
                                var role = PermissionHelper.ValidateRole(e.Server, e.GetArg("role"));
 | 
			
		||||
 | 
			
		||||
                                await PermissionsHandler.SetRoleCommandPermission(role, command, state).ConfigureAwait(false);
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync($"Command **{command}** has been **{(state ? "enabled" : "disabled")}** for **{role.Name}** role.").ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync($"Command **{command}** has been **{(state ? "enabled" : "disabled")}** for **{role.Name}** role.").ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (ArgumentException exArg)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -385,28 +385,28 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                                {
 | 
			
		||||
                                    await PermissionsHandler.SetChannelModulePermission(channel, module, state).ConfigureAwait(false);
 | 
			
		||||
                                }
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync($"Module **{module}** has been **{(state ? "enabled" : "disabled")}** on **ALL** channels.").ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync($"Module **{module}** has been **{(state ? "enabled" : "disabled")}** on **ALL** channels.").ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
                            else if (string.IsNullOrWhiteSpace(channelArg))
 | 
			
		||||
                            {
 | 
			
		||||
                                await PermissionsHandler.SetChannelModulePermission(e.Channel, module, state).ConfigureAwait(false);
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync($"Module **{module}** has been **{(state ? "enabled" : "disabled")}** for **{e.Channel.Name}** channel.").ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync($"Module **{module}** has been **{(state ? "enabled" : "disabled")}** for **{e.Channel.Name}** channel.").ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
                            else
 | 
			
		||||
                            {
 | 
			
		||||
                                var channel = PermissionHelper.ValidateChannel(e.Server, channelArg);
 | 
			
		||||
 | 
			
		||||
                                await PermissionsHandler.SetChannelModulePermission(channel, module, state).ConfigureAwait(false);
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync($"Module **{module}** has been **{(state ? "enabled" : "disabled")}** for **{channel.Name}** channel.").ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync($"Module **{module}** has been **{(state ? "enabled" : "disabled")}** for **{channel.Name}** channel.").ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (ArgumentException exArg)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -428,23 +428,23 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                                {
 | 
			
		||||
                                    await PermissionsHandler.SetChannelCommandPermission(channel, command, state).ConfigureAwait(false);
 | 
			
		||||
                                }
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync($"Command **{command}** has been **{(state ? "enabled" : "disabled")}** on **ALL** channels.").ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync($"Command **{command}** has been **{(state ? "enabled" : "disabled")}** on **ALL** channels.").ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
                            else
 | 
			
		||||
                            {
 | 
			
		||||
                                var channel = PermissionHelper.ValidateChannel(e.Server, e.GetArg("channel"));
 | 
			
		||||
 | 
			
		||||
                                await PermissionsHandler.SetChannelCommandPermission(channel, command, state).ConfigureAwait(false);
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync($"Command **{command}** has been **{(state ? "enabled" : "disabled")}** for **{channel.Name}** channel.").ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync($"Command **{command}** has been **{(state ? "enabled" : "disabled")}** for **{channel.Name}** channel.").ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (ArgumentException exArg)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -462,15 +462,15 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            var user = PermissionHelper.ValidateUser(e.Server, e.GetArg("user"));
 | 
			
		||||
 | 
			
		||||
                            await PermissionsHandler.SetUserModulePermission(user, module, state).ConfigureAwait(false);
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"Module **{module}** has been **{(state ? "enabled" : "disabled")}** for user **{user.Name}**.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"Module **{module}** has been **{(state ? "enabled" : "disabled")}** for user **{user.Name}**.").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (ArgumentException exArg)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -488,15 +488,15 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            var user = PermissionHelper.ValidateUser(e.Server, e.GetArg("user"));
 | 
			
		||||
 | 
			
		||||
                            await PermissionsHandler.SetUserCommandPermission(user, command, state).ConfigureAwait(false);
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"Command **{command}** has been **{(state ? "enabled" : "disabled")}** for user **{user.Name}**.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"Command **{command}** has been **{(state ? "enabled" : "disabled")}** for user **{user.Name}**.").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (ArgumentException exArg)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -513,15 +513,15 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            {
 | 
			
		||||
                                await PermissionsHandler.SetServerModulePermission(e.Server, module.Name, state).ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"All modules have been **{(state ? "enabled" : "disabled")}** on this server.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"All modules have been **{(state ? "enabled" : "disabled")}** on this server.").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (ArgumentException exArg)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -540,15 +540,15 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            {
 | 
			
		||||
                                await PermissionsHandler.SetServerCommandPermission(e.Server, command.Text, state).ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"All commands from the **{module}** module have been **{(state ? "enabled" : "disabled")}** on this server.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"All commands from the **{module}** module have been **{(state ? "enabled" : "disabled")}** on this server.").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (ArgumentException exArg)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -568,15 +568,15 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                                await PermissionsHandler.SetChannelModulePermission(channel, module.Name, state).ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"All modules have been **{(state ? "enabled" : "disabled")}** for **{channel.Name}** channel.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"All modules have been **{(state ? "enabled" : "disabled")}** for **{channel.Name}** channel.").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (ArgumentException exArg)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -596,15 +596,15 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            {
 | 
			
		||||
                                await PermissionsHandler.SetChannelCommandPermission(channel, command.Text, state).ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"All commands from the **{module}** module have been **{(state ? "enabled" : "disabled")}** for **{channel.Name}** channel.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"All commands from the **{module}** module have been **{(state ? "enabled" : "disabled")}** for **{channel.Name}** channel.").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (ArgumentException exArg)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -623,15 +623,15 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                                await PermissionsHandler.SetRoleModulePermission(role, module.Name, state).ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"All modules have been **{(state ? "enabled" : "disabled")}** for **{role.Name}** role.").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"All modules have been **{(state ? "enabled" : "disabled")}** for **{role.Name}** role.").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (ArgumentException exArg)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -655,7 +655,7 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                                        await PermissionsHandler.SetRoleCommandPermission(role, command.Text, state).ConfigureAwait(false);
 | 
			
		||||
                                    }
 | 
			
		||||
                                }
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync($"All commands from the **{module}** module have been **{(state ? "enabled" : "disabled")}** for **all roles** role.").ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync($"All commands from the **{module}** module have been **{(state ? "enabled" : "disabled")}** for **all roles** role.").ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
                            else
 | 
			
		||||
                            {
 | 
			
		||||
@@ -665,16 +665,16 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                                {
 | 
			
		||||
                                    await PermissionsHandler.SetRoleCommandPermission(role, command.Text, state).ConfigureAwait(false);
 | 
			
		||||
                                }
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync($"All commands from the **{module}** module have been **{(state ? "enabled" : "disabled")}** for **{role.Name}** role.").ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync($"All commands from the **{module}** module have been **{(state ? "enabled" : "disabled")}** for **{role.Name}** role.").ConfigureAwait(false);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (ArgumentException exArg)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -690,7 +690,7 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            var usr = e.Message.MentionedUsers.First();
 | 
			
		||||
                            NadekoBot.Config.UserBlacklist.Add(usr.Id);
 | 
			
		||||
                            await ConfigHandler.SaveConfig().ConfigureAwait(false);
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"`Sucessfully blacklisted user {usr.Name}`").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"`Sucessfully blacklisted user {usr.Name}`").ConfigureAwait(false);
 | 
			
		||||
                        }).ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -708,11 +708,11 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                           {
 | 
			
		||||
                               NadekoBot.Config.UserBlacklist.Remove(usr.Id);
 | 
			
		||||
                               await ConfigHandler.SaveConfig().ConfigureAwait(false);
 | 
			
		||||
                               await imsg.Channel.SendMessageAsync($"`Sucessfully unblacklisted user {usr.Name}`").ConfigureAwait(false);
 | 
			
		||||
                               await channel.SendMessageAsync($"`Sucessfully unblacklisted user {usr.Name}`").ConfigureAwait(false);
 | 
			
		||||
                           }
 | 
			
		||||
                           else
 | 
			
		||||
                           {
 | 
			
		||||
                               await imsg.Channel.SendMessageAsync($"`{usr.Name} was not in blacklist`").ConfigureAwait(false);
 | 
			
		||||
                               await channel.SendMessageAsync($"`{usr.Name} was not in blacklist`").ConfigureAwait(false);
 | 
			
		||||
                           }
 | 
			
		||||
                       }).ConfigureAwait(false);
 | 
			
		||||
                   });
 | 
			
		||||
@@ -728,7 +728,7 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            var ch = e.Message.MentionedChannels.First();
 | 
			
		||||
                            NadekoBot.Config.UserBlacklist.Add(ch.Id);
 | 
			
		||||
                            await ConfigHandler.SaveConfig().ConfigureAwait(false);
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"`Sucessfully blacklisted channel {ch.Name}`").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"`Sucessfully blacklisted channel {ch.Name}`").ConfigureAwait(false);
 | 
			
		||||
                        }).ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -743,7 +743,7 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            var ch = e.Message.MentionedChannels.First();
 | 
			
		||||
                            NadekoBot.Config.UserBlacklist.Remove(ch.Id);
 | 
			
		||||
                            await ConfigHandler.SaveConfig().ConfigureAwait(false);
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"`Sucessfully blacklisted channel {ch.Name}`").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"`Sucessfully blacklisted channel {ch.Name}`").ConfigureAwait(false);
 | 
			
		||||
                        }).ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -762,7 +762,7 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                                         NadekoBot.Client.FindServers(arg.Trim()).FirstOrDefault();
 | 
			
		||||
                            if (server == null)
 | 
			
		||||
                            {
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync("Cannot find that server").ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync("Cannot find that server").ConfigureAwait(false);
 | 
			
		||||
                                return;
 | 
			
		||||
                            }
 | 
			
		||||
                            var serverId = server.Id;
 | 
			
		||||
@@ -774,7 +774,7 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
                            TypingGame typeracer;
 | 
			
		||||
                            SpeedTyping.RunningContests.TryRemove(serverId, out typeracer);
 | 
			
		||||
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync($"`Sucessfully blacklisted server {server.Name}`").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync($"`Sucessfully blacklisted server {server.Name}`").ConfigureAwait(false);
 | 
			
		||||
                        }).ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -797,17 +797,17 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
 | 
			
		||||
                            await PermissionsHandler.SetCommandCooldown(e.Server, command, secs).ConfigureAwait(false);
 | 
			
		||||
                            if(secs == 0)
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync($"Command **{command}** has no coooldown now.").ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync($"Command **{command}** has no coooldown now.").ConfigureAwait(false);
 | 
			
		||||
                            else
 | 
			
		||||
                                await imsg.Channel.SendMessageAsync($"Command **{command}** now has a **{secs} {(secs==1 ? "second" : "seconds")}** cooldown.").ConfigureAwait(false);
 | 
			
		||||
                                await channel.SendMessageAsync($"Command **{command}** now has a **{secs} {(secs==1 ? "second" : "seconds")}** cooldown.").ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (ArgumentException exArg)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync(exArg.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception ex)
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("Something went terribly wrong - " + ex.Message).ConfigureAwait(false);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
@@ -823,10 +823,10 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
 | 
			
		||||
                        if (!perms.CommandCooldowns.Any())
 | 
			
		||||
                        {
 | 
			
		||||
                            await imsg.Channel.SendMessageAsync("`No command cooldowns set.`").ConfigureAwait(false);
 | 
			
		||||
                            await channel.SendMessageAsync("`No command cooldowns set.`").ConfigureAwait(false);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        await imsg.Channel.SendMessageAsync(SearchHelper.ShowInPrettyCode(perms.CommandCooldowns.Select(c=>c.Key+ ": "+c.Value+" secs"),s=>$"{s,-30}",2)).ConfigureAwait(false);
 | 
			
		||||
                        await channel.SendMessageAsync(SearchHelper.ShowInPrettyCode(perms.CommandCooldowns.Select(c=>c.Key+ ": "+c.Value+" secs"),s=>$"{s,-30}",2)).ConfigureAwait(false);
 | 
			
		||||
                    });
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user