Пример #1
0
        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")));
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
 public FoxRepository(FoxContext foxContext)
 {
     this.foxContext = foxContext;
 }