public override async Task CheckAsync(MessageContext context) { EventContext e = new EventContext(); e.commandHandler = this; e.message = context.message; e.EventSystem = context.eventSystem; Stopwatch sw = Stopwatch.StartNew(); e.Channel = await context.message.GetChannelAsync(); if (e.Channel is IDiscordGuildChannel guildChannel) { e.Guild = await guildChannel.GetGuildAsync(); } foreach (PrefixInstance prefix in Prefixes.Values) { string identifier = prefix.DefaultValue; if (e.Guild != null) { identifier = await prefix.GetForGuildAsync(Bot.Instance.CachePool.Get, e.Guild.Id); } if (!context.message.Content.StartsWith(identifier)) { continue; } e.Prefix = prefix; string command = Regex.Replace(context.message.Content, @"\r\n?|\n", "") .Substring(identifier.Length) .Split(' ') .First() .ToLower(); CommandEvent eventInstance = map.GetCommandEvent(command); if (eventInstance == null) { return; } if ((await GetUserAccessibility(context.message, e.Channel)) >= eventInstance.Accessibility) { if (await eventInstance.IsEnabled(Bot.Instance.CachePool.Get, (await context.message.GetChannelAsync()).Id)) { await eventInstance.Check(e, identifier); await OnMessageProcessed(eventInstance, context.message, sw.ElapsedMilliseconds); } } } }
public override async Task CheckAsync(MessageContext context) { try { Stopwatch sw = Stopwatch.StartNew(); await base.CheckAsync(context); foreach (PrefixInstance prefix in Prefixes.Values) { string identifier = prefix.DefaultValue; Log.Message($"checking channel with id {context.message.ChannelId}..."); context.channel = await context.message.GetChannelAsync(); Log.Message("channel ok!"); if (context.channel is IDiscordGuildChannel guildChannel) { identifier = await prefix.GetForGuildAsync(guildChannel.GuildId); } if (!context.message.Content.StartsWith(identifier)) { continue; } Log.Message("prefix ok!"); string command = Regex.Replace(context.message.Content, @"\r\n?|\n", "") .Substring(identifier.Length) .Split(' ') .First(); CommandEvent eventInstance = map.GetCommandEvent(command); if (eventInstance == null) { return; } Log.Message($"command '{eventInstance.Name}' found!"); if ((await GetUserAccessibility(context.message, context.channel)) >= eventInstance.Accessibility) { Log.Message("permissions ok!"); if (await eventInstance.IsEnabled((await context.message.GetChannelAsync()).Id)) { Log.Message("command enabled!"); await eventInstance.Check(context, identifier); Log.Message("command success!"); await OnMessageProcessed(eventInstance, context.message, sw.ElapsedMilliseconds); } } } } catch (Exception e) { Log.Error(e); } }