Releases: discord-net/Discord.Net
v2.3.1
This release contains a few bug fixes related to the library itself and the Discord API, including a potential deadlock when waiting for the READY
payload with DiscordShardedClient
.
Thanks to the following for their contributions in this release:
- @yebafan
- @AntonioZn
- @NeKzor
- @AntiTcb
Upgrade Path
This is a patch release and it is compatible when recompiling from v2.3.0
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
v2.3.0
This release contains a lot of new features of the Discord API, general library fixes, and uses the new discord.com
domain.
Thanks to the following for their contributions in this release:
- @NeKzor
- @Chris-Johnston
- @Joe4evr
- @moiph
- @BramEsendam
- @orchidalloy
- @MattTheDev
Upgrade Path
This is a minor release, and is compatible when recompiling from v2.2.0
It might break backward compatibility with older packages since a few methods got new parameters:
- Include role identifiers in
PruneUsersAsync
(a80e5ff) - Add
AllowedMentions
to webhookSendMessageAsync
andSendFileAsync
(bd4516b) - Add
AllowedMentions
toSendFileAsync
inIMessageChannel
types (ab32607) - Add
MessageReference
toSendMessageAsync
andSendFileAsync
(e3850e1)
Added
INVITE_CREATE
andINVITE_DELETE
events (1ab670b)- Support reading multiple activities (421a0c1)
- Allow for inherited commands in modules (a51cdf6)
- Direction.Around to GetMessagesAsync (f2130f8)
- Gateway ratelimiter (ec673e1)
MESSAGE_REACTION_REMOVE_EMOJI
event andRemoveAllReactionsForEmoteAsync
(a89f076)GetUsersAsync
toSocketGuild
(30b5a83)- Gateway Intents (d5d10d3)
- Missing properties to
IGuild
and deprecate GuildEmbed (ec212b1) includeRoleIds
parameter toPruneUsersAsync
(a80e5ff)GetStreams
toIAudioClient
(1e012ac)- Missing channel properties when creating new channels (2d80037)
- Missing application properties (including Teams) (10fcde0)
- "View Guild Insights" to
GuildPermission
(2592264) - Inline replies (e3850e1)
- Send presence on Identify payload (25d5d36)
- Role tags (6a62c47)
- User public flags (c683b29)
MessageFlags
andAllowedMentions
to message modify (225550d)IsPending
property toIGuildUser
(8b25c9b)- Max bitrate value to
SocketGuild
(aacfea0) SearchUsersAsync
toIGuild
(57880de)- Implement discord buckets to the ratelimiter (2f6c017)
Fixed
- Missing AddReactions permission for DM channels. (e40ca4a)
- Exception caused by missing
SlowModeInterval
property (468f826) - Fixed
AllowedMentions
andAllowedMentionTypes
(3325031) - Missing
AllowedMentions
toSendFileAsync
(ab32607) GuildEmbed.ChannelId
as nullable per API documentation (971d519)- Incomplete Ready, DownloadUsersAsync, and optimize AlwaysDownloadUsers (dc8c959)
- InvalidOperationException at
MESSAGE_CREATE
(bd4672a) - Sending 2 requests instead of 1 to create a Guild role. (5430cc8)
- Not using the new domain name. (df8a0f7)
- Trim token before passing it to the authorization header (42ba372)
- Stop TaskCanceledException from bubbling up (b8fa464)
- Invite audit log without inviter (b95b95b)
- Missing
AllowedMentions
to webhooks (bd4516b) - Cancel reconnection when 4014 (f396cd9)
- Voice overwrites and CategoryId remarks (43c8fc0)
- Check error 404 and return null for GetBanAsync (ae9fff6)
- Parse mentions from message payload (366ca9a)
- Do not update overwrite cache locally (3860da0)
- Invoke UserUpdated from GuildMemberUpdated if needed (3085e88)
- Handle null PreferredLocale in rare cases (c1d04b4)
- Update Invite and InviteMetadata properties (dd2e524)
- Missing
OverwritePermissions
(4b389f3) - Limit amount of guilds for
DownloadUsersAsync
(084db25) - Audio stream dispose (a2af985)
- Crosspost throwing InvalidOperationException (9134443)
- Emoji url encode (04389a4)
SocketGuild.HasAllMembers
is false if a user left a guild (47f571e)- Possible NullReferenceException when receiving InvalidSession (5213916)
- Possible NullReferenceException when creating a
SocketUserMessage
(5ed01a3) - Update webhook regex to support discord.com (7585789)
- CultureInvariant RegexOption to WebhookUrlRegex (e3925a7)
Misc
- MutualGuilds optimization (323a677)
- Updating comments for privileged intents (c42bfa6)
- Change ratelimit messages (47ed806)
- Update summary of SocketVoiceChannel.Users (e385c40)
- Changed VoiceRegions and related(5934c79)
- Remove redundant CreateGuildRoleParams (3df0539)
- Add minor tweaks to DiscordSocketConfig docs strings (2cd1880)
- Fix MaxWaitBetweenGuildAvailablesBeforeReady docs string (e31cdc7)
- Missing summary tag for GatewayIntents (3a10018)
- IMessage.Embeds docs remarks (a4d32d3)
- Resolve inheritdocs for IAttachment (9ea3291)
- Cleanup GatewayReconnectException docs (833ee42)
- Move bulk deletes remarks from
<summary>
to<remarks>
(62539f0)
v2.1.1
This release contains general library fixes, as well as improvements to support new features of the Discord API.
Thanks to the following for their contributions in this release:
- @Chris-Johnston
- @Jyrka98
- @Quahu
- @TheCasino
- @Tiago-Risky
Upgrade Path
This is a patch release, and is fully compatible with v2.1.0
For users upgrading from a prior build of v2.x, please see the release notes for v2.1.0
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
asGuildUserProperties.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
v2.1.0
This release contains implementations of new Discord features, as well as bug and stability fixes.
Thanks to the following for their contributions this release:
- @AntiTcb
- @Chris-Johnston
- @Joe4evr
- @NovusTheory
- @Still34
- @SubZero0
- @TheCasino
Upgrade Path
This is a minor upgrade, and is API compatible with all 2.0.x versions.
Note that this release includes binary breaking changes, so codependencies targeting 2.0.x or prior may need to be upgraded or recompiled.
Per #1255, the SendFileAsync
method gained an optional parameter. No code changes need to be made, but dependencies of this method MUST be recompiled.
Per #1294, EmbedBuilder.WithAuthor
must use the IUser
overload. Behaviorally, this acts similarly, except that nicknames will not be displayed. Dependencies of this method MUST be recompiled.
Per 03e6401, when a bulk delete event is received, the client will log a warning, and raise the MessageDeleted
event for all messages in the bulk delete, as well as the MessagesBulkDeleted
event. To suppress this warning, the client should be configured with the ExclusiveBulkDelete
set.
var client = new DiscordSocketClient(new DiscordSocketConfig {
ExclusiveBulkDelete = false // raise both events
// OR
ExclusiveBulkDelete = true // raise only MessagesBulkDeleted
});
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
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
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)
v2.0.1
This release contains fixes for bugs in the Command Service, as well as some documentation adjustments.
Thanks to the following for their contributions this release:
- @Chris-Johnston
- @Joe4evr
- @TheCasino
Upgrade Path
This is a patch release, and is fully compatible with v2.0.0
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
v2.0.0
This is a major release. Changes have been made to fix previous design errors, as well as add and remove functionality per the Discord API.
Note: This is a cumulative changelog including all pre-releases of v2.0.0. To view only the changes since v2.0.0-beta, please see CHANGELOG.md.
Thanks to the following for their contributions this release:
- @advorange
- @alanschapira
- @AntiTcb
- @Anu6sis
- @awulkan
- @BinkanSalaryman
- @brianebeling
- @Chris-Johnston
- @ComputerMaster1st
- @devoxin
- @Emzi0767
- @enzosk8
- @FiniteReality
- @Fyers
- @Hawxy
- @Headline
- @HelpfulStranger999
- @Izumemori
- @jaypaw549
- @Jedimaster4559
- @jmazouri
- @Joe4evr
- @JustNrik
- @Kiritsu
- @markusgordathian
- @NovusTheory
- @OatmealDome
- @ObsidianMinor
- @purpledank
- @Quahu
- @Seeker1437
- @Still34 🎉
- @SubZero0
- @vim2meta
- @Vollrat
A special thanks 🎉 to @Still34 for taking the time over the past few months to completely rewrite our documentation, and ensure that every object and member in the library is documented.
Upgrade Path
Per #731, a correct implementation of IEmote
must be used when accessing reaction users. For unicode emojis, you should use the Emoji
class; for guild emotes, either parse the emote via Emote.Parse
or fetch it from the guild.
IEmote emote = new Emoji("\U0001f603");
// or:
IEmote emote = Emote.Parse("<:fox_moose:381914721642872843>");
var reactions = await msg.GetReactionUsersAsync(emote);
Per #744, IAsyncEnumerable can be flattened into a single, non-paginated Async collection via IAsyncEnumerable#Flatten
, or can be flattened into a single IEnumerable via FlattenAsync
. All existing code should be moved from await coll.Flatten();
-> await coll.FlattenAsync();
Per #790, EmbedBuilder.AddInlineField
has been removed. You should instead use AddField(inline: true)
Per #801, all EmbedBuilders must be built prior to use in a message. All existing code should append the build method: await ReplyAsync("", embed: embed
.Build()
)
Per #804, the overridden signatures of your commands attributes will need to be refactored:
PreconditionAttribute#CheckPermissions
->PreconditionAttribute#CheckPermissionsAsync
TypeReader#Read
->TypeReader#ReadAsync
Per #829, you will need to ensure that you are in an ITextChannel
when attempting to bulk delete or access the NSFW property:
if (channel is ITextChannel text)
{
await text.DeleteMessagesAsync();
var nsfw = text.Nsfw;
}
Per #874, you should replace all accesses to (Guild|Channel)Permission.ReadMessages
with ViewChannel
Per #877, Games have been refactored and made more polymorphic.
IGuildUser#Game
->IGuildUser#Activity
StreamType
->ActivityType
StreamType.NotStreaming
->ActivityType.Playing
StreamType.Twitch
->ActivityType.Streaming
- Activities only include the name of the game and the ActivityType.
- Activities are a type of
Game
,StreamingGame
, orRichGame
- you may want to use a pattern match.
Per #955, the GameParty
class now uses long
instead of int
. Update your domain objects accordingly, if you need to.
Per #958, user tokens are no longer supported. Discord disallows and discourages their usage, so we suggest you bring your selfbot-based projects to an end, or find another Discord library which still supports user token login.
Per #1033, references to ReadMessages
should be changed to ViewChannel
. This applies to the guild and channel permissions enums, as well as the permissions sets.
Per #1057, IAudioChannel#ConnectAsync
was changed from one parameter to three parameters.
Per #1164, the CommandExecuted
event has changed signature. You may need to update your event handlers.
Per #1171, all client types now implement IDisposable
. You may need to update your own objects to match this change.
Per #1172, invite related methods were moved from IGuildChannel
to INestedChannel
. You may need to replace these channel accesses with casts to nested channels first.
Per #1196, CreateCategoryAsync
now takes a properties function before the request options. If you were specifying request options without using a named parameter before, this will need to be updated.
Added
- #747:
CommandService
now has aCommandExecuted
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
toIMessageChannel
(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 toVoiceRegion
(510f474) - #1037: Added
SocketUser.MutualGuilds
, various extension methods to commands (637d9fc) - #1043:
Discord.Color
is now compatible withSystem.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
toIGuild
(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 properl...
v2.0.0-beta
This is a beta release of the next major version. Changes have been made to fix previous design errors, as well as add additional functionality per the Discord API.
Thanks to the following for their contributions this release:
- @alanschapira
- @AntiTcb
- @BinkanSalaryman
- @Chris-Johnston
- @Emzi0767
- @enzosk8
- @FiniteReality
- @Izumemori
- @Joe4evr
- @markusgordathian
- @ObsidianMinor
- @Still34
- @SubZero0
- @vim2meta
- @Vollrat
Upgrade Path
Per #731, a correct implementation of IEmote
must be used when accessing reaction users. For unicode emojis, you should use the Emoji
class; for guild emotes, either parse the emote via Emote.Parse
or fetch it from the guild.
IEmote emote = new Emoji("\U0001f603");
// or:
IEmote emote = Emote.Parse("<:fox_moose:381914721642872843>");
var reactions = await msg.GetReactionUsersAsync(emote);
Per #744, IAsyncEnumerable can be flattened into a single, non-paginated Async collection via IAsyncEnumerable#Flatten
, or can be flattened into a single IEnumerable via FlattenAsync
. All existing code should be moved from await coll.Flatten();
-> await coll.FlattenAsync();
Per #790, EmbedBuilder.AddInlineField
has been removed. You should instead use AddField(inline: true)
Per #801, all EmbedBuilders must be built prior to use in a message. All existing code should append the build method: await ReplyAsync("", embed: embed
.Build()
)
Per #804, the overridden signatures of your commands attributes will need to be refactored:
PreconditionAttribute#CheckPermissions
->PreconditionAttribute#CheckPermissionsAsync
TypeReader#Read
->TypeReader#ReadAsync
Per #829, you will need to ensure that you are in an ITextChannel
when attempting to bulk delete or access the NSFW property:
if (channel is ITextChannel text)
{
await text.DeleteMessagesAsync();
var nsfw = text.Nsfw;
}
Per #874, you should replace all accesses to (Guild|Channel)Permission.ReadMessages
with ViewChannel
Per #877, Games have been refactored and made more polymorphic.
IGuildUser#Game
->IGuildUser#Activity
StreamType
->ActivityType
StreamType.NotStreaming
->ActivityType.Playing
StreamType.Twitch
->ActivityType.Streaming
- Activities only include the name of the game and the ActivityType.
- Activities are a type of
Game
,StreamingGame
, orRichGame
- you may want to use a pattern match.
Added
- #747:
CommandService
now has aCommandExecuted
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)
- 'html' variant added to the
EmbedType
enum (42c879c)
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)
- Ignore messages with no ID in bulk delete (676be40)
Changed
- #731:
IUserMessage#GetReactionUsersAsync
now takes anIEmote
instead of astring
(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 toEmbed
, 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 toViewChannel
(edfbd05) - #877: Refactored Games into Activities (34b4e5a)
IGuildChannel#Nsfw
moved toITextChannel
, 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)
Removed
- #790: Redundant overloads for
AddField
removed from EmbedBuilder (479361b) - #925: RPC is no longer being maintained nor packaged (b30af57)
- User logins (including selfbots) are no longer supported (fc5adca)
Misc
- This project is now licensed to the Discord.Net contributors (710e182)
- #786: Unit tests for the Color structure (22b969c)
- #828: We now include a contributing guide (cd82a0f)
- #876: We now include a standard editorconfig (5c8c784)
Another thanks to all of the users who helped maintain and update the documentation.
v1.0.2
This release contains a critical patch for channel categories.
Thanks to the following for their contributions this release:
Upgrade Path
This is a patch release and is fully compatible with 1.0.1
Fixed
- Guilds utilizing Channel Categories will no longer crash bots on the
READY
event.
v1.0.1
This release contains a number of fixes that were overlooked in the initial 1.0.0 release.
Thanks to the following for their contributions this release:
Upgrade Path
This is a patch release, and is fully compatible with 1.0.0
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)