private Task OnMessageReceived(SocketMessage message) { if (message.Author.IsBot) { return(Task.CompletedTask); } if (!(message is SocketUserMessage userMessage)) { return(Task.CompletedTask); } if (!(message.Channel is SocketGuildChannel guildChannel)) { return(Task.CompletedTask); } _ = Task.Run(async() => { var argPos = 0; var guildId = guildChannel.Guild.Id; var config = await _guildConfigService.GetGuildConfiguration(guildId); if (config.ChannelId != default && config.ChannelId != guildChannel.Id.ToString()) { return; } if (!userMessage.HasStringPrefix(config.Prefix, ref argPos)) { return; } var context = new GuildConfigSocketCommandContext(_discordClient, userMessage, config); var result = await _commandService.ExecuteAsync(context, argPos, _serviceProvider, MultiMatchHandling.Best); if (!result.IsSuccess && (result.Error != CommandError.UnknownCommand || result.Error != CommandError.BadArgCount)) { _logger.LogError($"{result.Error}: {result.ErrorReason}"); await userMessage.AddReactionAsync(new Emoji("⚠")); } }); return(Task.CompletedTask); }