Example #1
0
 public void TestOptionalSerialization()
 {
     // ulong
     Assert.AreEqual(@"{""Entry"":0}", DiscordJson.SerializeObject(new TestFixture1 {
         Entry = new Optional <ulong?>(0UL)
     }));
     Assert.AreEqual(@"{}", DiscordJson.SerializeObject(new TestFixture1 {
         Entry = new Optional <ulong?>()
     }));
     // bool?
     Assert.AreEqual(@"{""Entry"":true}", DiscordJson.SerializeObject(new TestFixture2 {
         Entry = new Optional <bool?>(true)
     }));
     Assert.AreEqual(@"{""Entry"":false}", DiscordJson.SerializeObject(new TestFixture2 {
         Entry = new Optional <bool?>(false)
     }));
     Assert.AreEqual(@"{}", DiscordJson.SerializeObject(new TestFixture2 {
         Entry = new Optional <bool?>()
     }));
     // bool
     Assert.AreEqual(@"{""Entry"":true}", DiscordJson.SerializeObject(new TestFixture3 {
         Entry = new Optional <bool>(true)
     }));
     Assert.AreEqual(@"{""Entry"":false}", DiscordJson.SerializeObject(new TestFixture3 {
         Entry = new Optional <bool>(false)
     }));
     Assert.AreEqual(@"{}", DiscordJson.SerializeObject(new TestFixture3 {
         Entry = new Optional <bool>()
     }));
 }
Example #2
0
        public void TestOptionalSerialization2()
        {
            var p = new RestGuildModifyPayload();

            Assert.AreEqual("{}", DiscordJson.SerializeObject(p));
            Assert.AreEqual("{}", DiscordJson.SerializeObject(new RestGuildModifyPayload()
            {
                SystemChannelId = default,
        /// <summary>
        /// Edits the interaction response
        /// </summary>
        /// <param name="token">The token of the interaction</param>
        /// <param name="builder">The data, if any, to edit the response with</param>
        /// <returns></returns>
        public async Task EditInteractionResponseAsync(string token, DiscordInteractionBuilder builder)
        {
            var route  = $"/webhooks/{Client.CurrentApplication.Id}/{token}/messages/@original";
            var bucket = Client.ApiClient.Rest.GetBucket(RestRequestMethod.PATCH, route, new { }, out var path);

            var url = Utilities.GetApiUriFor(path);
            await Client.ApiClient.DoRequestAsync(Client, bucket, url, RestRequestMethod.PATCH, route, payload : DiscordJson.SerializeObject(builder));
        }
        //Respond methods

        /// <summary>
        /// Creates a response to an interaction
        /// </summary>
        /// <param name="interactionId">The id of the interaction</param>
        /// <param name="token">The token of the interaction</param>
        /// <param name="type">The type to respond with</param>
        /// <param name="builder">The data, if any, to send</param>
        /// <returns></returns>
        public async Task CreateInteractionResponseAsync(ulong interactionId, string token, DiscordInteractionResponseType type, DiscordInteractionBuilder builder = null)
        {
            var pld = new InteractionCreatePayload
            {
                Type = type,
                Data = builder
            };

            var route  = $"/interactions/{interactionId}/{token}/callback";
            var bucket = Client.ApiClient.Rest.GetBucket(RestRequestMethod.POST, route, new { }, out var path);

            var url = Utilities.GetApiUriFor(path);
            await Client.ApiClient.DoRequestAsync(Client, bucket, url, RestRequestMethod.POST, route, payload : DiscordJson.SerializeObject(pld));
        }
        internal async Task <IReadOnlyList <DiscordApplicationCommand> > BulkCreateCommandsAsync(List <CommandCreatePayload> pld, ulong?guildid = null)
        {
            string route;

            if (guildid == null)
            {
                route = $"/applications/{Client.CurrentApplication.Id}/commands";
            }
            else
            {
                route = $"/applications/{Client.CurrentApplication.Id}/guilds/{guildid}/commands";
            }

            var bucket = Client.ApiClient.Rest.GetBucket(RestRequestMethod.PUT, route, new { }, out var path);

            var url = Utilities.GetApiUriFor(path);
            var res = await Client.ApiClient.DoRequestAsync(Client, bucket, url, RestRequestMethod.PUT, route, payload : DiscordJson.SerializeObject(pld));

            var ret = JsonConvert.DeserializeObject <List <DiscordApplicationCommand> >(res.Response);

            foreach (var app in ret)
            {
                app.Discord = Client;
            }

            return(ret);
        }