Merge Labs 3.X into dev (#1923)

* meta: bump version

* Null or empty fix (#176)

* Add components and stickers to ReplyAsync extension

* Fixed null or empty

* Changed Label to Description

* -||-

Co-authored-by: quin lynch <lynchquin@gmail.com>

* More regions (#177)

* Preconditions

* ChannelHelper

* RestDMChannel

* RestGroupChannel

* RestBan

* RestGroupUser

* EntityExtensions

* DiscordSocketClient

* DiscordSocketClient

* Discord.net.core.xml fix (#178)

* Changed Label to Description

* Added Discord- .MessageComponent .ISticker[]

,Discord.MessageComponent,Discord.ISticker[] to ReplyAsync

* Remove references to labs

* Update Discord.Net.sln

* Added SendMessagesInThreads and StartEmbeddedActivities. (#175)

* Added SendMessagesInThreads and StartEmbeddedActivities.

Adjusted owner perms.
Change UsePublicThreads -> CreatePublicThreads
Change UsePrivateThreads -> CreatePrivateThreads

* removed extra ///

* Added UsePublicThreads and UsePrivateThreads back with Obsolete Attribute

* removed 'false' from Obsolete Attribute

* Squashed commit of the following:

commit dca41a348e36a9b4e7006ef3a76377eb32aad276
Author: quin lynch <lynchquin@gmail.com>
Date:   Thu Sep 23 07:02:19 2021 -0300

    Autocomplete commands

* meta: xml. closes #171

* Revert user agent and $device to dnet

* meta: bump version

* meta: bump vers

* Fix sticker args

* Grammer fix (#179)

* Made IVoiceChannel mentionable

* Embeds array for send message async (#181)

* meta: bump version

* meta: bump vers

* Fix sticker args

* Grammer fix (#179)

* Added embeds for SendMessageAsync

* [JsonProperty("embed")] forgot to remove this

 public Optional<Embed> Embed { get; set; }

* It has been done as requested.

* Changed the old way of handeling single embeds

* Moved embeds param and added options param

* xmls

Co-authored-by: quin lynch <lynchquin@gmail.com>

* Fix thread permissions (#183)

* Update GuildPermissionsTests.cs

* Update GuildPermissions.cs

* Use compound assignment (#186)

* Used compound assignment

* -||-

* -||-

* Remove unnecessary suppression (#188)

* Inlined variable declarations (#185)

* Fixed some warnings (#184)

* Fixed some warnings

* Another fixed warning

* Changed the SSendFileAsync to SendFileAsync

* Removed para AlwaysAcknowledgeInteractions

* Moved it back to the previous version

* Added periods to the end like quin requested!! :((

Co-authored-by: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com>

* Object initialization can be simplified fixed (#189)

* Conditional-expression-simplification (#193)

* Capitlazation fixes (#192)

* Removed-this. (#191)

* Use 'switch' expression (#187)

* Use 'switch' expression

* Reverted it to the old switch case

* Fixed-compiler-error (#194)

* Submitting updates to include new permissions. (#195)

* Submitting updates to include new permissions.

* Make old permissions obsolete and update tests

Co-authored-by: quin lynch <lynchquin@gmail.com>

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Add support for long in autocomplete option

* Add support for sending files with multiple embeds (#196)

* Add support for sending files with multiple embeds

* Simplify prepending single embed to embed array

* Consistency for embeds endpoints (#197)

* Changed the way of handling prepending of embeds.

For consistency.

* reformatted the summary

* Revert pipeline

* Fix duplicate merge conflicts

* Changed minimum slash command name length to 1 per Discord API docs (#198)

* Channel endpoints requirements correction (#199)

* Added some requirements to channels for topic

* Changed check from NotNullOrEmpty to NotNullOrEmpty

* Added some requirements to channels for name

Preconditions.LessThan

* Formatting of file

* Added restriction for description not being null (#200)

* Update azure-pipelines.yml

* Update deploy.yml

* Remove version tag from proj

* Update deploy.yml

* Removed versions from project files

* Removed style of the nuget badge and added logo (#201)

The style was not properly added to it and the plastic version does not look good with the discord badge.
I thought it would look better with a logo

* Fix Type not being set in SocketApplicationCommand

* Remove useless GuildId property

* meta: update XML

* Add Autocomplete to SlashCommandOptionBuilder

* Added autocomplete in SlashCommandOptionBuilder. (#206)

Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com>

* Fix duplicate autocomplete

* Fix #208

* Fix sub commands being interpreted as a parameter for autocomplete

* Fix exposed optional

* Support the discord:// protocol in buttons (#207)

* Update UrlValidation.cs

* Update ComponentBuilder.cs

* Add docs and better error messages.

* Fix wonky intentation

* Add competing activity status type (#205)

* Update GuildPermissionsTests.cs

* Update GuildPermissions.cs

* Add competing status type

* Add Icons to IRole (#204)

* Added icon field to IRole

* Added GetGuildRoleIconUrl()

* Added Clean Content Function (#174)

* Added Clean Content Function

* Fixed Spelling problems and bad var handling

* Add StripMarkDown Method

* Clean Content Expanded (#212)

* Implement CleanContent In IMessage & RestMessage

* Update Spelling and Documentation

* Add SanatizeMessage to MessageHelper and Refactor Rest and Socket Message

* Add event for autocomplete interaction (#214)

* Spelling corrections (#215)

* Remove null collections

* Followup with file async warnings (#216)

* Changed from NotNullOrWhitespace to NotNullOrEmpty

* Added NotNullOrEmpty on filename

* Added system to interpret from the path

* Added a check for if it contains a period

* It has been done, how ever it will break stuff

* Changed to use ??= how ever still added error check

* Added space under check

* Changed from with a period to valid file extension

* Added checks for SendFileAsync

* Removed filename != null &&

* Add channel types in application command options. (#217)

* add channel types in application command options

* Indent Docs

* Stage instance audit logs as well as thread audit log type

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Fix system messages not including mentioned users. Added ContextMenuCommand message type

* Remove file extension check (#218)

* Fix NRE in modify guild channel

* Fix 429's not being accounted for in ratelimit updates

* meta: add net5 framework

Co-Authored-By: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com>

* Proper doc logos (#221)

* Update GuildPermissionsTests.cs

* Update GuildPermissions.cs

* Add competing activity status type

* logo changes

* logo text as path

* add missing logo

* Update package logo and favicon

* Update docfx references

* Remove XML files and use original pipeline format

* Remove console writeline

* Remove Console.WriteLine

* Remove useless log

* Rename Available sticker field to IsAvailable

* Rename Available to IsAvailable in stickers

* Add summary indent for role members

* Add summary indent to SocketInvite

* Rename DefaultPermission to IsDefaultPermission

* Rename Default to IsDefault and Required to IsRequired in IApplicationCommandOption

* Rename Default and Required to IsDefault and IsRequired in IApplicationCommandOption. Rename DefaultPermission to IsDefaultPermission in IApplicationCommand

* Remove extra white spaces

* Renamed Joined, Archived, and Locked to HasJoined, IsArchived, and IsLocked

* Rename Live and DiscoverableDisabled to IsDiscoverableDisabled and IsLive in IStageChannel

* Remove newline

* Add indent to summaries

* Remove unnecessary json serializer field

* Fix ToEntity for roletags incorrectly using IsPremiumSubscriber

* Update RestChannel for new channel types

* Fix different rest channels not deserializing properly

* fully qualify internal for UrlValidation and add indent to summary

* Add missing periods to InteractionResponseType

* Fix summary in IApplicationCommandOptionChoice

* Update IApplicationCommandOption summaries

* Update IApplicationCommandInteractionDataOption summaries

* Update IApplicationCommandInteractionData summaries

* Update IApplicationCommand summaries

* Update ApplicationCommandType summaries

* rename DefaultPermission to IsDefaultPermission in ApplicationCommandProperties

* update ApplicationCommandOptionChoiceProperties summaries

* Rename Default, Required, and Autocomplete to IsDefault, IsRequired, and IsAutocomplete in ApplicationCommandOptionProperties

* Update SlashCommandProperties summaries

* update SlashCommandBuilder boolean field names, summaries, and choice parameters

* Update SelectMenuOption summaries, Rename Default to IsDefault in SelectMenuOption

* update SelectMenuComponent summaries. Rename Disabled to IsDisabled in SelectMenuComponent

* update ComponentBuilder summaries and boolean fields.

* Update ButtonComponent summaries and boolean fields

* update ActionRowComponent summaries

* Update UserCommandBuilder

* Update MessageCommandBuilder summaries and boolean properties

* Update IGuild summary

* Update IGuild summaries

* Update StagePrivacyLevel summary

* update IThreadChannel summaries

* Update IStageChannel summaries

* Refactor summaries and boolean property names

* General cleanup (#223)

* General cleanup

* Add Async suffix to SendAutocompleteResult

* Fix more formatting

* Fix unused RequestOptions in GetActiveThreadsAsync

* Add message to ArgumentNullException

* Ephemeral attachments

* Add missing jsonproperty attribute

* Add IMessage.Interaction

* Update attachment checks for embed urls

* meta: bump version

* Remove old package configs and update image

* Update package logos

* Fix logo reference for azure

* Deprecate old package definitions in favor for target file

* Deprecate old package definitions in favor for target file

Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com>

* Update package ids

* Fix url validation

* meta: bump version

* Fix assignment of UserMentions (#233)

* Fix CleanContent (#231)

* Fix SocketSlashCommandData access modifier. (#237)

Fixes #229

* Update README with better header (#232)

* Update README with better header

Adds HTML elements that implement the main logo & improve the redirection tag positions.

* Resolving border issue in light-mode

* Update sponsor section

* Implement checks for interaction respond times and multiple interaction responses. closes #236, #235

* Add response check to socket auto complete

* meta: bump versions

* Fix #239

* meta: bump version

* meta: update logo

* meta: bump versions

* Revert received at time, confirmed by discord staff to be accurate

* Merge branch 'release/3.x' of https://github.com/Discord-Net-Labs/Discord.Net-Labs into merger-labs

Update requested changes of obsolete and references to labs.

Added `Interaction` to `IMessage`
Fixed grammar
Fixed bugs relating to interactions.

* Update docs

* Update CHANGELOG.md

* meta: docs building

* Update docs.yml

* Update docs.yml

* Fix docfx version

* Update docs.yml

* Update docs.bat

* Rename docs repo for clone

* update docfx version

* Update docs.bat

* Update docfx version

* Remove docs from pipeline

* FAQ revamped, metadata updated (#241)

* FAQ revamped, metadata updated

* Update FAQ.md

* Update README.md

* Docs index improvement

* Fix InvalidOperationException in modify channel

* feature: guild avatars, closes #238

* feature: modify role icons

* meta: changelog

* meta: bump version

* Update README.md

* Fix non value type options not being included in autocomplete

* Add new activity flags (#254)

* Add new activity flags

* Add missing commas

* Added support for GUILD_JOIN_REQUEST_DELETE event (#253)

Fixes #247

* Adding BotHTTPInteraction user flag (#252)

* animated guild banner support (#255)

* Docs work (WIP) (#242)

* Main page work

* Metadata logo dir

* More main page edits

* Naming change

* Dnet guide entries pruned

* Add student hub guild directory channel (#256)

* animated guild banner support

* Add guild directory channel

* Fix followup with file overwrite having incorrect parameter locations

* Merge labs 3.x

* Update GUILD_JOIN_REQUEST_DELETE event

* Update head.tmpl.partial

* Removed BannerId and AccentColor  (#260)

* Removed BannerId property, GetBannerURL method, and AccentColor property from IUser and socket entities.

* Fixed errors in IUser.cs

* Added back summary for GetAvatarUrl method in IUser.cs

* Support Guild Boost Progress Bars (#262)

* Support Guild Boost Progress Bars

* Update SocketChannel.cs

* Fix non-optional and unnecessary values.

* Spelling

* Reordering and consistency.

* Remove log for reconnect

* Add missing flags to SystemChannelMessageDeny (#267)

* Fix labs reference in analyzer project and provider project

* Rename new activity flags

* Guild feature revamp and smart gateway intent checks

* Get thread user implementation

* Amend creating slash command guide (#269)

* Adding BotHTTPInteraction user flag

* Added comments explaining the Global command create stipulations.

* Fix numeric type check for options

* Add state checking to ConnectionManager.StartAsync (#272)

* initial interface changes

* Multi file upload + attachment editing

* meta: bump versions

* Update CHANGELOG.md

* Update CHANGELOG.md

* Support Min and Max values on ApplicationCommandOptions (#273)

* Support Min and Max values on ApplicationCommandOptions

* Support decimal min/max values

* Docs imrpovments + use ToNullable

* Logomark, doc settings edit (#258)

* Logomark, doc settings edit

* Replace standard logo

* Bumping docfx plugins to latest release

* Bump version metadata

* Logo svg fix

* Change default sticker behavior and add AlwaysResolveSticker to the config

* Implement rest based interactions. Added ED25519 checks. Updated summaries.

* Update package logo

* Automatically fix ordering of optional command options (#276)

* auto fix optional command option order

* clean up indentation

* Fix maximum number of Select Menu Options (#282)

As of https://discord.com/developers/docs/interactions/message-components#select-menu-object-select-menu-structure the maximum number of options is 25, not less than 25. Hopefully the change catches all necessary locations

* Add voice region to modify voice channels

* Update summaries on rest interactions

* Interaction Specific Interfaces (#283)

* added interaction specific interfaces

* fix build error

* implement change requests

* Update application

* Add Guild Scheduled Events (#279)

* guild events initial

* sharded events

* Add new gateway intents and fix bugs

* More work on new changes to guild events

* Update guild scheduled events

* Added events to extended guild and add event start event

* Update preconditions

* Implement breaking changes guild guild events. Add guild event permissions

* Update tests and change privacy level requirements

* Update summaries and add docs for guild events

* meta: bump version

* Increment meta version (#285)

* Increment meta version

* Update docfx.json

* Fix #289 and add configureawaits to rest based interactions

* meta: bump version

* Add GUILD_SCHEDULED_EVENT_USER_ADD and GUILD_SCHEDULED_EVENT_USER_REMOVE (#287)

* Remove newline

* Fix autocomplete result value

* meta: bump versions

* Add `GuildScheduledEventUserAdd` and `GuildScheduledEventUserRemove` to sharded client

* Make RestUserCommand public (#292)

* Fix Components not showing on FUWF (#288) (#293)

Adds Components to Payload JSON Generation

* Implement smarter rest resolvable interaction data. Fixes #294

* Add UseInteractionSnowflakeDate to config #286

* Implement Better Discord Errors (#291)

* Initial error parsing

* Implement better errors

* Add missing error codes

* Add voice disconnect opcodes

* Remove unused class, add summaries to discordjsonerror, and remove public constructor of slash command properties

* Add error code summary

* Update error message summary

* Update src/Discord.Net.Core/DiscordJsonError.cs

Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com>

* Update src/Discord.Net.WebSocket/API/Voice/VoiceCloseCode.cs

Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com>

* Fix autocomplete result value

Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com>

* Change the minimum length of slash commands to 1 (#284)

* Change the minimum length of slash commands to 1. This is the correct value according to the docs and it has been changed after user feedback.

* Fix the limit in 3 other places

Co-authored-by: quin lynch <lynchquin@gmail.com>

* Add new thread creation properties

* Add role emoji. Fixes #295

* Fix mocked text channel

* Fix precondition checks. Closes #281

* Initial fix (#297)

* meta: bump version

* Update from release/3.x

* Remove more labs references

* Remove doc file for Discord.Net.Analyzers

Co-authored-by: Simon Hjorthøj <sh2@live.dk>
Co-authored-by: drobbins329 <drobbins329@gmail.com>
Co-authored-by: MrCakeSlayer <13650699+MrCakeSlayer@users.noreply.github.com>
Co-authored-by: d4n3436 <dan3436@hotmail.com>
Co-authored-by: Will <WilliamWelsh@users.noreply.github.com>
Co-authored-by: Eugene Garbuzov <kkxo.mail@gmail.com>
Co-authored-by: CottageDwellingCat <80918250+CottageDwellingCat@users.noreply.github.com>
Co-authored-by: Emily <89871431+emillly-b@users.noreply.github.com>
Co-authored-by: marens101 <marens101@gmail.com>
Co-authored-by: Jared L <48422312+lhjt@users.noreply.github.com>
Co-authored-by: Armano den Boef <68127614+Rozen4334@users.noreply.github.com>
Co-authored-by: Bill <billchirico@gmail.com>
Co-authored-by: Liege72 <65319395+Liege72@users.noreply.github.com>
Co-authored-by: Floowey <floowey@gmx.at>
Co-authored-by: Cenk Ergen <57065323+Cenngo@users.noreply.github.com>
Co-authored-by: exsersewo <exsersewo@systemexit.co.uk>
Co-authored-by: Dennis Fischer <fischer_dennis@live.de>
This commit is contained in:
Quin Lynch
2021-11-23 09:58:05 -04:00
committed by GitHub
parent 3395700720
commit 933ea42eaa
591 changed files with 34402 additions and 1465 deletions

View File

@@ -0,0 +1,32 @@
using Newtonsoft.Json;
using System.Linq;
namespace Discord.API
{
internal class ActionRowComponent : IMessageComponent
{
[JsonProperty("type")]
public ComponentType Type { get; set; }
[JsonProperty("components")]
public IMessageComponent[] Components { get; set; }
internal ActionRowComponent() { }
internal ActionRowComponent(Discord.ActionRowComponent c)
{
Type = c.Type;
Components = c.Components?.Select<IMessageComponent, IMessageComponent>(x =>
{
return x.Type switch
{
ComponentType.Button => new ButtonComponent(x as Discord.ButtonComponent),
ComponentType.SelectMenu => new SelectMenuComponent(x as Discord.SelectMenuComponent),
_ => null
};
}).ToArray();
}
[JsonIgnore]
string IMessageComponent.CustomId => null;
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API
@@ -8,7 +7,7 @@ namespace Discord.API
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("rpc_origins")]
public string[] RPCOrigins { get; set; }
public Optional<string[]> RPCOrigins { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("id")]
@@ -19,12 +18,16 @@ namespace Discord.API
public bool IsBotPublic { get; set; }
[JsonProperty("bot_require_code_grant")]
public bool BotRequiresCodeGrant { get; set; }
[JsonProperty("install_params")]
public Optional<InstallParams> InstallParams { get; set; }
[JsonProperty("team")]
public Team Team { get; set; }
[JsonProperty("flags"), Int53]
public Optional<ulong> Flags { get; set; }
public Optional<ApplicationFlags> Flags { get; set; }
[JsonProperty("owner")]
public Optional<User> Owner { get; set; }
public Optional<string[]> Tags { get; set; }
}
}

View File

@@ -0,0 +1,28 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class ApplicationCommand
{
[JsonProperty("id")]
public ulong Id { get; set; }
[JsonProperty("type")]
public ApplicationCommandType Type { get; set; } = ApplicationCommandType.Slash; // defaults to 1 which is slash.
[JsonProperty("application_id")]
public ulong ApplicationId { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("options")]
public Optional<ApplicationCommandOption[]> Options { get; set; }
[JsonProperty("default_permission")]
public Optional<bool> DefaultPermissions { get; set; }
}
}

View File

@@ -0,0 +1,22 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class ApplicationCommandInteractionData : IResolvable, IDiscordInteractionData
{
[JsonProperty("id")]
public ulong Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("options")]
public Optional<ApplicationCommandInteractionDataOption[]> Options { get; set; }
[JsonProperty("resolved")]
public Optional<ApplicationCommandInteractionDataResolved> Resolved { get; set; }
[JsonProperty("type")]
public ApplicationCommandType Type { get; set; }
}
}

View File

@@ -0,0 +1,19 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class ApplicationCommandInteractionDataOption
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("type")]
public ApplicationCommandOptionType Type { get; set; }
[JsonProperty("value")]
public Optional<object> Value { get; set; }
[JsonProperty("options")]
public Optional<ApplicationCommandInteractionDataOption[]> Options { get; set; }
}
}

View File

@@ -0,0 +1,22 @@
using Newtonsoft.Json;
using System.Collections.Generic;
namespace Discord.API
{
internal class ApplicationCommandInteractionDataResolved
{
[JsonProperty("users")]
public Optional<Dictionary<string, User>> Users { get; set; }
[JsonProperty("members")]
public Optional<Dictionary<string, GuildMember>> Members { get; set; }
[JsonProperty("channels")]
public Optional<Dictionary<string, Channel>> Channels { get; set; }
[JsonProperty("roles")]
public Optional<Dictionary<string, Role>> Roles { get; set; }
[JsonProperty("messages")]
public Optional<Dictionary<string, Message>> Messages { get; set; }
}
}

View File

@@ -0,0 +1,88 @@
using Newtonsoft.Json;
using System.Linq;
namespace Discord.API
{
internal class ApplicationCommandOption
{
[JsonProperty("type")]
public ApplicationCommandOptionType Type { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("default")]
public Optional<bool> Default { get; set; }
[JsonProperty("required")]
public Optional<bool> Required { get; set; }
[JsonProperty("choices")]
public Optional<ApplicationCommandOptionChoice[]> Choices { get; set; }
[JsonProperty("options")]
public Optional<ApplicationCommandOption[]> Options { get; set; }
[JsonProperty("autocomplete")]
public Optional<bool> Autocomplete { get; set; }
[JsonProperty("min_value")]
public Optional<double> MinValue { get; set; }
[JsonProperty("max_value")]
public Optional<double> MaxValue { get; set; }
[JsonProperty("channel_types")]
public Optional<ChannelType[]> ChannelTypes { get; set; }
public ApplicationCommandOption() { }
public ApplicationCommandOption(IApplicationCommandOption cmd)
{
Choices = cmd.Choices.Select(x => new ApplicationCommandOptionChoice
{
Name = x.Name,
Value = x.Value
}).ToArray();
Options = cmd.Options.Select(x => new ApplicationCommandOption(x)).ToArray();
ChannelTypes = cmd.ChannelTypes.ToArray();
Required = cmd.IsRequired ?? Optional<bool>.Unspecified;
Default = cmd.IsDefault ?? Optional<bool>.Unspecified;
MinValue = cmd.MinValue ?? Optional<double>.Unspecified;
MaxValue = cmd.MaxValue ?? Optional<double>.Unspecified;
Name = cmd.Name;
Type = cmd.Type;
Description = cmd.Description;
}
public ApplicationCommandOption(ApplicationCommandOptionProperties option)
{
Choices = option.Choices?.Select(x => new ApplicationCommandOptionChoice
{
Name = x.Name,
Value = x.Value
}).ToArray() ?? Optional<ApplicationCommandOptionChoice[]>.Unspecified;
Options = option.Options?.Select(x => new ApplicationCommandOption(x)).ToArray() ?? Optional<ApplicationCommandOption[]>.Unspecified;
Required = option.IsRequired ?? Optional<bool>.Unspecified;
Default = option.IsDefault ?? Optional<bool>.Unspecified;
MinValue = option.MinValue ?? Optional<double>.Unspecified;
MaxValue = option.MaxValue ?? Optional<double>.Unspecified;
ChannelTypes = option.ChannelTypes?.ToArray() ?? Optional<ChannelType[]>.Unspecified;
Name = option.Name;
Type = option.Type;
Description = option.Description;
Autocomplete = option.IsAutocomplete;
}
}
}

View File

@@ -0,0 +1,13 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class ApplicationCommandOptionChoice
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("value")]
public object Value { get; set; }
}
}

View File

@@ -0,0 +1,16 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class ApplicationCommandPermissions
{
[JsonProperty("id")]
public ulong Id { get; set; }
[JsonProperty("type")]
public ApplicationCommandPermissionTarget Type { get; set; }
[JsonProperty("permission")]
public bool Permission { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API
@@ -9,6 +8,10 @@ namespace Discord.API
public ulong Id { get; set; }
[JsonProperty("filename")]
public string Filename { get; set; }
[JsonProperty("description")]
public Optional<string> Description { get; set; }
[JsonProperty("content_type")]
public Optional<string> ContentType { get; set; }
[JsonProperty("size")]
public int Size { get; set; }
[JsonProperty("url")]
@@ -19,5 +22,7 @@ namespace Discord.API
public Optional<int> Height { get; set; }
[JsonProperty("width")]
public Optional<int> Width { get; set; }
[JsonProperty("ephemeral")]
public Optional<bool> Ephemeral { get; set; }
}
}

View File

@@ -1,4 +1,4 @@
using Newtonsoft.Json;
using Newtonsoft.Json;
namespace Discord.API
{
@@ -7,6 +7,12 @@ namespace Discord.API
[JsonProperty("webhooks")]
public Webhook[] Webhooks { get; set; }
[JsonProperty("threads")]
public Channel[] Threads { get; set; }
[JsonProperty("integrations")]
public Integration[] Integrations { get; set; }
[JsonProperty("users")]
public User[] Users { get; set; }

View File

@@ -1,4 +1,4 @@
using Newtonsoft.Json;
using Newtonsoft.Json;
namespace Discord.API
{

View File

@@ -0,0 +1,22 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class AutocompleteInteractionData : IDiscordInteractionData
{
[JsonProperty("id")]
public ulong Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("type")]
public ApplicationCommandType Type { get; set; }
[JsonProperty("version")]
public ulong Version { get; set; }
[JsonProperty("options")]
public AutocompleteInteractionDataOption[] Options { get; set; }
}
}

View File

@@ -0,0 +1,22 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class AutocompleteInteractionDataOption
{
[JsonProperty("type")]
public ApplicationCommandOptionType Type { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("options")]
public Optional<AutocompleteInteractionDataOption[]> Options { get; set; }
[JsonProperty("value")]
public Optional<object> Value { get; set; }
[JsonProperty("focused")]
public Optional<bool> Focused { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -0,0 +1,63 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class ButtonComponent : IMessageComponent
{
[JsonProperty("type")]
public ComponentType Type { get; set; }
[JsonProperty("style")]
public ButtonStyle Style { get; set; }
[JsonProperty("label")]
public Optional<string> Label { get; set; }
[JsonProperty("emoji")]
public Optional<Emoji> Emote { get; set; }
[JsonProperty("custom_id")]
public Optional<string> CustomId { get; set; }
[JsonProperty("url")]
public Optional<string> Url { get; set; }
[JsonProperty("disabled")]
public Optional<bool> Disabled { get; set; }
public ButtonComponent() { }
public ButtonComponent(Discord.ButtonComponent c)
{
Type = c.Type;
Style = c.Style;
Label = c.Label;
CustomId = c.CustomId;
Url = c.Url;
Disabled = c.IsDisabled;
if (c.Emote != null)
{
if (c.Emote is Emote e)
{
Emote = new Emoji
{
Name = e.Name,
Animated = e.Animated,
Id = e.Id
};
}
else
{
Emote = new Emoji
{
Name = c.Emote.Name
};
}
}
}
[JsonIgnore]
string IMessageComponent.CustomId => CustomId.GetValueOrDefault();
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
using System;
@@ -49,5 +48,21 @@ namespace Discord.API
//GroupChannel
[JsonProperty("icon")]
public Optional<string> Icon { get; set; }
//ThreadChannel
[JsonProperty("member")]
public Optional<ThreadMember> ThreadMember { get; set; }
[JsonProperty("thread_metadata")]
public Optional<ThreadMetadata> ThreadMetadata { get; set; }
[JsonProperty("owner_id")]
public Optional<ulong> OwnerId { get; set; }
[JsonProperty("message_count")]
public Optional<int> MessageCount { get; set; }
[JsonProperty("member_count")]
public Optional<int> MemberCount { get; set; }
}
}

View File

@@ -0,0 +1,16 @@
using Newtonsoft.Json;
namespace Discord.API.Rest
{
internal class ChannelThreads
{
[JsonProperty("threads")]
public Channel[] Threads { get; set; }
[JsonProperty("members")]
public ThreadMember[] Members { get; set; }
[JsonProperty("has_more")]
public bool HasMore { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
using System.Collections.Generic;

View File

@@ -0,0 +1,20 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Discord.API
{
[JsonConverter(typeof(Discord.Net.Converters.DiscordErrorConverter))]
internal class DiscordError
{
[JsonProperty("message")]
public string Message { get; set; }
[JsonProperty("code")]
public DiscordErrorCode Code { get; set; }
[JsonProperty("errors")]
public Optional<ErrorDetails[]> Errors { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using System;
using Newtonsoft.Json;
using Discord.Net.Converters;

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -0,0 +1,12 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class Error
{
[JsonProperty("code")]
public string Code { get; set; }
[JsonProperty("message")]
public string Message { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using System.Runtime.Serialization;
@@ -41,6 +40,8 @@ namespace Discord.API
public Optional<Emoji> Emoji { get; set; }
[JsonProperty("created_at")]
public Optional<long> CreatedAt { get; set; }
//[JsonProperty("buttons")]
//public Optional<RichPresenceButton[]> Buttons { get; set; }
[OnError]
internal void OnError(StreamingContext context, ErrorContext errorContext)

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API
@@ -36,7 +35,7 @@ namespace Discord.API
[JsonProperty("emojis")]
public Emoji[] Emojis { get; set; }
[JsonProperty("features")]
public string[] Features { get; set; }
public GuildFeatures Features { get; set; }
[JsonProperty("mfa_level")]
public MfaLevel MfaLevel { get; set; }
[JsonProperty("application_id")]
@@ -76,5 +75,13 @@ namespace Discord.API
public Optional<int> ApproximateMemberCount { get; set; }
[JsonProperty("approximate_presence_count")]
public Optional<int> ApproximatePresenceCount { get; set; }
[JsonProperty("threads")]
public Optional<Channel[]> Threads { get; set; }
[JsonProperty("nsfw_level")]
public NsfwLevel NsfwLevel { get; set; }
[JsonProperty("stickers")]
public Sticker[] Stickers { get; set; }
[JsonProperty("premium_progress_bar_enabled")]
public Optional<bool> IsBoostProgressBarEnabled { get; set; }
}
}

View File

@@ -0,0 +1,19 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class GuildApplicationCommandPermission
{
[JsonProperty("id")]
public ulong Id { get; set; }
[JsonProperty("application_id")]
public ulong ApplicationId { get; set; }
[JsonProperty("guild_id")]
public ulong GuildId { get; set; }
[JsonProperty("permissions")]
public ApplicationCommandPermissions[] Permissions { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
using System;
@@ -10,6 +9,8 @@ namespace Discord.API
public User User { get; set; }
[JsonProperty("nick")]
public Optional<string> Nick { get; set; }
[JsonProperty("avatar")]
public Optional<string> Avatar { get; set; }
[JsonProperty("roles")]
public Optional<ulong[]> Roles { get; set; }
[JsonProperty("joined_at")]

View File

@@ -0,0 +1,43 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Discord.API
{
internal class GuildScheduledEvent
{
[JsonProperty("id")]
public ulong Id { get; set; }
[JsonProperty("guild_id")]
public ulong GuildId { get; set; }
[JsonProperty("channel_id")]
public Optional<ulong?> ChannelId { get; set; }
[JsonProperty("creator_id")]
public Optional<ulong> CreatorId { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("description")]
public Optional<string> Description { get; set; }
[JsonProperty("scheduled_start_time")]
public DateTimeOffset ScheduledStartTime { get; set; }
[JsonProperty("scheduled_end_time")]
public DateTimeOffset? ScheduledEndTime { get; set; }
[JsonProperty("privacy_level")]
public GuildScheduledEventPrivacyLevel PrivacyLevel { get; set; }
[JsonProperty("status")]
public GuildScheduledEventStatus Status { get; set; }
[JsonProperty("entity_type")]
public GuildScheduledEventType EntityType { get; set; }
[JsonProperty("entity_id")]
public ulong? EntityId { get; set; }
[JsonProperty("entity_metadata")]
public GuildScheduledEventEntityMetadata EntityMetadata { get; set; }
[JsonProperty("creator")]
public Optional<User> Creator { get; set; }
[JsonProperty("user_count")]
public Optional<int> UserCount { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Discord.API
{
internal class GuildScheduledEventEntityMetadata
{
[JsonProperty("location")]
public Optional<string> Location { get; set; }
}
}

View File

@@ -0,0 +1,19 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Discord.API
{
internal class GuildScheduledEventUser
{
[JsonProperty("user")]
public User User { get; set; }
[JsonProperty("member")]
public Optional<GuildMember> Member { get; set; }
[JsonProperty("guild_scheduled_event_id")]
public ulong GuildScheduledEventId { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -0,0 +1,17 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Discord.API
{
internal class InstallParams
{
[JsonProperty("scopes")]
public string[] Scopes { get; set; }
[JsonProperty("permissions")]
public ulong Permission { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
using System;

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -0,0 +1,41 @@
using Newtonsoft.Json;
namespace Discord.API
{
[JsonConverter(typeof(Net.Converters.InteractionConverter))]
internal class Interaction
{
[JsonProperty("id")]
public ulong Id { get; set; }
[JsonProperty("application_id")]
public ulong ApplicationId { get; set; }
[JsonProperty("type")]
public InteractionType Type { get; set; }
[JsonProperty("data")]
public Optional<IDiscordInteractionData> Data { get; set; }
[JsonProperty("guild_id")]
public Optional<ulong> GuildId { get; set; }
[JsonProperty("channel_id")]
public Optional<ulong> ChannelId { get; set; }
[JsonProperty("member")]
public Optional<GuildMember> Member { get; set; }
[JsonProperty("user")]
public Optional<User> User { get; set; }
[JsonProperty("token")]
public string Token { get; set; }
[JsonProperty("version")]
public int Version { get; set; }
[JsonProperty("message")]
public Optional<Message> Message { get; set; }
}
}

View File

@@ -0,0 +1,28 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class InteractionCallbackData
{
[JsonProperty("tts")]
public Optional<bool> TTS { get; set; }
[JsonProperty("content")]
public Optional<string> Content { get; set; }
[JsonProperty("embeds")]
public Optional<Embed[]> Embeds { get; set; }
[JsonProperty("allowed_mentions")]
public Optional<AllowedMentions> AllowedMentions { get; set; }
[JsonProperty("flags")]
public Optional<MessageFlags> Flags { get; set; }
[JsonProperty("components")]
public Optional<ActionRowComponent[]> Components { get; set; }
[JsonProperty("choices")]
public Optional<ApplicationCommandOptionChoice[]> Choices { get; set; }
}
}

View File

@@ -0,0 +1,13 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class InteractionResponse
{
[JsonProperty("type")]
public InteractionResponseType Type { get; set; }
[JsonProperty("data")]
public Optional<InteractionCallbackData> Data { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
using System;

View File

@@ -2,10 +2,20 @@ using Newtonsoft.Json;
namespace Discord.API
{
/// <summary>
/// Represents a vanity invite.
/// </summary>
public class InviteVanity
{
/// <summary>
/// The unique code for the invite link.
/// </summary>
[JsonProperty("code")]
public string Code { get; set; }
/// <summary>
/// The total amount of vanity invite uses.
/// </summary>
[JsonProperty("uses")]
public int Uses { get; set; }
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
using System;
@@ -33,7 +32,7 @@ namespace Discord.API
[JsonProperty("mention_everyone")]
public Optional<bool> MentionEveryone { get; set; }
[JsonProperty("mentions")]
public Optional<EntityOrId<User>[]> UserMentions { get; set; }
public Optional<User[]> UserMentions { get; set; }
[JsonProperty("mention_roles")]
public Optional<ulong[]> RoleMentions { get; set; }
[JsonProperty("attachments")]
@@ -58,7 +57,10 @@ namespace Discord.API
public Optional<AllowedMentions> AllowedMentions { get; set; }
[JsonProperty("referenced_message")]
public Optional<Message> ReferencedMessage { get; set; }
[JsonProperty("stickers")]
public Optional<Sticker[]> Stickers { get; set; }
[JsonProperty("components")]
public Optional<API.ActionRowComponent[]> Components { get; set; }
public Optional<MessageInteraction> Interaction { get; set; }
[JsonProperty("sticker_items")]
public Optional<StickerItem[]> StickerItems { get; set; }
}
}

View File

@@ -0,0 +1,16 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class MessageComponentInteractionData : IDiscordInteractionData
{
[JsonProperty("custom_id")]
public string CustomId { get; set; }
[JsonProperty("component_type")]
public ComponentType ComponentType { get; set; }
[JsonProperty("values")]
public Optional<string[]> Values { get; set; }
}
}

View File

@@ -0,0 +1,21 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Discord.API
{
internal class MessageInteraction
{
[JsonProperty("id")]
public ulong Id { get; set; }
[JsonProperty("type")]
public InteractionType Type { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("user")]
public User User { get; set; }
}
}

View File

@@ -0,0 +1,11 @@
using Newtonsoft.Json;
using System.Collections.Generic;
namespace Discord.API
{
internal class NitroStickerPacks
{
[JsonProperty("sticker_packs")]
public List<StickerPack> StickerPacks { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
using System;
using System.Collections.Generic;

View File

@@ -0,0 +1,17 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Discord.API
{
internal class ErrorDetails
{
[JsonProperty("name")]
public Optional<string> Name { get; set; }
[JsonProperty("errors")]
public Error[] Errors { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
namespace Discord.API
{
internal enum RelationshipType

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API
@@ -9,6 +8,10 @@ namespace Discord.API
public ulong Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("icon")]
public Optional<string> Icon { get; set; }
[JsonProperty("unicode_emoji")]
public Optional<string> Emoji { get; set; }
[JsonProperty("color")]
public uint Color { get; set; }
[JsonProperty("hoist")]

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -0,0 +1,42 @@
using Newtonsoft.Json;
using System.Linq;
namespace Discord.API
{
internal class SelectMenuComponent : IMessageComponent
{
[JsonProperty("type")]
public ComponentType Type { get; set; }
[JsonProperty("custom_id")]
public string CustomId { get; set; }
[JsonProperty("options")]
public SelectMenuOption[] Options { get; set; }
[JsonProperty("placeholder")]
public Optional<string> Placeholder { get; set; }
[JsonProperty("min_values")]
public int MinValues { get; set; }
[JsonProperty("max_values")]
public int MaxValues { get; set; }
[JsonProperty("disabled")]
public bool Disabled { get; set; }
public SelectMenuComponent() { }
public SelectMenuComponent(Discord.SelectMenuComponent component)
{
Type = component.Type;
CustomId = component.CustomId;
Options = component.Options.Select(x => new SelectMenuOption(x)).ToArray();
Placeholder = component.Placeholder;
MinValues = component.MinValues;
MaxValues = component.MaxValues;
Disabled = component.IsDisabled;
}
}
}

View File

@@ -0,0 +1,53 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class SelectMenuOption
{
[JsonProperty("label")]
public string Label { get; set; }
[JsonProperty("value")]
public string Value { get; set; }
[JsonProperty("description")]
public Optional<string> Description { get; set; }
[JsonProperty("emoji")]
public Optional<Emoji> Emoji { get; set; }
[JsonProperty("default")]
public Optional<bool> Default { get; set; }
public SelectMenuOption() { }
public SelectMenuOption(Discord.SelectMenuOption option)
{
Label = option.Label;
Value = option.Value;
Description = option.Description;
if (option.Emote != null)
{
if (option.Emote is Emote e)
{
Emoji = new Emoji
{
Name = e.Name,
Animated = e.Animated,
Id = e.Id
};
}
else
{
Emoji = new Emoji
{
Name = option.Emote.Name
};
}
}
Default = option.IsDefault ?? Optional<bool>.Unspecified;
}
}
}

View File

@@ -0,0 +1,25 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class StageInstance
{
[JsonProperty("id")]
public ulong Id { get; set; }
[JsonProperty("guild_id")]
public ulong GuildId { get; set; }
[JsonProperty("channel_id")]
public ulong ChannelId { get; set; }
[JsonProperty("topic")]
public string Topic { get; set; }
[JsonProperty("privacy_level")]
public StagePrivacyLevel PrivacyLevel { get; set; }
[JsonProperty("discoverable_disabled")]
public bool DiscoverableDisabled { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API
@@ -12,14 +11,20 @@ namespace Discord.API
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("description")]
public string Desription { get; set; }
public string Description { get; set; }
[JsonProperty("tags")]
public Optional<string> Tags { get; set; }
[JsonProperty("asset")]
public string Asset { get; set; }
[JsonProperty("preview_asset")]
public string PreviewAsset { get; set; }
[JsonProperty("type")]
public StickerType Type { get; set; }
[JsonProperty("format_type")]
public StickerFormatType FormatType { get; set; }
[JsonProperty("available")]
public bool? Available { get; set; }
[JsonProperty("guild_id")]
public Optional<ulong> GuildId { get; set; }
[JsonProperty("user")]
public Optional<User> User { get; set; }
[JsonProperty("sort_value")]
public int? SortValue { get; set; }
}
}

View File

@@ -0,0 +1,16 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class StickerItem
{
[JsonProperty("id")]
public ulong Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("format_type")]
public StickerFormatType FormatType { get; set; }
}
}

View File

@@ -0,0 +1,22 @@
using Newtonsoft.Json;
namespace Discord.API
{
internal class StickerPack
{
[JsonProperty("id")]
public ulong Id { get; set; }
[JsonProperty("stickers")]
public Sticker[] Stickers { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("sku_id")]
public ulong SkuId { get; set; }
[JsonProperty("cover_sticker_id")]
public Optional<ulong> CoverStickerId { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("banner_asset_id")]
public ulong BannerAssetId { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -0,0 +1,26 @@
using Newtonsoft.Json;
using System;
namespace Discord.API
{
internal class ThreadMember
{
[JsonProperty("id")]
public Optional<ulong> Id { get; set; }
[JsonProperty("user_id")]
public Optional<ulong> UserId { get; set; }
[JsonProperty("join_timestamp")]
public DateTimeOffset JoinTimestamp { get; set; }
[JsonProperty("presence")]
public Optional<Presence> Presence { get; set; }
[JsonProperty("member")]
public Optional<GuildMember> Member { get; set; }
[JsonProperty("flags")]
public int Flags { get; set; } // No enum type (yet?)
}
}

View File

@@ -0,0 +1,20 @@
using Newtonsoft.Json;
using System;
namespace Discord.API
{
internal class ThreadMetadata
{
[JsonProperty("archived")]
public bool Archived { get; set; }
[JsonProperty("auto_archive_duration")]
public ThreadArchiveDuration AutoArchiveDuration { get; set; }
[JsonProperty("archive_timestamp")]
public DateTimeOffset ArchiveTimestamp { get; set; }
[JsonProperty("locked")]
public Optional<bool> Locked { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API
@@ -15,6 +14,10 @@ namespace Discord.API
public Optional<bool> Bot { get; set; }
[JsonProperty("avatar")]
public Optional<string> Avatar { get; set; }
[JsonProperty("banner")]
public Optional<string> Banner { get; set; }
[JsonProperty("accent_color")]
public Optional<uint?> AccentColor { get; set; }
//CurrentUser
[JsonProperty("verified")]

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API

View File

@@ -1,5 +1,5 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
using System;
namespace Discord.API
{
@@ -28,5 +28,7 @@ namespace Discord.API
public bool Suppress { get; set; }
[JsonProperty("self_stream")]
public bool SelfStream { get; set; }
[JsonProperty("request_to_speak_timestamp")]
public Optional<DateTimeOffset?> RequestToSpeakTimestamp { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API
@@ -21,5 +20,7 @@ namespace Discord.API
[JsonProperty("user")]
public Optional<User> Creator { get; set; }
[JsonProperty("application_id")]
public ulong? ApplicationId { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using System;
namespace Discord.API

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Discord.API
{
internal interface IResolvable
{
Optional<ApplicationCommandInteractionDataResolved> Resolved { get; }
}
}

View File

@@ -1,4 +1,4 @@
using System.IO;
using System.IO;
namespace Discord.Net.Rest
{
@@ -6,11 +6,13 @@ namespace Discord.Net.Rest
{
public Stream Stream { get; }
public string Filename { get; }
public string ContentType { get; }
public MultipartFile(Stream stream, string filename)
public MultipartFile(Stream stream, string filename, string contentType = null)
{
Stream = stream;
Filename = filename;
ContentType = contentType;
}
}
}

View File

@@ -0,0 +1,31 @@
using Newtonsoft.Json;
namespace Discord.API.Rest
{
internal class CreateApplicationCommandParams
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("type")]
public ApplicationCommandType Type { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("options")]
public Optional<ApplicationCommandOption[]> Options { get; set; }
[JsonProperty("default_permission")]
public Optional<bool> DefaultPermission { get; set; }
public CreateApplicationCommandParams() { }
public CreateApplicationCommandParams(string name, string description, ApplicationCommandType type, ApplicationCommandOption[] options = null)
{
Name = name;
Description = description;
Options = Optional.Create(options);
Type = type;
}
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API.Rest
@@ -14,5 +13,11 @@ namespace Discord.API.Rest
public Optional<bool> IsTemporary { get; set; }
[JsonProperty("unique")]
public Optional<bool> IsUnique { get; set; }
[JsonProperty("target_type")]
public Optional<TargetUserType> TargetType { get; set; }
[JsonProperty("target_user_id")]
public Optional<ulong> TargetUserId { get; set; }
[JsonProperty("target_application_id")]
public Optional<ulong> TargetApplicationId { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API.Rest

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
namespace Discord.API.Rest
{
internal class CreateGuildBanParams

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API.Rest

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API.Rest

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API.Rest

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API.Rest

View File

@@ -0,0 +1,29 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Discord.API.Rest
{
internal class CreateGuildScheduledEventParams
{
[JsonProperty("channel_id")]
public Optional<ulong> ChannelId { get; set; }
[JsonProperty("entity_metadata")]
public Optional<GuildScheduledEventEntityMetadata> EntityMetadata { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("privacy_level")]
public GuildScheduledEventPrivacyLevel PrivacyLevel { get; set; }
[JsonProperty("scheduled_start_time")]
public DateTimeOffset StartTime { get; set; }
[JsonProperty("scheduled_end_time")]
public Optional<DateTimeOffset> EndTime { get; set; }
[JsonProperty("description")]
public Optional<string> Description { get; set; }
[JsonProperty("entity_type")]
public GuildScheduledEventType Type { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API.Rest
@@ -11,15 +10,25 @@ namespace Discord.API.Rest
[JsonProperty("nonce")]
public Optional<string> Nonce { get; set; }
[JsonProperty("tts")]
public Optional<bool> IsTTS { get; set; }
[JsonProperty("embed")]
public Optional<Embed> Embed { get; set; }
[JsonProperty("embeds")]
public Optional<Embed[]> Embeds { get; set; }
[JsonProperty("allowed_mentions")]
public Optional<AllowedMentions> AllowedMentions { get; set; }
[JsonProperty("message_reference")]
public Optional<MessageReference> MessageReference { get; set; }
[JsonProperty("components")]
public Optional<API.ActionRowComponent[]> Components { get; set; }
[JsonProperty("sticker_ids")]
public Optional<ulong[]> Stickers { get; set; }
public CreateMessageParams(string content)
{
Content = content;

View File

@@ -0,0 +1,16 @@
using Newtonsoft.Json;
namespace Discord.API.Rest
{
internal class CreateStageInstanceParams
{
[JsonProperty("channel_id")]
public ulong ChannelId { get; set; }
[JsonProperty("topic")]
public string Topic { get; set; }
[JsonProperty("privacy_level")]
public Optional<StagePrivacyLevel> PrivacyLevel { get; set; }
}
}

View File

@@ -0,0 +1,35 @@
using Discord.Net.Rest;
using System.Collections.Generic;
using System.IO;
namespace Discord.API.Rest
{
internal class CreateStickerParams
{
public Stream File { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Tags { get; set; }
public string FileName { get; set; }
public IReadOnlyDictionary<string, object> ToDictionary()
{
var d = new Dictionary<string, object>
{
["name"] = $"{Name}",
["description"] = Description,
["tags"] = Tags
};
string contentType = "image/png";
if (File is FileStream fileStream)
contentType = $"image/{Path.GetExtension(fileStream.Name)}";
else if (FileName != null)
contentType = $"image/{Path.GetExtension(FileName)}";
d["file"] = new MultipartFile(File, FileName ?? "image", contentType.Replace(".", ""));
return d;
}
}
}

View File

@@ -1,30 +1,84 @@
#pragma warning disable CS1591
using Discord.Net.Converters;
using Discord.Net.Rest;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace Discord.API.Rest
{
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
internal class CreateWebhookMessageParams
{
private static JsonSerializer _serializer = new JsonSerializer { ContractResolver = new DiscordContractResolver() };
[JsonProperty("content")]
public string Content { get; }
public string Content { get; set; }
[JsonProperty("nonce")]
public Optional<string> Nonce { get; set; }
[JsonProperty("tts")]
public Optional<bool> IsTTS { get; set; }
[JsonProperty("embeds")]
public Optional<Embed[]> Embeds { get; set; }
[JsonProperty("username")]
public Optional<string> Username { get; set; }
[JsonProperty("avatar_url")]
public Optional<string> AvatarUrl { get; set; }
[JsonProperty("allowed_mentions")]
public Optional<AllowedMentions> AllowedMentions { get; set; }
public CreateWebhookMessageParams(string content)
[JsonProperty("flags")]
public Optional<MessageFlags> Flags { get; set; }
[JsonProperty("components")]
public Optional<API.ActionRowComponent[]> Components { get; set; }
[JsonProperty("file")]
public Optional<MultipartFile> File { get; set; }
public IReadOnlyDictionary<string, object> ToDictionary()
{
Content = content;
var d = new Dictionary<string, object>();
if (File.IsSpecified)
{
d["file"] = File.Value;
}
var payload = new Dictionary<string, object>
{
["content"] = Content
};
if (IsTTS.IsSpecified)
payload["tts"] = IsTTS.Value.ToString();
if (Nonce.IsSpecified)
payload["nonce"] = Nonce.Value;
if (Username.IsSpecified)
payload["username"] = Username.Value;
if (AvatarUrl.IsSpecified)
payload["avatar_url"] = AvatarUrl.Value;
if (Embeds.IsSpecified)
payload["embeds"] = Embeds.Value;
if (AllowedMentions.IsSpecified)
payload["allowed_mentions"] = AllowedMentions.Value;
if (Components.IsSpecified)
payload["components"] = Components.Value;
var json = new StringBuilder();
using (var text = new StringWriter(json))
using (var writer = new JsonTextWriter(text))
_serializer.Serialize(writer, payload);
d["payload_json"] = json.ToString();
return d;
}
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API.Rest

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API.Rest

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API.Rest

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
namespace Discord.API.Rest
{
internal class GetChannelMessagesParams

View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Discord.API.Rest
{
internal class GetEventUsersParams
{
public Optional<int> Limit { get; set; }
public Optional<Direction> RelativeDirection { get; set; }
public Optional<ulong> RelativeUserId { get; set; }
}
}

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API.Rest

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
namespace Discord.API.Rest
{
internal class GetGuildMembersParams

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API.Rest

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
namespace Discord.API.Rest
{
internal class GetGuildSummariesParams

View File

@@ -1,4 +1,3 @@
#pragma warning disable CS1591
using Newtonsoft.Json;
namespace Discord.API.Rest

View File

@@ -0,0 +1,19 @@
using Newtonsoft.Json;
namespace Discord.API.Rest
{
internal class ModifyApplicationCommandParams
{
[JsonProperty("name")]
public Optional<string> Name { get; set; }
[JsonProperty("description")]
public Optional<string> Description { get; set; }
[JsonProperty("options")]
public Optional<ApplicationCommandOption[]> Options { get; set; }
[JsonProperty("default_permission")]
public Optional<bool> DefaultPermission { get; set; }
}
}

Some files were not shown because too many files have changed in this diff Show More