Beispiel #1
0
        /// <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));
            }
        }
Beispiel #2
0
        /// <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));
        }
Beispiel #3
0
        /// <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()));
        }