public async Task <RestMessage> GetMessageAsync(Snowflake channelId, Snowflake messageId, RestRequestOptions options = null)
        {
            try
            {
                var model = await ApiClient.GetChannelMessageAsync(channelId, messageId, options).ConfigureAwait(false);

                return(RestMessage.Create(this, model));
            }
            catch (DiscordHttpException ex) when(ex.HttpStatusCode == HttpStatusCode.NotFound && ex.JsonErrorCode == JsonErrorCode.UnknownMessage)
            {
                return(null);
            }
        }
        internal async Task <IReadOnlyList <RestMessage> > InternalGetMessagesAsync(Snowflake channelId, int limit = 100, RetrievalDirection direction = RetrievalDirection.Before, Snowflake?startFromId = null, RestRequestOptions options = null)
        {
            var models = await ApiClient.GetChannelMessagesAsync(channelId, limit, direction, startFromId, options).ConfigureAwait(false);

            return(models.ToReadOnlyList(this, (x, @this) => RestMessage.Create(@this, x)));
        }
        internal async Task <IReadOnlyList <RestMessage> > InternalGetMessagesAsync(Snowflake channelId, int limit = 100, RetrievalDirection?direction = null, Snowflake?startFromId = null, RestRequestOptions options = null)
        {
            var models = await ApiClient.GetChannelMessagesAsync(channelId, limit, direction, startFromId, options).ConfigureAwait(false);

            return(models.Select(x => RestMessage.Create(this, x)).ToImmutableArray());
        }