From 1493480a6635e4295729d03cfb4a1799ecd506d8 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Mon, 22 Oct 2018 10:49:07 +0200 Subject: [PATCH] Adds bedtime command --- .../Commands/ModeratorCommands.cs | 54 ++++++++++++------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/DeukBot4/MessageHandlers/CommandHandler/Commands/ModeratorCommands.cs b/DeukBot4/MessageHandlers/CommandHandler/Commands/ModeratorCommands.cs index 772e64d..29d8288 100644 --- a/DeukBot4/MessageHandlers/CommandHandler/Commands/ModeratorCommands.cs +++ b/DeukBot4/MessageHandlers/CommandHandler/Commands/ModeratorCommands.cs @@ -141,24 +141,6 @@ namespace DeukBot4.MessageHandlers.CommandHandler return; } - var silencedRoleId = ServerSettingHandler.GetSettings(channel.GuildId).MutedRoleId; - if (silencedRoleId == 0) - { - await request.SendMessageAsync( - "No silenced role has been set. The server owner should do ``!silencedrole {role id}`` to set one first."); - return; - } - - var silencedRole = channel.Guild.GetRole(silencedRoleId); - if (silencedRole == null) - { - await request.SendSimpleEmbed( "Silence", - "Can't find the silenced role. Has it been deleted?"); - return; - } - - await user.AddRoleAsync(silencedRole); - TimeSpan span; if (request.Parameters.Length == 1) { @@ -191,11 +173,47 @@ namespace DeukBot4.MessageHandlers.CommandHandler return; } } + var msg = await SilenceUser(user, span); + if (msg != null) + { + request.SendSimpleEmbed("Silence", msg); + } + } + [Command("bedtime", PermissionLevel.Helper)] + [CommandParameters(ParameterMatcher.ParameterType.User)] + [BlockUsageInPm, RequireParameterMatch] + public async Task Bedtime(CommandRequest request) + { + var guildChannel = (IGuildChannel)request.OriginalMessage.Channel; + var user = await request.Parameters[0].AsDiscordGuildUser(guildChannel.Guild); + var msg = await SilenceUser(user, TimeSpan.FromHours(6)); + if (msg != null) + { + request.SendSimpleEmbed("Silence", msg); + } + } + + private async Task SilenceUser(IGuildUser user, TimeSpan span) + { + var silencedRoleId = ServerSettingHandler.GetSettings(user.GuildId).MutedRoleId; + if (silencedRoleId == 0) + { + return + "No silenced role has been set. The server owner should do ``!silencedrole {role id}`` to set one first."; + } + var silencedRole = user.Guild.GetRole(silencedRoleId); + if (silencedRole == null) + { + return "Can't find the silenced role. Has it been deleted?"; + } + + await user.AddRoleAsync(silencedRole); if (span.Seconds <= 0) span = TimeSpan.FromMinutes(5); await Task.Delay(span); await user.RemoveRoleAsync(silencedRole); + return null; } } } \ No newline at end of file