diff --git a/DeukBot4/MessageHandlers/CommandHandler/Commands/OwnerCommands.cs b/DeukBot4/MessageHandlers/CommandHandler/Commands/OwnerCommands.cs new file mode 100644 index 0000000..7348203 --- /dev/null +++ b/DeukBot4/MessageHandlers/CommandHandler/Commands/OwnerCommands.cs @@ -0,0 +1,64 @@ +using System; +using System.Threading.Tasks; +using DeukBot4.MessageHandlers.CommandHandler.RequestStructure; +using DeukBot4.MessageHandlers.Permissions; +using DeukBot4.Utilities; +using Discord; + +namespace DeukBot4.MessageHandlers.CommandHandler +{ + public class OwnerCommands : CommandContainerBase + { + public override string Name => "Owner"; + + [Command("send", PermissionLevel.BotCreator)] + [CommandParameters(ParameterMatcher.ParameterType.Number, ParameterMatcher.ParameterType.Remainder)] + public async Task SendMessage(CommandRequest request) + { + if (request.Parameters.Length < 2) + return; + var channelId = request.Parameters[0].AsUlong(); + if (!channelId.HasValue) + { + await request.SendMessageAsync($"Invalid channel ID: {request.Parameters[0].AsString()}"); + return; + } + if (!(Program.Client.GetChannel(channelId.Value) is IMessageChannel channelFind)) + { + await request.SendMessageAsync($"Can't find channel: {channelId.Value}"); + return; + } + await channelFind.SendMessageAsync(request.Parameters[1].AsString()); + } + + [Command("dm", PermissionLevel.BotCreator)] + [CommandParameters(ParameterMatcher.ParameterType.Number, ParameterMatcher.ParameterType.Remainder)] + public async Task DMMessage(CommandRequest request) + { + if (request.Parameters.Length < 2) + return; + var channelId = request.Parameters[0].AsUlong(); + if (!channelId.HasValue) + { + await request.SendMessageAsync($"Invalid channel ID: {request.Parameters[0].AsString()}"); + return; + } + + var user = Program.Client.GetUser(channelId.Value); + if (user == null) + { + await request.SendMessageAsync($"Can't find user: {channelId.Value}"); + return; + } + + var channel = await user.GetOrCreateDMChannelAsync(); + if (channel == null) + { + await request.SendMessageAsync($"Can't create channel"); + return; + } + await channel.SendMessageAsync(request.Parameters[1].AsString()); + } + + } +} \ No newline at end of file