private async Task MessageReceived(SocketMessage rawMessage)
        {
            // Ignore system messages and messages from bots
            if (!(rawMessage is SocketUserMessage message))
            {
                return;
            }
            if (message.Source != MessageSource.User)
            {
                return;
            }

            var context = new SocketCommandContext(_discord, message);

            int argPos = 0;

            if (!message.HasStringPrefix(_config["prefix"], ref argPos) && !message.HasMentionPrefix(_discord.CurrentUser, ref argPos))
            {
                return;
            }

            var result = await _commands.ExecuteAsync(context, argPos, _provider);

            if (result.Error.HasValue && (result.Error.Value != CommandError.UnknownCommand))
            {
                Console.WriteLine(result.Error.Value + "\n" + result.ErrorReason);
            }

            if (result.Error.HasValue && result.Error.Value == CommandError.ObjectNotFound)
            {
                var msg = await context.Channel.SendMessageAsync("Sorry. " + result.ErrorReason);

                _cache.Add(context.Message.Id, msg.Id);
            }
        }