From 349382301eaf29ff4f7bb8a8bb3e466de1753d52 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Fri, 30 Mar 2018 19:03:25 +0200 Subject: [PATCH] Better handling of parameter casting --- .../CommandHandler/Commands/ModeratorCommands.cs | 10 ++++++++++ .../CommandHandler/Commands/RolePermissionCommands.cs | 9 +++++---- .../RequestStructure/RequestParameter.cs | 8 ++++---- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/DeukBot4/MessageHandlers/CommandHandler/Commands/ModeratorCommands.cs b/DeukBot4/MessageHandlers/CommandHandler/Commands/ModeratorCommands.cs index a02bc12..a68c460 100644 --- a/DeukBot4/MessageHandlers/CommandHandler/Commands/ModeratorCommands.cs +++ b/DeukBot4/MessageHandlers/CommandHandler/Commands/ModeratorCommands.cs @@ -26,6 +26,11 @@ namespace DeukBot4.MessageHandlers.CommandHandler // get the id of the user, this parses the string to an id var user = await request.Parameters[0].AsDiscordUser(channel.Guild); + if (user == null) + { + await request.SendMessageAsync("I can't find that user on the server"); + return; + } // get the permissions of the user we want to kick var userPermissions = @@ -58,6 +63,11 @@ namespace DeukBot4.MessageHandlers.CommandHandler // get the id of the user, this parses the string to an id var user = await request.Parameters[0].AsDiscordUser(channel.Guild); + if (user == null) + { + await request.SendMessageAsync("I can't find that user on the server"); + return; + } // get the permissions of the user we want to kick var userPermissions = diff --git a/DeukBot4/MessageHandlers/CommandHandler/Commands/RolePermissionCommands.cs b/DeukBot4/MessageHandlers/CommandHandler/Commands/RolePermissionCommands.cs index 8d4043f..63abd0c 100644 --- a/DeukBot4/MessageHandlers/CommandHandler/Commands/RolePermissionCommands.cs +++ b/DeukBot4/MessageHandlers/CommandHandler/Commands/RolePermissionCommands.cs @@ -72,14 +72,15 @@ namespace DeukBot4.MessageHandlers.CommandHandler return; } - if (!ulong.TryParse(request.Parameters[0].AsString(), out var roleId)) + var roleId = request.Parameters[0].AsUlong(); + if (!roleId.HasValue) { await request.SendMessageAsync( $"You did not give a valid role ID. Use ``!roles`` to list all current server roles, along with their ids"); return; } - var role = serverChannel.Guild.GetRole(roleId); + var role = serverChannel.Guild.GetRole(roleId.Value); if (role == null) { await request.SendMessageAsync("No role with that id exists on this server"); @@ -88,8 +89,8 @@ namespace DeukBot4.MessageHandlers.CommandHandler try { - await DatabaseRolePermissions.SetRolePermission(serverChannel.GuildId, roleId, permissionLevel); - PermissionValidator.UpdateCache(serverChannel.GuildId, roleId, permissionLevel); + await DatabaseRolePermissions.SetRolePermission(serverChannel.GuildId, roleId.Value, permissionLevel); + PermissionValidator.UpdateCache(serverChannel.GuildId, roleId.Value, permissionLevel); } catch(Exception e) { diff --git a/DeukBot4/MessageHandlers/CommandHandler/RequestStructure/RequestParameter.cs b/DeukBot4/MessageHandlers/CommandHandler/RequestStructure/RequestParameter.cs index 7dea536..761d6c3 100644 --- a/DeukBot4/MessageHandlers/CommandHandler/RequestStructure/RequestParameter.cs +++ b/DeukBot4/MessageHandlers/CommandHandler/RequestStructure/RequestParameter.cs @@ -14,13 +14,13 @@ namespace DeukBot4.MessageHandlers.CommandHandler.RequestStructure _value = value; } - public int AsInt() + public int? AsInt() { if (int.TryParse(_value, out var i)) { return i; } - throw new ArgumentException(); + return null; } public string AsString() @@ -28,13 +28,13 @@ namespace DeukBot4.MessageHandlers.CommandHandler.RequestStructure return _value; } - public ulong AsUlong() + public ulong? AsUlong() { if (ulong.TryParse(_value, out var i)) { return i; } - throw new ArgumentException(); + return null; } public async Task AsDiscordUser(IGuild guild)