From a5ca9149cde016e0cff8477facd30da4cd550e01 Mon Sep 17 00:00:00 2001 From: Toastie Date: Thu, 13 Jun 2024 16:47:41 +1200 Subject: [PATCH] Initial commit Added a bunch of stuff --- .gitignore | 208 ++++++++++++++ .gitmodules | 3 + Discord.Net.sln | 73 +++++ Discord.Net.targets | 35 +++ NUGET_README.md | 73 +++++ StyleAnalyzer.targets | 9 + docs/marketing/logo/PackageLogo.png | Bin 0 -> 77377 bytes .../Discord.Net.BuildOverrides.csproj | 10 + .../Discord.Net.BuildOverrides/Program.cs | 2 + overrides/Discord.Net.BuildOverrides | 1 + .../Discord.Net.Commands.csproj | 10 + src/Discord.Net.Commands/Program.cs | 2 + src/Discord.Net.Core/Discord.Net.Core.csproj | 23 ++ src/Discord.Net.Core/DiscordConfig.cs | 260 ++++++++++++++++++ .../Discord.Net.Interactions.csproj | 10 + src/Discord.Net.Interactions/Program.cs | 2 + src/Discord.Net.Rest/Discord.Net.Rest.csproj | 10 + src/Discord.Net.Rest/Program.cs | 2 + .../Discord.Net.WebSocket.csproj | 10 + src/Discord.Net.WebSocket/Program.cs | 2 + .../Discord.Net.Webhook.csproj | 10 + src/Discord.Net.Webhook/Program.cs | 2 + stylecop.json | 19 ++ .../Discord.Net.Tests.Unit.csproj | 10 + test/Discord.Net.Tests.Unit/Program.cs | 2 + 25 files changed, 788 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 Discord.Net.sln create mode 100644 Discord.Net.targets create mode 100644 NUGET_README.md create mode 100644 StyleAnalyzer.targets create mode 100644 docs/marketing/logo/PackageLogo.png create mode 100644 experiment/Discord.Net.BuildOverrides/Discord.Net.BuildOverrides.csproj create mode 100644 experiment/Discord.Net.BuildOverrides/Program.cs create mode 160000 overrides/Discord.Net.BuildOverrides create mode 100644 src/Discord.Net.Commands/Discord.Net.Commands.csproj create mode 100644 src/Discord.Net.Commands/Program.cs create mode 100644 src/Discord.Net.Core/Discord.Net.Core.csproj create mode 100644 src/Discord.Net.Core/DiscordConfig.cs create mode 100644 src/Discord.Net.Interactions/Discord.Net.Interactions.csproj create mode 100644 src/Discord.Net.Interactions/Program.cs create mode 100644 src/Discord.Net.Rest/Discord.Net.Rest.csproj create mode 100644 src/Discord.Net.Rest/Program.cs create mode 100644 src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj create mode 100644 src/Discord.Net.WebSocket/Program.cs create mode 100644 src/Discord.Net.Webhook/Discord.Net.Webhook.csproj create mode 100644 src/Discord.Net.Webhook/Program.cs create mode 100644 stylecop.json create mode 100644 test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj create mode 100644 test/Discord.Net.Tests.Unit/Program.cs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6543708 --- /dev/null +++ b/.gitignore @@ -0,0 +1,208 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Visual Studo 2015 cache/options directory +.vs/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding addin-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +*.[Cc]ache +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +#Custom +project.lock.json +/test/Discord.Net.Tests/config.json +/test/Discord.Net.Tests/cache.db* +/docs/_build +*.pyc +/.editorconfig +.vscode/ +docs/api/\.manifest + +\.idea/ + +# Codealike UID +codealike.json diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..71d50ed --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "overrides/Discord.Net.BuildOverrides"] + path = overrides/Discord.Net.BuildOverrides + url = https://github.com/discord-net/Discord.Net.BuildOverrides diff --git a/Discord.Net.sln b/Discord.Net.sln new file mode 100644 index 0000000..76d8b5d --- /dev/null +++ b/Discord.Net.sln @@ -0,0 +1,73 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.10.35004.147 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Core", "src\Discord.Net.Core\Discord.Net.Core.csproj", "{1CB29704-CA89-49EC-BB37-360E0C9D1529}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Rest", "src\Discord.Net.Rest\Discord.Net.Rest.csproj", "{42743A50-6205-4A48-BCA2-9D9D2D9ABAE0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Commands", "src\Discord.Net.Commands\Discord.Net.Commands.csproj", "{88F2227A-2352-4940-8C40-64D64E3B6A8A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.WebSocket", "src\Discord.Net.WebSocket\Discord.Net.WebSocket.csproj", "{219F64CC-E78F-414B-95A1-29F34D82B194}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Webhook", "src\Discord.Net.Webhook\Discord.Net.Webhook.csproj", "{12191647-68D7-4A1D-8AFF-A8A5D7D27E20}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Interactions", "src\Discord.Net.Interactions\Discord.Net.Interactions.csproj", "{17CC660C-A428-4DFA-8B48-5162FECD898C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Tests.Unit", "test\Discord.Net.Tests.Unit\Discord.Net.Tests.Unit.csproj", "{22443C30-C6C6-4BD4-8641-B37BD9420BD8}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{FBBBBED0-EAE3-4574-9AF9-FB4368439DDC}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Impls", "Impls", "{4E5B48BC-834D-43AF-B349-BDCDB534FE2B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions", "Extensions", "{A9FEAF51-A85E-487C-8C4B-4F1FF8A07DB7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.BuildOverrides", "experiment\Discord.Net.BuildOverrides\Discord.Net.BuildOverrides.csproj", "{D0584B63-7440-47DE-A88A-9792DBB1D6B2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1CB29704-CA89-49EC-BB37-360E0C9D1529}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1CB29704-CA89-49EC-BB37-360E0C9D1529}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1CB29704-CA89-49EC-BB37-360E0C9D1529}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1CB29704-CA89-49EC-BB37-360E0C9D1529}.Release|Any CPU.Build.0 = Release|Any CPU + {42743A50-6205-4A48-BCA2-9D9D2D9ABAE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {42743A50-6205-4A48-BCA2-9D9D2D9ABAE0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {42743A50-6205-4A48-BCA2-9D9D2D9ABAE0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {42743A50-6205-4A48-BCA2-9D9D2D9ABAE0}.Release|Any CPU.Build.0 = Release|Any CPU + {88F2227A-2352-4940-8C40-64D64E3B6A8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {88F2227A-2352-4940-8C40-64D64E3B6A8A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {88F2227A-2352-4940-8C40-64D64E3B6A8A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {88F2227A-2352-4940-8C40-64D64E3B6A8A}.Release|Any CPU.Build.0 = Release|Any CPU + {219F64CC-E78F-414B-95A1-29F34D82B194}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {219F64CC-E78F-414B-95A1-29F34D82B194}.Debug|Any CPU.Build.0 = Debug|Any CPU + {219F64CC-E78F-414B-95A1-29F34D82B194}.Release|Any CPU.ActiveCfg = Release|Any CPU + {219F64CC-E78F-414B-95A1-29F34D82B194}.Release|Any CPU.Build.0 = Release|Any CPU + {12191647-68D7-4A1D-8AFF-A8A5D7D27E20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {12191647-68D7-4A1D-8AFF-A8A5D7D27E20}.Debug|Any CPU.Build.0 = Debug|Any CPU + {12191647-68D7-4A1D-8AFF-A8A5D7D27E20}.Release|Any CPU.ActiveCfg = Release|Any CPU + {12191647-68D7-4A1D-8AFF-A8A5D7D27E20}.Release|Any CPU.Build.0 = Release|Any CPU + {17CC660C-A428-4DFA-8B48-5162FECD898C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {17CC660C-A428-4DFA-8B48-5162FECD898C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {17CC660C-A428-4DFA-8B48-5162FECD898C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {17CC660C-A428-4DFA-8B48-5162FECD898C}.Release|Any CPU.Build.0 = Release|Any CPU + {22443C30-C6C6-4BD4-8641-B37BD9420BD8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {22443C30-C6C6-4BD4-8641-B37BD9420BD8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {22443C30-C6C6-4BD4-8641-B37BD9420BD8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {22443C30-C6C6-4BD4-8641-B37BD9420BD8}.Release|Any CPU.Build.0 = Release|Any CPU + {D0584B63-7440-47DE-A88A-9792DBB1D6B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D0584B63-7440-47DE-A88A-9792DBB1D6B2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D0584B63-7440-47DE-A88A-9792DBB1D6B2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D0584B63-7440-47DE-A88A-9792DBB1D6B2}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {87BB5809-DE77-4E8C-8C5E-11D8B4E0884C} + EndGlobalSection +EndGlobal diff --git a/Discord.Net.targets b/Discord.Net.targets new file mode 100644 index 0000000..4a9e7a8 --- /dev/null +++ b/Discord.Net.targets @@ -0,0 +1,35 @@ + + + 3.14.1 + latest + Discord.Net Contributors + discord;discordapp + https://github.com/Discord-Net/Discord.Net + MIT + PackageLogo.png + git + git://github.com/Discord-Net/Discord.Net + NUGET_README.md + + + + false + + + $(VersionSuffix)-dev + dev + + + $(VersionSuffix)-$(BuildNumber) + $(BuildNumber) + + + $(NoWarn);CS1573;CS1591 + true + true + + + + + + diff --git a/NUGET_README.md b/NUGET_README.md new file mode 100644 index 0000000..c67f487 --- /dev/null +++ b/NUGET_README.md @@ -0,0 +1,73 @@ +# Discord.Net + +**Discord.Net** is an unofficial .NET API Wrapper for the Discord API (https://discord.com/developers/docs/intro). + +## 📄 Documentation + +- https://discordnet.dev +- [Sample Projects](https://github.com/discord-net/Discord.Net/tree/dev/samples) in our repository + +## Feedback + +You report issues with the library by opening an issue in our [GitHub Repository](https://github.com/discord-net/Discord.Net) + +If you need help with using Discord.Net check out the following: +- ask on our [Discord Support Server](https://discord.gg/dnet) +- start a thread in [GitHub Discussions](https://github.com/discord-net/Discord.Net/discussions) + +## 📥 Installation + +### Stable (NuGet) + +Our stable builds available from NuGet through the Discord.Net metapackage: + +- [Discord.Net](https://www.nuget.org/packages/Discord.Net/) + +The individual components may also be installed from NuGet: + +- _Webhooks_ + - [Discord.Net.Webhook](https://www.nuget.org/packages/Discord.Net.Webhook/) + +- _Text-Command & Interaction services._ + - [Discord.Net.Commands](https://www.nuget.org/packages/Discord.Net.Commands/) + - [Discord.Net.Interactions](https://www.nuget.org/packages/Discord.Net.Interactions/) + +- _Complete API coverage._ + - [Discord.Net.WebSocket](https://www.nuget.org/packages/Discord.Net.WebSocket/) + - [Discord.Net.Rest](https://www.nuget.org/packages/Discord.Net.Rest/) + +- _The API core. Implements only entities and barebones functionality._ + - [Discord.Net.Core](https://www.nuget.org/packages/Discord.Net.Core/) + +### Unstable + +Nightly builds are available through our MyGet feed (`https://www.myget.org/F/discord-net/api/v3/index.json`). +These builds target the dev branch. + +## 🩷 Supporting Discord.Net + +Discord.Net is an MIT-licensed open source project with its development made possible entirely by volunteers. +If you'd like to support our efforts financially, please consider: + +- [Contributing on Open Collective](https://opencollective.com/discordnet). + +## 🛑 Known Issues + +### WebSockets (Win7 and earlier) + +.NET Core 1.1 does not support WebSockets on Win7 and earlier. +This issue has been fixed since the release of .NET Core 2.1. +It is recommended to target .NET Core 2.1 or above for your project if you wish to run your bot on legacy platforms; +alternatively, you may choose to install the +[Discord.Net.Providers.WS4Net](https://www.nuget.org/packages/Discord.Net.Providers.WS4Net/) package. + +### TLS on .NET Framework. + +Discord supports only TLS1.2+ on all their websites including the API since 07/19/2022. +.NET Framework does not support this protocol by default. +If you depend on .NET Framework, it is suggested to upgrade your project to `net6-windows`. +This framework supports most of the windows-only features introduced by fx, and resolves startup errors from the TLS protocol mismatch. + +## 🗃️ Versioning Guarantees + +This library generally abides by [Semantic Versioning](https://semver.org). Packages are published in `MAJOR.MINOR.PATCH` version format. diff --git a/StyleAnalyzer.targets b/StyleAnalyzer.targets new file mode 100644 index 0000000..0794cfa --- /dev/null +++ b/StyleAnalyzer.targets @@ -0,0 +1,9 @@ + + + + diff --git a/docs/marketing/logo/PackageLogo.png b/docs/marketing/logo/PackageLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..6311e6eca797624c3af69862c80f8ab27faaee8a GIT binary patch literal 77377 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 + + + Exe + net6.0 + enable + enable + + + diff --git a/experiment/Discord.Net.BuildOverrides/Program.cs b/experiment/Discord.Net.BuildOverrides/Program.cs new file mode 100644 index 0000000..3751555 --- /dev/null +++ b/experiment/Discord.Net.BuildOverrides/Program.cs @@ -0,0 +1,2 @@ +// See https://aka.ms/new-console-template for more information +Console.WriteLine("Hello, World!"); diff --git a/overrides/Discord.Net.BuildOverrides b/overrides/Discord.Net.BuildOverrides new file mode 160000 index 0000000..9b2be55 --- /dev/null +++ b/overrides/Discord.Net.BuildOverrides @@ -0,0 +1 @@ +Subproject commit 9b2be5597468329090015fa1b2775815b20be440 diff --git a/src/Discord.Net.Commands/Discord.Net.Commands.csproj b/src/Discord.Net.Commands/Discord.Net.Commands.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/src/Discord.Net.Commands/Discord.Net.Commands.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/src/Discord.Net.Commands/Program.cs b/src/Discord.Net.Commands/Program.cs new file mode 100644 index 0000000..3751555 --- /dev/null +++ b/src/Discord.Net.Commands/Program.cs @@ -0,0 +1,2 @@ +// See https://aka.ms/new-console-template for more information +Console.WriteLine("Hello, World!"); diff --git a/src/Discord.Net.Core/Discord.Net.Core.csproj b/src/Discord.Net.Core/Discord.Net.Core.csproj new file mode 100644 index 0000000..5ab8a91 --- /dev/null +++ b/src/Discord.Net.Core/Discord.Net.Core.csproj @@ -0,0 +1,23 @@ + + + + + Discord.Net.Core + Discord + The core components for the Discord.Net library. + net6.0;net5.0;net461;netstandard2.0;netstandard2.1 + 5 + True + false + false + + + + + + + + + + + diff --git a/src/Discord.Net.Core/DiscordConfig.cs b/src/Discord.Net.Core/DiscordConfig.cs new file mode 100644 index 0000000..5d4857d --- /dev/null +++ b/src/Discord.Net.Core/DiscordConfig.cs @@ -0,0 +1,260 @@ +using System; +using System.Reflection; +using System.Threading.Tasks; + +namespace Discord +{ + /// + /// Defines various behaviors of Discord.Net. + /// + public class DiscordConfig + { + /// + /// Returns the API version Discord.Net uses. + /// + /// + /// An representing the API version that Discord.Net uses to communicate with Discord. + /// A list of available API version can be seen on the official + /// Discord API documentation + /// . + /// + public const int APIVersion = 10; + /// + /// Returns the Voice API version Discord.Net uses. + /// + /// + /// An representing the API version that Discord.Net uses to communicate with Discord's + /// voice server. + /// + public const int VoiceAPIVersion = 3; + /// + /// Gets the Discord.Net version, including the build number. + /// + /// + /// A string containing the detailed version information, including its build number; Unknown when + /// the version fails to be fetched. + /// + public static string Version { get; } = + typeof(DiscordConfig).GetTypeInfo().Assembly.GetCustomAttribute()?.InformationalVersion ?? + typeof(DiscordConfig).GetTypeInfo().Assembly.GetName().Version.ToString(3) ?? + "Unknown"; + + /// + /// Gets the user agent that Discord.Net uses in its clients. + /// + /// + /// The user agent used in each Discord.Net request. + /// + public static string UserAgent { get; } = $"DiscordBot (https://github.com/discord-net/Discord.Net, v{Version})"; + /// + /// Returns the base Discord API URL. + /// + /// + /// The Discord API URL using . + /// + public static readonly string APIUrl = $"https://discord.com/api/v{APIVersion}/"; + /// + /// Returns the base Discord CDN URL. + /// + /// + /// The base Discord Content Delivery Network (CDN) URL. + /// + public const string CDNUrl = "https://cdn.discordapp.com/"; + /// + /// Returns the base Discord invite URL. + /// + /// + /// The base Discord invite URL. + /// + public const string InviteUrl = "https://discord.gg/"; + + /// + /// Returns the default timeout for requests. + /// + /// + /// The amount of time it takes in milliseconds before a request is timed out. + /// + public const int DefaultRequestTimeout = 15000; + /// + /// Returns the max length for a Discord message. + /// + /// + /// The maximum length of a message allowed by Discord. + /// + public const int MaxMessageSize = 2000; + /// + /// Returns the max messages allowed to be in a request. + /// + /// + /// The maximum number of messages that can be gotten per-batch. + /// + public const int MaxMessagesPerBatch = 100; + /// + /// Returns the max users allowed to be in a request. + /// + /// + /// The maximum number of users that can be gotten per-batch. + /// + public const int MaxUsersPerBatch = 1000; + /// + /// Returns the max bans allowed to be in a request. + /// + /// + /// The maximum number of bans that can be gotten per-batch. + /// + public const int MaxBansPerBatch = 1000; + /// + /// Returns the max users allowed to be in a request for guild event users. + /// + /// + /// The maximum number of users that can be gotten per-batch. + /// + public const int MaxGuildEventUsersPerBatch = 100; + /// + /// Returns the max guilds allowed to be in a request. + /// + /// + /// The maximum number of guilds that can be gotten per-batch. + /// + public const int MaxGuildsPerBatch = 100; + /// + /// Returns the max user reactions allowed to be in a request. + /// + /// + /// The maximum number of user reactions that can be gotten per-batch. + /// + public const int MaxUserReactionsPerBatch = 100; + /// + /// Returns the max audit log entries allowed to be in a request. + /// + /// + /// The maximum number of audit log entries that can be gotten per-batch. + /// + public const int MaxAuditLogEntriesPerBatch = 100; + + /// + /// Returns the max number of stickers that can be sent with a message. + /// + public const int MaxStickersPerMessage = 3; + + /// + /// Returns the max number of embeds that can be sent with a message. + /// + public const int MaxEmbedsPerMessage = 10; + + /// + /// Gets or sets how a request should act in the case of an error, by default. + /// + /// + /// The currently set . + /// + public RetryMode DefaultRetryMode { get; set; } = RetryMode.AlwaysRetry; + + /// + /// Gets or sets the default callback for ratelimits. + /// + /// + /// This property is mutually exclusive with . + /// + public Func DefaultRatelimitCallback { get; set; } + + /// + /// Gets or sets the minimum log level severity that will be sent to the Log event. + /// + /// + /// The currently set for logging level. + /// + public LogSeverity LogLevel { get; set; } = LogSeverity.Info; + + /// + /// Gets or sets whether the initial log entry should be printed. + /// + /// + /// If set to , the library will attempt to print the current version of the library, as well as + /// the API version it uses on startup. + /// + internal bool DisplayInitialLog { get; set; } = true; + + /// + /// Gets or sets whether or not rate-limits should use the system clock. + /// + /// + /// If set to , we will use the X-RateLimit-Reset-After header + /// to determine when a rate-limit expires, rather than comparing the + /// X-RateLimit-Reset timestamp to the system time. + /// + /// This should only be changed to false if the system is known to have + /// a clock that is out of sync. Relying on the Reset-After header will + /// incur network lag. + /// + /// Regardless of this property, we still rely on the system's wall-clock + /// to determine if a bucket is rate-limited; we do not use any monotonic + /// clock. Your system will still need a stable clock. + /// + public bool UseSystemClock { get; set; } = true; + + /// + /// Gets or sets whether or not the internal expiration check uses the system date + /// + snowflake date to check if an interaction can be responded to. + /// + /// + /// If set to then the CreatedAt property in an interaction + /// will be set to when it was received instead of the snowflakes date. + ///
+ /// This will still require a stable clock on your system. + ///
+ public bool UseInteractionSnowflakeDate { get; set; } = true; + + /// + /// Gets or sets if the Rest/Socket user override formats the string in respect to bidirectional unicode. + /// + /// + /// By default, the returned value will be "?Discord?#1234", to work with bidirectional usernames. + ///
+ /// If set to , this value will be "Discord#1234". + ///
+ public bool FormatUsersInBidirectionalUnicode { get; set; } = true; + + /// + /// Returns the max thread members allowed to be in a request. + /// + /// + /// The maximum number of thread members that can be gotten per-batch. + /// + public const int MaxThreadMembersPerBatch = 100; + + /// + /// Returns the max length of an application tag. + /// + public const int MaxApplicationTagLength = 20; + + /// + /// Returns the max length of an application description. + /// + public const int MaxApplicationDescriptionLength = 400; + + /// + /// Returns the max amount of tags applied to an application. + /// + public const int MaxApplicationTagCount = 5; + + /// + /// Returns the factor to reduce the heartbeat interval. + /// + /// + /// If a heartbeat takes longer than the interval estimated by Discord, the connection will be closed. + /// This factor is used to reduce the interval and ensure that Discord will get the heartbeat within the estimated interval. + /// + internal const double HeartbeatIntervalFactor = 0.9; + + /// + /// Returns the maximum length of a voice channel status. + /// + public const int MaxVoiceChannelStatusLength = 500; + + /// + /// Returns the maximum number of entitlements that can be gotten per-batch. + /// + public const int MaxEntitlementsPerBatch = 100; + } +} \ No newline at end of file diff --git a/src/Discord.Net.Interactions/Discord.Net.Interactions.csproj b/src/Discord.Net.Interactions/Discord.Net.Interactions.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/src/Discord.Net.Interactions/Discord.Net.Interactions.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/src/Discord.Net.Interactions/Program.cs b/src/Discord.Net.Interactions/Program.cs new file mode 100644 index 0000000..3751555 --- /dev/null +++ b/src/Discord.Net.Interactions/Program.cs @@ -0,0 +1,2 @@ +// See https://aka.ms/new-console-template for more information +Console.WriteLine("Hello, World!"); diff --git a/src/Discord.Net.Rest/Discord.Net.Rest.csproj b/src/Discord.Net.Rest/Discord.Net.Rest.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/src/Discord.Net.Rest/Discord.Net.Rest.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/src/Discord.Net.Rest/Program.cs b/src/Discord.Net.Rest/Program.cs new file mode 100644 index 0000000..3751555 --- /dev/null +++ b/src/Discord.Net.Rest/Program.cs @@ -0,0 +1,2 @@ +// See https://aka.ms/new-console-template for more information +Console.WriteLine("Hello, World!"); diff --git a/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj b/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/src/Discord.Net.WebSocket/Program.cs b/src/Discord.Net.WebSocket/Program.cs new file mode 100644 index 0000000..3751555 --- /dev/null +++ b/src/Discord.Net.WebSocket/Program.cs @@ -0,0 +1,2 @@ +// See https://aka.ms/new-console-template for more information +Console.WriteLine("Hello, World!"); diff --git a/src/Discord.Net.Webhook/Discord.Net.Webhook.csproj b/src/Discord.Net.Webhook/Discord.Net.Webhook.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/src/Discord.Net.Webhook/Discord.Net.Webhook.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/src/Discord.Net.Webhook/Program.cs b/src/Discord.Net.Webhook/Program.cs new file mode 100644 index 0000000..3751555 --- /dev/null +++ b/src/Discord.Net.Webhook/Program.cs @@ -0,0 +1,2 @@ +// See https://aka.ms/new-console-template for more information +Console.WriteLine("Hello, World!"); diff --git a/stylecop.json b/stylecop.json new file mode 100644 index 0000000..bb90569 --- /dev/null +++ b/stylecop.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json", + "settings": { + "indentation": { + "indentationSize": 4, + "tabSize": 4, + "useTabs": false + }, + "documentationRules": { + "documentExposedElements": true, + "documentInternalElements": false, + "documentPrivateElements": false, + "documentInterfaces": true, + "documentPrivateFields": true, + "xmlHeader": false, + "documentationCulture": "en-US" + } + } +} diff --git a/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj b/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/test/Discord.Net.Tests.Unit/Program.cs b/test/Discord.Net.Tests.Unit/Program.cs new file mode 100644 index 0000000..3751555 --- /dev/null +++ b/test/Discord.Net.Tests.Unit/Program.cs @@ -0,0 +1,2 @@ +// See https://aka.ms/new-console-template for more information +Console.WriteLine("Hello, World!");