/// <inheritdoc/> public async Task <DiscordMessagePacket> SendMessageAsync(ulong channelId, MessageArgs args) { string json = JsonSerializer.Serialize(args, options); { var response = await httpClient.PostAsync( DiscordApiRoutes.ChannelMessages(channelId), json) .ConfigureAwait(false); HandleErrors(response, options); return(JsonSerializer.Deserialize <DiscordMessagePacket>(response.Body, options)); } }
/// <inheritdoc/> public async Task <IEnumerable <DiscordMessagePacket> > GetMessagesAsync( ulong channelId, int amount = 100) { QueryString qs = new QueryString(); qs.Add("limit", amount); var response = await httpClient.GetAsync( DiscordApiRoutes.ChannelMessages(channelId) + qs.Query) .ConfigureAwait(false); HandleErrors(response, options); return(JsonSerializer.Deserialize <DiscordMessagePacket[]>(response.Body, options)); }
/// <inheritdoc/> public async Task <DiscordMessagePacket> SendFileAsync( ulong channelId, Stream stream, string fileName, MessageArgs args) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } args.Embed = new DiscordEmbed { Image = new EmbedImage { Url = "attachment://" + fileName } }; var form = new MultipartFormDataContent(); if (!string.IsNullOrEmpty(args.Content)) { form.Add(new StringContent(args.Content), "content"); } if (stream.CanSeek) { var memoryStream = new MemoryStream(); await stream.CopyToAsync(memoryStream).ConfigureAwait(false); memoryStream.Position = 0; stream = memoryStream; } form.Add(new StreamContent(stream), "file", fileName); var response = await httpClient.InnerClient.PostAsync( DiscordApiRoutes.ChannelMessages(channelId), form); await HandleErrorsAsync(response); return(JsonSerializer.Deserialize <DiscordMessagePacket>( await response.Content.ReadAsStringAsync())); }