private Task ExecuteCustomCommandAsync(FoxContext ctxBase) { var cc = ctxBase.DatabaseContext.Guild.CustomCommands.FirstOrDefault(x => x.Name.Equals(ctxBase.Message.Content, StringComparison.OrdinalIgnoreCase)); if (cc is null) { return(Task.CompletedTask); } cc.TimeUsed++; ctxBase.DatabaseContext.UpdateGuild(); return(ctxBase.RespondAsync(cc.Response.Replace("@everyone", "everyone").Replace("@here", "here"))); }
private async Task OnMessageReceivedAsync(MessageCreateEventArgs e) { if (e.Author.IsBot) { return; } try { var ctxBase = new FoxContext(e, _services); _ = Task.Run(() => ExecuteReminderAsync(e)); _ = Task.Run(() => ExecuteCustomCommandAsync(ctxBase)); if (ctxBase.DatabaseContext.User.IsBlacklisted) { return; } var prefixes = ctxBase.DatabaseContext.Guild.Prefixes; if (ctxBase.Message.MentionedUsers.Contains(ctxBase.Client.CurrentUser) && ctxBase.Message.Content.Contains("prefix", StringComparison.OrdinalIgnoreCase)) { await ctxBase.RespondAsync($"Prefixes for this guild: {string.Join(", ", prefixes.Select(x => $"`{x}`"))}"); } if (!CommandUtilities.HasAnyPrefix(e.Message.Content, prefixes, StringComparison.OrdinalIgnoreCase, out var prefix, out var content)) { return; } var context = new FoxCommandContext(ctxBase, prefix); var result = await _commands.ExecuteAsync(content, context, _services); if (result.IsSuccessful) { return; } await HandleCommandErroredAsync(result, context); } catch (Exception ex) { _logger.Print(LogLevel.Critical, "Handler", ex.StackTrace); } }
public FoxRepository(FoxContext foxContext) { this.foxContext = foxContext; }