// TODO: clean up public async Task Check(EventContext e, string identifier = "") { string command = e.message.Content.Substring(identifier.Length).Split(' ')[0]; string args = ""; List <string> arguments = new List <string>(); if (e.message.Content.Split(' ').Length > 1) { args = e.message.Content.Substring(e.message.Content.Split(' ')[0].Length + 1); arguments.AddRange(args.Split(' ')); arguments = arguments .Where(x => !string.IsNullOrWhiteSpace(x)) .ToList(); } if (Module != null) { if (Module.Nsfw && !(await e.message.GetChannelAsync()).IsNsfw) { throw new ChannelNotNsfwException(); } } if (IsOnCooldown(e.message.Author.Id)) { Log.WarningAt(Name, " is on cooldown"); return; } if (GuildPermissions.Count > 0) { foreach (GuildPermission g in GuildPermissions) { if (!(await(await e.message.GetChannelAsync() as IDiscordGuildChannel).GetPermissionsAsync(e.message.Author as IDiscordGuildUser)).HasFlag(g)) { await(await e.message.GetChannelAsync()).SendMessageAsync($"Please give me the guild permission `{g}` to use this command."); return; } } } ProcessCommandDelegate targetCommand = ProcessCommand; if (arguments.Count > 0) { if (CommandPool.ContainsKey(arguments[0])) { targetCommand = CommandPool[arguments[0]]; args = args.Substring((arguments[0].Length == args.Length) ? arguments[0].Length : arguments[0].Length + 1); } } if (e.Channel is IDiscordGuildChannel c) { e.Guild = await c.GetGuildAsync(); } e.Arguments = new Args(args); await targetCommand(e); }
public async Task Check(IDiscordMessage e, ICommandHandler c, string identifier = "") { Log.Message($"Entering {Name}!"); string command = e.Content.Substring(identifier.Length).Split(' ')[0]; string args = ""; List <string> allAliases = new List <string>(); string[] arguments = new string[0]; if (e.Content.Split(' ').Length > 1) { args = e.Content.Substring(e.Content.Split(' ')[0].Length + 1); arguments = args.Split(' '); } if (Module != null) { if (Module.Nsfw && !e.Channel.Nsfw) { return; } } if (Aliases != null) { allAliases.AddRange(Aliases); allAliases.Add(Name); } if (!await IsEnabled(e.Channel.Id)) { Log.WarningAt(Name, " is disabled"); return; } if (IsOnCooldown(e.Author.Id)) { Log.WarningAt(Name, " is on cooldown"); return; } if (GuildPermissions.Count > 0) { foreach (DiscordGuildPermission g in GuildPermissions) { if (!e.Author.HasPermissions(e.Channel, g)) { await e.Channel.SendMessage($"Please give me the guild permission `{g}` to use this command."); return; } } } ProcessCommandDelegate targetCommand = ProcessCommand; if (arguments.Length > 0) { if (CommandPool.ContainsKey(arguments[0])) { targetCommand = CommandPool[arguments[0]]; args = args.Substring((arguments[0].Length == args.Length) ? arguments[0].Length : arguments[0].Length + 1); } } Stopwatch sw = new Stopwatch(); sw.Start(); EventContext context = new EventContext(); context.commandHandler = c; context.arguments = args; context.message = e; Log.Message($"Starting Command!!! {Name}"); if (await TryProcessCommand(targetCommand, context)) { await eventSystem.OnCommandDone(e, this); TimesUsed++; Log.Message($"{Name} called from {e.Guild.Name} in {sw.ElapsedMilliseconds}ms"); } sw.Stop(); Log.Message($"Leaving {Name}"); }
public async Task Check(IDiscordMessage e, ICommandHandler c, string identifier = "") { string command = e.Content.Substring(identifier.Length).Split(' ')[0]; string args = ""; List <string> allAliases = new List <string>(); List <string> arguments = new List <string>(); if (e.Content.Split(' ').Length > 1) { args = e.Content.Substring(e.Content.Split(' ')[0].Length + 1); arguments.AddRange(args.Split(' ')); arguments = arguments .Where(x => !string.IsNullOrWhiteSpace(x)) .ToList(); } if (Module != null) { if (Module.Nsfw && !e.Channel.Nsfw) { return; } } if (Aliases != null) { allAliases.AddRange(Aliases); allAliases.Add(Name); } if (IsOnCooldown(e.Author.Id)) { Log.WarningAt(Name, " is on cooldown"); return; } if (GuildPermissions.Count > 0) { foreach (DiscordGuildPermission g in GuildPermissions) { if (!e.Author.HasPermissions(e.Channel, g)) { await e.Channel.SendMessageAsync($"Please give me the guild permission `{g}` to use this command."); return; } } } ProcessCommandDelegate targetCommand = ProcessCommand; if (arguments.Count > 0) { if (CommandPool.ContainsKey(arguments[0])) { targetCommand = CommandPool[arguments[0]]; args = args.Substring((arguments[0].Length == args.Length) ? arguments[0].Length : arguments[0].Length + 1); } } Stopwatch sw = new Stopwatch(); sw.Start(); EventContext context = new EventContext(); context.commandHandler = c; context.arguments = args; context.message = e; if (await TryProcessCommand(targetCommand, context)) { await eventSystem.OnCommandDone(e, this, true, sw.ElapsedMilliseconds); TimesUsed++; Log.Message($"{Name} called by {e.Author.Username}#{e.Author.Discriminator} [{e.Author.Id}] from {e.Guild.Name} in {sw.ElapsedMilliseconds}ms"); } else { await eventSystem.OnCommandDone(e, this, false, sw.ElapsedMilliseconds); } sw.Stop(); }