# Changelog ## [3.0.0] - 2021-12-13 ### Added - #1767 Add method to clear guild user cache (19a66bf) - #1847 Bump API version to 9 (06a64b7) - #1848 Remove obsolete sync voice regions methods and properties (ed8e573) - #1851 Remove DM cache and fix references (7a201e9) - #1860 Remove /users/@me call for socket and rework sharded client a bit (384ad85) - #1863 Change GuildMemberUpdate before state to cacheable (c2e87f5) - #1879 Add Name property to Teams (c5b4b64) - #1896 IVoiceChannel implements IMentionable (3395700) - #1943 Handle bidirectional usernames (10afd96) - #1948 warn on invalid gateway intents (51e06e9) - #1949 default application games (82276e3) - #1923 Added Interaction Support (933ea42). - #1923 Added Application commands (933ea42). - #1923 Added Message Components (933ea42). - #1923 Added Thread Channels (933ea42). - #1923 Added Stage Channels (933ea42). - #1923 Added Guild Events (933ea42). - #1923 Revamped Stickers (933ea42). - #1923 Added `TimestampTag` (933ea42). - #1923 Added `Name` property to teams (933ea42). - #1923 Added url validation to embeds (933ea42). - #1923 Added `NsfwLevel` to Guilds (933ea42). - #1923 Added helpers to `Emoji` for parsing (933ea42). - #1923 Added banner and accent color to guild users (933ea42). - #1923 Added `RatelimitCallback` to `RequestOptions` (933ea42). - #1923 Added `Emoji` to roles (933ea42). - #1923 Added `UseInteractionSnowflakeDate` to config (933ea42). - #1923 Added checks for gateway intent in some methods. DownloadUsersAsync will throw an exception if you don't have the gateway intent enabled locally now, this will help with the vauge error that was given before (933ea42). - #1923 Added SendFilesAsync to channels (933ea42). - #1923 Added Attachments property to MessageProperties (933ea42). - #1958 Added NET5.0 and NET6.0 builds (aa6bb5e). - #1958 Added `Discord.Interactions` (aa6bb5e). ### Fixed - #1832 Grab correct Uses value for vanity urls (8ed8714) - #1849 Remove obsolete methods and properties (70aab6c) - #1850 Create DM channel with id and author alone (95bae78) - #1853 Fire GuildMemberUpdated without cached user (d176fef) - #1854 Gateway events for DMs (a7ff6ce) - #1858 MessageUpdated without author (8b29e0f) - #1859 Add missing AddRef and related (de7f9b5) - #1862 Message update without author (fabe034) - #1864 ApiClient.CurrentUser being null (08507c0) - #1871 Add empty role list if not present (f47001a) - #1872 Connection deadlock when trying to Send and Disconnect (97d90b9) - #1873 Remove OperationCanceledException handling in connecting logic (7cf8499) - #1876 Message type (ac52a11) - #1877 Rest message type (22bb1b0) - #1886 Change embed description max length to 4096 (8349cd7) - #1890 Add default avatar to WithAuthor extension (c200861) ### Misc - #20 Update EmbedBuilder.Overwrites.md (76a878a) - #21 Fix line about PriorityAttribute (75b74e1) - #1152 Add characters commonly use in links to Sanitize (b9274d1) - #1518 Add default nullable enum typereader (f7a07ae) - #1666 Added negative TimeSpan handling (6abdfcb) - #1852 Internal change to GetOrCreateUser (dfaaa21) - #1861 Add MaxBitrate to the interface (e0dbe7c) - #1865 Add null check to AllowedMentions.ToModel() (3cb662f) - #1923 Merge Labs 3.X into dev (933ea42) - #1941 Fix emoto try parse (900c1f4) - #1942 Implement multi-file upload to webhooks (bc440ab) - #1944 Add Voice binaries (b5c150d) - #1945 Update socket presence and add new presence event (9d6dc62) - #1946 fix NRE when adding parameters thru builders (143ca6d) - #1947 fix sharded client current user (d5f5ae1) - #1950 Add custom setter to Group property of ModuleBuilder to automatically invoke AddAliases (ba656e9) - #1958 Update from Discord .Net Labs 3.4.8 (aa6bb5e) - #1959 Update isRequired (98b03be) - Add `MatchResult` (d1b31c8) - Add requested changes (a92ec56) - Fix incorrect casing on `HandleCommandPipeline` (adf3a9c) - Merge branch 'commands/validate-get-best-match' of https://github.com/siscodeorg/Discord.Net into siscodeorg-commands/validate-get-best-match (3cd9f39) - Merge branch 'siscodeorg-commands/validate-get-best-match' into dev (4f1fe2b) - Remove docs build from azure pipelines (2336b98) - use async main (125f6c7) - #1923 Made `Hierarchy` a `IGuildUser` property. - #1923 Changed embed discription length to 4096 (933ea42). - #1923 Fixed gateway serialization to include nulls for API v9 (933ea42). - #1923 Removed error log for gateway reconnects (933ea42). - #1966 Updated docs. ## [2.4.0] - 2021-05-22 ### Added - #1726 Add stickers (91a9063) - #1753 Webhook message edit & delete functionality (f67cd8e) - #1757 Add ability to add/remove roles by id (4c9910c) - #1781 Add GetEmotesAsync to IGuild (df23d57) - #1801 Add missing property to MESSAGE_REACTION_ADD event (0715d7d) - #1828 Add methods to interact with reactions without a message object (5b244f2) - #1830 Add ModifyMessageAsync to IMessageChannel (365a848) - #1844 Add Discord Certified Moderator user flag (4b8d444) ### Fixed - #1486 Add type reader when entity type reader exists (c46daaa) - #1835 Cached message emoji cleanup at MESSAGE_REACTION_REMOVE_EMOJI (8afef82) ### Misc - #1778 Remove URI check from EmbedBuilder (25b04c4) - #1800 Fix spelling in SnowflakeUtils.FromSnowflake (6aff419) ## [2.3.1] - 2021-03-10 ### Fixed - #1761 Deadlock in DiscordShardedClient when Ready is never received (73e5cc2) - #1773 Private methods aren't added as commands (0fc713a) - #1780 NullReferenceException in pin/unpin audit logs (f794163) - #1786 Add ChannelType property to ChannelInfo audit log (6ac5ea1) - #1791 Update Webhook ChannelId from model change (d2518db) - #1794 Audit log UserId can be null (d41aeee) ### Misc - #1774 Add remark regarding CustomStatus as the activity (51b7afe) ## [2.3.0] - 2021-01-28 ### Added - #1491 Add INVITE_CREATE and INVITE_DELETE events (1ab670b) - #1520 Support reading multiple activities (421a0c1) - #1521 Allow for inherited commands in modules (a51cdf6) - #1526 Add Direction.Around to GetMessagesAsync (f2130f8) - #1537 Implement gateway ratelimit (ec673e1) - #1544 Add MESSAGE_REACTION_REMOVE_EMOJI and RemoveAllReactionsForEmoteAsync (a89f076) - #1549 Add GetUsersAsync to SocketGuild (30b5a83) - #1566 Support Gateway Intents (d5d10d3) - #1573 Add missing properties to Guild and deprecate GuildEmbed (ec212b1) - #1581 Add includeRoleIds to PruneUsersAsync (a80e5ff) - #1588 Add GetStreams to AudioClient (1e012ac) - #1596 Add missing channel properties (2d80037) - #1604 Add missing application properties (including Teams) (10fcde0) - #1619 Add "View Guild Insights" to GuildPermission (2592264) - #1637 Added CultureInvariant RegexOption to WebhookUrlRegex (e3925a7) - #1659 Add inline replies (e3850e1) - #1688 Send presence on Identify payload (25d5d36) - #1721 Add role tags (6a62c47) - #1722 Add user public flags (c683b29) - #1724 Add MessageFlags and AllowedMentions to message modify (225550d) - #1731 Add GuildUser IsPending property (8b25c9b) - #1690 Add max bitrate value to SocketGuild (aacfea0) ### Fixed - #1244 Missing AddReactions permission for DM channels. (e40ca4a) - #1469 unsupported property causes an exception (468f826) - #1525 AllowedMentions and AllowedMentionTypes (3325031) - #1531 Add AllowedMentions to SendFileAsync (ab32607) - #1532 GuildEmbed.ChannelId as nullable per API documentation (971d519) - #1546 Different ratelimits for the same route (implement discord buckets) (2f6c017) - #1548 Incomplete Ready, DownloadUsersAsync, and optimize AlwaysDownloadUsers (dc8c959) - #1555 InvalidOperationException at MESSAGE_CREATE (bd4672a) - #1557 Sending 2 requests instead of 1 to create a Guild role. (5430cc8) - #1571 Not using the new domain name. (df8a0f7) - #1578 Trim token before passing it to the authorization header (42ba372) - #1580 Stop TaskCanceledException from bubbling up (b8fa464) - #1599 Invite audit log without inviter (b95b95b) - #1602 Add AllowedMentions to webhooks (bd4516b) - #1603 Cancel reconnection when 4014 (f396cd9) - #1608 Voice overwrites and CategoryId remarks (43c8fc0) - #1614 Check error 404 and return null for GetBanAsync (ae9fff6) - #1621 Parse mentions from message payload (366ca9a) - #1622 Do not update overwrite cache locally (3860da0) - #1623 Invoke UserUpdated from GuildMemberUpdated if needed (3085e88) - #1624 Handle null PreferredLocale in rare cases (c1d04b4) - #1639 Invite and InviteMetadata properties (dd2e524) - #1642 Add missing permissions (4b389f3) - #1647 handicap member downloading for verified bots (fa5ef5e) - #1652 Update README.MD to reflect new discord domain (03b831e) - #1667 Audio stream dispose (a2af985) - #1671 Crosspost throwing InvalidOperationException (9134443) - #1672 Team is nullable, not optional (be60d81) - #1681 Emoji url encode (04389a4) - #1683 SocketGuild.HasAllMembers is false if a user left a guild (47f571e) - #1686 Revert PremiumSubscriptionCount type (97e71cd) - #1695 Possible NullReferenceException when receiving InvalidSession (5213916) - #1702 Rollback Activities to Game (9d7cb39) - #1727 Move and fix internal AllowedMentions object (4a7f8fe) - limit request members batch size (084db25) - UserMentions throwing NullRef (5ed01a3) - Wrong author for SocketUserMessage.ReferencedMessage (1e9b252) - Discord sends null when there's no team (05a1f0a) - IMessage.Embeds docs remarks (a4d32d3) - Missing MessageReference when sending files (2095701) ### Misc - #1545 MutualGuilds optimization (323a677) - #1551 Update webhook regex to support discord.com (7585789) - #1556 Add SearchUsersAsync (57880de) - #1561 Minor refactor to switch expression (42826df) - #1576 Updating comments for privileged intents (c42bfa6) - #1678 Change ratelimit messages (47ed806) - #1714 Update summary of SocketVoiceChannel.Users (e385c40) - #1720 VoiceRegions and related changes (5934c79) - Add updated libraries for LastModified (d761846) - Add alternative documentation link (accd351) - Temporarily disable StyleCops until all the fixes are impl'd (36de7b2) - Remove redundant CreateGuildRoleParams (3df0539) - Add minor tweaks to DiscordSocketConfig docs strings (2cd1880) - Fix MaxWaitBetweenGuildAvailablesBeforeReady docs string (e31cdc7) - Missing summary tag for GatewayIntents (3a10018) - Add new method of role ID copy (857ef77) - Resolve inheritdocs for IAttachment (9ea3291) - Mark null as a specific langword in summary (13a41f8) - Cleanup GatewayReconnectException docs (833ee42) - Update Docfx.Plugins.LastModified to v1.2.4 (28a6f97) - Update framework version for tests to Core 3.1 to comply with LTS (4988a07) - Move bulk deletes remarks from to (62539f0) ## [2.2.0] - 2020-04-16 ### Added - #1247 Implement Client Status Support (9da11b4) - #1310 id overload for RemoveReactionAsync (c88b1da) - #1319 BOOST (faf23de) - #1326 Added a Rest property to DiscordShardedClient (9fede34) - #1348 Add Quote Formatting (265da99) - #1354 Add support for setting X-RateLimit-Precision (9482204) - #1355 Provide ParameterInfo with error ParseResult (3755a02) - #1357 add the "Stream" permission. (b00da3d) - #1358 Add ChannelFollowAdd MessageType (794eba5) - #1369 Add SelfStream voice state property (9bb08c9) - #1372 support X-RateLimit-Reset-After (7b9029d) - #1373 update audit log models (c54867f) - #1377 Support filtering audit log entries on user, action type, and before entry id (68eb71c) - #1386 support guild subscription opt-out (0d54207) - #1387 #1381 Guild PreferredLocale support (a61adb0) - #1406 CustomStatusGame Activity (79a0ea9) - #1413 Implemented Message Reference Property (f86c39d) - #1414 add StartedAt, EndsAt, Elapsed and Remaining to SpotifyGame. (2bba324) - #1432 Add ability to modify the banner for guilds (d734ce0) - suppress messages (cd28892) ### Fixed - #1318 #1314 Don't parse tags within code blocks (c977f2e) - #1333 Remove null coalescing on ToEmbedBuilder Color (120c0f7) - #1337 Fixed attempting to access a non-present optional value (4edda5b) - #1346 CommandExecuted event will fire when a parameter precondition fails like what happens when standard precondition fails. (e8cb031) - #1371 Fix keys of guild update audit (b0a595b) - #1375 Use double precision for X-Reset-After, set CultureInfo when parsing numeric types (606dac3) - #1392 patch todo in NamedTypeReader (0bda8a4) - #1405 add .NET Standard 2.1 support for Color (7f0c0c9) - #1412 GetUsersAsync to use MaxUsersPerBatch const as limit instead of MaxMessagesPerBatch. (5439cba) - #1416 false-positive detection of CustomStatusGame based on Id property (a484651) - #1418 #1335 Add isMentionable parameter to CreateRoleAsync in non-breaking manner (1c63fd4) - #1421 (3ff4e3d) - include MessageFlags and SuppressEmbedParams (d6d4429) ### Changed - #1368 Update ISystemMessage interface to allow reactions (07f4d5f) - #1417 fix #1415 Re-add support for overwrite permissions for news channels (e627f07) - use millisecond precision by default (bcb3534) ### Misc - #1290 Split Unit and Integration tests into separate projects (a797be9) - #1328 Fix #1327 Color.ToString returns wrong value (1e8aa08) - #1329 Fix invalid cref values in docs (363d1c6) - #1330 Fix spelling mistake in ExclusiveBulkDelete warning (c864f48) - #1331 Change token explanation (0484fe8) - #1349 Fixed a spelling error. (af79ed5) - #1353 [ci skip] Removed duplicate "any" from the readme (15b2a36) - #1359 Fixing GatewayEncoding comment (52565ed) - #1379 September 2019 Documentation Update (fd3810e) - #1382 Fix .NET Core 3.0 compatibility + Drop NS1.3 (d199d93) - #1388 fix coercion error with DateTime/Offset (3d39704) - #1393 Utilize ValueTuples (99d7135) - #1400 Fix #1394 Misworded doc for command params args (1c6ee72) - #1401 Fix package publishing in azure pipelines (a08d529) - #1402 Fix packaging (65223a6) - #1403 Cache regex instances in MessageHelper (007b011) - #1424 Fix the Comparer descriptions not linking the type (911523d) - #1426 Fix incorrect and missing colour values for Color fields (9ede6b9) - #1470 Added System.Linq reference (adf823c) - temporary sanity checking in SocketGuild (c870e67) - build and deploy docs automatically (2981d6b) - 2.2.0 (4b602b4) - target the Process env-var scope (3c6b376) - fix metapackage build (1794f95) - copy only \_site to docs-static (a8cdadc) - do not exit on failed robocopy (fd204ee) - add idn debugger (91aec9f) - rename IsStream to IsStreaming (dcd9cdd) - feature (40844b9) ## [2.1.1] - 2019-06-08 ### Fixed - #994: Remainder parameters now ignore character escaping, as there is no reason to escape characters here (2e95c49) - #1316: `Emote.Equals` now pays no respect to the Name property, since Discord's API does not care about an emote's name (abf3e90) - #1317: `Emote.GetHashCode` now pays no respect to the Name property, see above (1b54883) - #1323: Optionals will no longer claim to be specified when a reaction message was not cached (1cc5d73) - Log messages sourcing from REST events will no longer be raised twice (c78a679) - News embeds will be processed as `EmbedType.Unknown`, rather than throwing an error and dropping the message (d287ed1) ### Changed - #1311: Members may now be disconnected from voice channels by passing `null` as `GuildUserProperties.Channel` (fc48c66) - #1313: `IMessage.Tags` now includes the EveryoneRole on @everyone and @here mentions (1f55f01) - #1320: The maximum value for setting slow-mode has been updated to 6 hours, per the new API limit (4433ca7) ### Misc - This library's compatibility with Semantic Versioning has been clarified. Please see the README (4d7de17) - The depency on System.Interactive.Async has been bumped to `3.2.0` (3e65e03) ## [2.1.0] - 2019-05-18 ### Added - #1236: Bulk deletes (for messages) may now be accessed via the `MessagesBulkDeleted` event (dec353e) - #1240: OAuth applications utilizing the `guilds.join` scope may now add users to guilds through any client (1356ea9) - #1255: Message and attachment spoilers may now be set or detected (f3b20b2) - #1260: DiscordWebhookClient may be created from a Webhook URL (f2113c7) - #1261: A `GetCategoryChannel` helper may now be used to retrieve category channels directly from socket guilds (e03c527) - #1263: "user joined the guild" messages are now supported (00d3f5a) - #1271: AuthorID may now be retrieved from message delete audit log entries (1ae4220) - #1293: News Channels are now supported 📰 (9084c42) - `ExclusiveBulkDelete` configuration setting can be used to control bulk delete event behavior (03e6401) ### Removed - #1294: The `IGuildUser` overload of `EmbedBuilder.WithAuthor` no longer exists (b52b54d) ### Fixed - #1256: Fetching audit logs no longer raises null reference exceptions when a webhook has been deleted (049b014) - #1268: Null reference exceptions on `MESSAGE_CREATE` concerning partial member objects no longer occur (377622b) - #1278: The token validator now internally pads tokens to the proper length (48b327b) - #1292: Messages now properly initialize empty collections (b2ebc03) - The `DiscordSocketRestClient` is now properly initialized (a44c13a) - Exceptions in event handlers are now always logged (f6e3200) ### Changed - #1305: Token validation will fail when tokens contain whitespace (bb61efa) ### Misc - #1241: Added documentation samples for Webhooks (655a006) - #1243: Happy new year 🎉 (0275f7d) - #1257: Improved clarity in comments in the command samples (2473619) - #1276: Documentation uses a relative path for the logo asset (b80f0e8) - #1303: EmbedBuilder documentation now builds in the correct spot (51618e6) - #1304: Updated documentation (4309550) - CI for this project is now powered by Azure DevOps (this is not a sponsored message 🚀) (9b2bc18) - IDisposableAnalyzers should now be a development dependency (8003ac8) ## [2.0.1] - 2019-01-04 ### Fixed - #1226: Only escape the closing quotation mark of non-remainder strings (65b8c09) - Commands with async RunModes will now propagate exceptions up to CommandExecuted (497918e) ### Misc - #1225: Commands sample no longer hooks the log event twice (552f34c) - #1227: The logo on the docs index page should scale responsively (d39bf6e) - #1230: Replaced precondition sample on docs (feed4fd) ## [2.0.0] - 2018-12-28 ### Added - #747: `CommandService` now has a `CommandExecuted` event (e991715) - #765: Parameters may have a name specified via `NameAttribute` (9c81ab9) - #773: Both socket clients inherit from `BaseSocketClient` (9b7afec) - #785: Primitives now automatically load a NullableTypeReader (cb0ff78) - #819: Support for Welcome Message channels (30e867a) - #835: Emoji may now be managed from a bot (b4bf046) - #843: Webhooks may now be managed from a bot (7b2ddd0) - #863: An embed may be converted to an `EmbedBuilder` using the `.ToEmbedBuilder()` method (5218e6b) - #877: Support for reading rich presences (34b4e5a) - #888: Users may now opt-in to using a proxy (678a723) - #906: API Analyzers to assist users when writing their bot (f69ef2a) - #907: Full support for channel categories (030422f) - #913: Animated emoji may be read and written (a19ff18) - #915: Unused parameters may be discarded, rather than failing the command (5f46aef) - #929: Standard EqualityComparers for use in LINQ operations with the library's entities (b5e7548) - #934: Modules now contain an `OnModuleBuilding` method, which is invoked when the module is built (bb8ebc1) - #952: Added 'All' permission set for categories (6d58796) - #957: Ratelimit related objects now include request information (500f5f4) - #962: Add `GetRecommendedShardCountAsync` (fc5e70c) - #970: Add Spotify track support to user Activities (64b9cc7) - #973: Added `GetDefaultAvatarUrl` to user (109f663) - #978: Embeds can be attached alongside a file upload (e9f9b48) - #984, #1089: `VoiceServerUpdate` events are now publically accessible (e775853, 48fed06) - #996: Added `DeleteMessageAsync` to `IMessageChannel` (bc6009e) - #1005: Added dedicated `TimeSpan` TypeReader which "doesn't suck" (b52af7a) - #1009: Users can now specify the replacement behavior or default typereaders (6b7c6e9) - #1020: Users can now specify parameters when creating channels (bf5275e) - #1030: Added `IsDeprecated`, `IsCustom` properties to `VoiceRegion` (510f474) - #1037: Added `SocketUser.MutualGuilds`, various extension methods to commands (637d9fc) - #1043: `Discord.Color` is now compatible with `System.Drawing.Color` (c275e57) - #1055: Added audit logs (39dffe8) - #1056: Added `GetBanAsync` (97c8931) - #1102: Added `GetJumpUrl()` to messages (afc3a9d) - #1123: Commands can now accept named parameters (419c0a5) - #1124: Preconditions can now set custom error messages (5677f23) - #1126: `Color` now has equality (a2d8800) - #1159: Guild channels can now by synced with their parent category (5ea1fb3) - #1165: Bring Guild and Message models up to date with the API (d30d122) - #1166: Added `GetVoiceRegionsAsync` to `IGuild` (00717cf) - #1183: Added Add Guild Member endpoint for OAuth clients (8ef5f81) - #1196: Channel position can now be specified when creating a channel (a64ab60) - #1198: The Socket client can now access its underlying REST client (65afd37) - #1213: Added `GuildEmote#CreatorId` (92bf836) - 'html' variant added to the `EmbedType` enum (42c879c) - Modules can now be nested in non-module classes (4edbd8d) - Added `BanAsync` to guild members (1905fde) - Added the permisison bit for priority speaker (c1d7818) - All result types can use `FromError` (748e92b) - Added support for reading/writing slow mode (97d17cf) - Added markdown format for URLs (f005af3) - Reactions can now be added to messages in bulk (5421df1) ### Fixed - #742: `DiscordShardedClient#GetGuildFor` will now direct null guilds to Shard 0 (d5e9d6f) - #743: Various issues with permissions and inheritance of permissions (f996338) - #755: `IRole.Mention` will correctly tag the @everyone role (6b5a6e7) - #768: `CreateGuildAsync` will include the icon stream (865080a) - #866: Revised permissions constants and behavior (dec7cb2) - #872: Bulk message deletion should no longer fail for incomplete batch sizes (804d918) - #923: A null value should properly reset a user's nickname (227f61a) - #938: The reconnect handler should no longer deadlock during Discord outages (73ac9d7) - #941: Fix behavior of OverrideTypeReader (170a2e0) - #945: Fix properties on SocketCategoryChannel (810f6d6) - #959: Webhooks now use the correct parameter when assigning to the Avatar URL (8876597) - #966: Correct the implementation of HasFlag and ResolveChannel in permissions (32ebdd5) - #968: Add missing parameter in WebSocket4Net constructor (8537924) - #981: Enforce a maximum value when parsing timestamps from Discord (bfaa6fc) - #993: Null content will no longer null-ref on message sends/edits (55299ff) - #1003: Fixed ordering of parameters in permissions classes (a06e212) - #1010: EmbedBuilder no longer produces mutable embeds (2988b38) - #1012: `Embed.Length` should now yield the correct results (a3ce80c) - #1017: GetReactionUsersAsync includes query parameters (9b29c00) - #1022: GetReactionUsersAsync is now correctly paginated (79811d0) - #1023: Fix/update invite-related behaviors (7022149) - #1031: Messages with no guild-specific data should no longer be lost (3631886) - #1036: Fixed cases where `RetryMode.RetryRatelimit` were ignored (c618cb3) - #1044: Populate the guild in `SocketWebhookUser` (6a7810b) - #1048: The REST client will now create a full GuildUser object (033d312) - #1049: Fixed null-ref in `GetShardIdFor` (7cfed7f) - #1059: Include 'view channel' in voice channel's All permissions set (e764daf) - #1083: Default type readers will now be properly replaced (4bc06a0) - #1093: Fixed race condition in audio client authentication (322d46e) - #1139: Fixed consistency in exceptions (9e9a11d) - #1151: `GetReactionUsersAsync` now uses the correct pagination constant (c898325) - #1163: Reaction ratelimits are now placed in the same bucket, treated correctly (5ea1fb3) - #1186: Webhooks can now send files with embeds correctly (c1d5152) - #1192: CommandExecuted no longer fires twice for RuntimeResults (10233f3) - #1195: Channel Create audit log events properly deserialize (dca6c33) - #1202: The UDP client should no longer be used after disposed (ccb16e4) - #1203: The Audio client should no longer lock up on disconnect (2c93363) - #1209: MessageUpdated should no longer pass a null after object (91e0f03) - Ignore messages with no ID in bulk delete (676be40) - No longer attempt to load generic types as modules (b1eaa44) - No longer complain when a `PRESENCES_REPLACE` update is received (beb3d46) - CommandExecuted will be raised on async exception failures (6260749) - ExecuteResult now contains the entire exception, not an abridged message (f549da5) - CommandExecuted will no longer be raised twice for exceptions (aec7105) - The default WebSocket will now close correctly (ac389f5) ### Changed - #731: `IUserMessage#GetReactionUsersAsync` now takes an `IEmote` instead of a `string` (5d7f2fc) - #744: IAsyncEnumerable has been redesigned (5bbd9bb) - #777: `IGuild#DefaultChannel` will now resolve the first accessible channel, per changes to Discord (1ffcd4b) - #781: Attempting to add or remove a member's EveryoneRole will throw (506a6c9) - #801: `EmbedBuilder` will no longer implicitly convert to `Embed`, you must build manually (94f7dd2) - #804: Command-related tasks will have the 'async' suffix (14fbe40) - #812: The WebSocket4Net provider has been bumped to version 0.15, allowing support for .NET Standard apps (e25054b) - #829: DeleteMessagesAsync moved from IMessageChannel to ITextChannel (e00f17f) - #853: WebSocket will now use `zlib-stream` compression (759db34) - #874: The `ReadMessages` permission is moving to `ViewChannel` (edfbd05) - #877: Refactored Games into Activities (34b4e5a) - #943: Multiple types of quotation marks can now be parsed (thanks 🍎) (cee71ef) - #955: The `GameParty` model will now use long values (178ea8d) - #986: Expose the internal entity TypeReaders (660fec0) - #992: Throw an exception when trying to modify someone else's message (d50fc3b) - #998: Commands can specify their own `IgnoreExtraArgs` behavior (6d30100) - #1033: The `ReadMessages` permission bit is now named `ViewChannel` (5f084ad) - #1042: Content parameter of `SendMessageAsync` is now optional (0ba8b06) - #1057: An audio channel's `ConnectAsync` now allows users to handle the voice connection elsewhere, such as in Lavalink (890904f) - #1094: Overhauled invites, added vanity invite support (ffe994a) - #1108: Reactions now use the undocumented 1/.25 ratelimit, making them 4x faster (6b21b11) - #1128: Bot tokens will now be validated for common mishaps before use (2de6cef) - #1140: Check the invite `maxAge` parameter before making the request (649a779) - #1164: All command results will now be raised in `CommandExecuted` (10f67a8) - #1171: Clients have been changed to properly make use of `IDisposable` (7366cd4) - #1172: Invite related methods were moved from `IGuildChannel` to `INestedChannel` (a3f5e0b) - #1200: HasPrefix extensions now check for null values first (46e2674) - `IGuildChannel#Nsfw` moved to `ITextChannel`, now maps to the API property (608bc35) - Preemptive ratelimits are now logged under verbose, rather than warning. (3c1e766) - The default InviteAge when creating Invites is now 24 hours (9979a02) - All parameters to `ReplyAsync` have been made optional (b38dca7) - The socket client will now use additional fields to fill in member/guild information on messages (8fb2c71) - The Audio Client now uses Voice WS v3 (9ba38d7) ### Removed - #790: Redundant overloads for `AddField` removed from EmbedBuilder (479361b) - #925: RPC is no longer being maintained nor packaged (b30af57) - #958: Remove support for user tokens (2fd4f56) - User logins (including selfbots) are no longer supported (fc5adca) ### Misc - #786: Unit tests for the Color structure (22b969c) - #828: We now include a contributing guide (cd82a0f) - #876: We now include a standard editorconfig (5c8c784) - #963: Docs now include a release version, build instructions (88e6244) - #964: Fix documentation spelling of 'echoes' (fda19b5) - #967: Unit test permissions (63e6704) - #968: Bumped version of WebSocket4Net to 0.15.2 (8537924) - #972: Include sample bots in the source repository (217ec34) - #1046: We now support .NET Standard 2.0 (bbbac85) - #1114: Various performance optimizations (82cfdff) - #1149: The CI will now test on Ubuntu as well as Windows (674a0fc) - #1161: The entire documentation has been rewritten, all core entities were docstringed (ff0fea9) - #1175: Documentation changes in command samples (fb8dbca) - #1177: Added documentation for sharded bots (00097d3) - #1219: The project now has a logo! 🎉 (5750c3e) - This project is now licensed to the Discord.Net contributors (710e182) - Added templates for pull requests (f2ddf51) - Fixed documentation layout for the logo (bafdce4) ## [1.0.2] - 2017-09-09 ### Fixed - Guilds utilizing Channel Categories will no longer crash bots on the `READY` event. ## [1.0.1] - 2017-07-05 ### Fixed - #732: Fixed parameter preconditions not being loaded from class-based modules (b6dcc9e) - #726: Fixed CalculateScore throwing an ArgumentException for missing parameters (7597cf5) - EmbedBuilder URI validation should no longer throw NullReferenceExceptions in certain edge cases (d89804d) - Fixed module auto-detection for nested modules (d2afb06) ### Changed - ShardedCommandContext now inherits from SocketCommandContext (8cd99be)