An unofficial .Net wrapper for the Discord API (https://discord.com/)
MIT License
Bot releases are visible (Hide)
Published by quinchs over 2 years ago
This release contains a few bug fixes related to the library itself.
Thanks to the following contributors for this release
Published by quinchs almost 3 years ago
This release contains new features of the Discord API and general library fixes. It also adds a new config option called DefaultRatelimitCallback
allowing you to view your ratelimits.
Thanks to the following for their contributions in this release:
This is a minor release, and is compatible when recompiling from v3.1.0
Published by quinchs almost 3 years ago
This release brings with it bug fixes as well as guild member timeouts.
Full Changelog: https://github.com/discord-net/Discord.Net/compare/3.0.0...3.1.0
Published by quinchs almost 3 years ago
This release implements greatly anticipated features such as Interactions, Stage channels, Threads, and more. You can get support for all the new features in the Official Discord.Net Discord server.
Small bugs are expected to be present but this release has been tested on Discord.Net Labs.
Thanks to the following for their contributions in this release:
This version is a MAJOR release, please check out the v2 -> v3 guide on some breaking changes that have been made.
Published by SubZero0 over 3 years ago
This release contains new features of the Discord API and general library fixes.
It'll fix the wrong rest requests being done at MESSAGE_REACTION_REMOVE_EMOJI that could cause ratelimit issues ( #1835 ).
Thanks to the following for their contributions in this release:
This is a minor release and it is compatible when recompiling from v2.2.0
It adds a few new methods to some interfaces.
Published by SubZero0 over 3 years ago
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:
This is a patch release and it is compatible when recompiling from v2.3.0
Published by SubZero0 over 3 years ago
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:
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:
PruneUsersAsync
(a80e5ff)AllowedMentions
to webhook SendMessageAsync
and SendFileAsync
(bd4516b)AllowedMentions
to SendFileAsync
in IMessageChannel
types (ab32607)MessageReference
to SendMessageAsync
and SendFileAsync
(e3850e1)INVITE_CREATE
and INVITE_DELETE
events (1ab670b)MESSAGE_REACTION_REMOVE_EMOJI
event and RemoveAllReactionsForEmoteAsync
(a89f076)GetUsersAsync
to SocketGuild
(30b5a83)IGuild
and deprecate GuildEmbed (ec212b1)includeRoleIds
parameter to PruneUsersAsync
(a80e5ff)GetStreams
to IAudioClient
(1e012ac)GuildPermission
(2592264)MessageFlags
and AllowedMentions
to message modify (225550d)IsPending
property to IGuildUser
(8b25c9b)SocketGuild
(aacfea0)SearchUsersAsync
to IGuild
(57880de)SlowModeInterval
property (468f826)AllowedMentions
and AllowedMentionTypes
(3325031)AllowedMentions
to SendFileAsync
(ab32607)GuildEmbed.ChannelId
as nullable per API documentation (971d519)MESSAGE_CREATE
(bd4672a)AllowedMentions
to webhooks (bd4516b)OverwritePermissions
(4b389f3)DownloadUsersAsync
(084db25)SocketGuild.HasAllMembers
is false if a user left a guild (47f571e)SocketUserMessage
(5ed01a3)<summary>
to <remarks>
(62539f0)Published by foxbot over 5 years ago
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:
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
Emote.Equals
now pays no respect to the Name property, since Discord's API does not care about an emote's name (abf3e90)Emote.GetHashCode
now pays no respect to the Name property, see above (1b54883)EmbedType.Unknown
, rather than throwing an error and dropping the message (d287ed1)null
as GuildUserProperties.Channel
(fc48c66)IMessage.Tags
now includes the EveryoneRole on @everyone and @here mentions (1f55f01)3.2.0
(3e65e03)Published by foxbot over 5 years ago
This release contains implementations of new Discord features, as well as bug and stability fixes.
Thanks to the following for their contributions this release:
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
});
MessagesBulkDeleted
event (dec353e)guilds.join
scope may now add users to guilds through any client (1356ea9)GetCategoryChannel
helper may now be used to retrieve category channels directly from socket guilds (e03c527)ExclusiveBulkDelete
configuration setting can be used to control bulk delete event behavior (03e6401)IGuildUser
overload of EmbedBuilder.WithAuthor
no longer exists (b52b54d)MESSAGE_CREATE
concerning partial member objects no longer occur (377622b)DiscordSocketRestClient
is now properly initialized (a44c13a)Published by foxbot almost 6 years ago
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:
This is a patch release, and is fully compatible with v2.0.0
Published by foxbot almost 6 years ago
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:
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.
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
Game
, StreamingGame
, or RichGame
- 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.
CommandService
now has a CommandExecuted
event (e991715)NameAttribute
(9c81ab9)BaseSocketClient
(9b7afec)EmbedBuilder
using the .ToEmbedBuilder()
method (5218e6b)OnModuleBuilding
method, which is invoked when the module is built (bb8ebc1)GetRecommendedShardCountAsync
(fc5e70c)GetDefaultAvatarUrl
to user (109f663)VoiceServerUpdate
events are now publically accessible (e775853, 48fed06)DeleteMessageAsync
to IMessageChannel
(bc6009e)TimeSpan
TypeReader which "doesn't suck" (b52af7a)IsDeprecated
, IsCustom
properties to VoiceRegion
(510f474)SocketUser.MutualGuilds
, various extension methods to commands (637d9fc)Discord.Color
is now compatible with System.Drawing.Color
(c275e57)GetBanAsync
(97c8931)GetJumpUrl()
to messages (afc3a9d)Color
now has equality (a2d8800)GetVoiceRegionsAsync
to IGuild
(00717cf)GuildEmote#CreatorId
(92bf836)EmbedType
enum (42c879c)BanAsync
to guild members (1905fde)FromError
(748e92b)DiscordShardedClient#GetGuildFor
will now direct null guilds to Shard 0 (d5e9d6f)IRole.Mention
will correctly tag the @everyone role (6b5a6e7)CreateGuildAsync
will include the icon stream (865080a)Embed.Length
should now yield the correct results (a3ce80c)RetryMode.RetryRatelimit
were ignored (c618cb3)SocketWebhookUser
(6a7810b)GetShardIdFor
(7cfed7f)GetReactionUsersAsync
now uses the correct pagination constant (c898325)PRESENCES_REPLACE
update is received (beb3d46)IUserMessage#GetReactionUsersAsync
now takes an IEmote
instead of a string
(5d7f2fc)IGuild#DefaultChannel
will now resolve the first accessible channel, per changes to Discord (1ffcd4b)EmbedBuilder
will no longer implicitly convert to Embed
, you must build manually (94f7dd2)zlib-stream
compression (759db34)ReadMessages
permission is moving to ViewChannel
(edfbd05)GameParty
model will now use long values (178ea8d)IgnoreExtraArgs
behavior (6d30100)ReadMessages
permission bit is now named ViewChannel
(5f084ad)SendMessageAsync
is now optional (0ba8b06)ConnectAsync
now allows users to handle the voice connection elsewhere, such as in Lavalink (890904f)maxAge
parameter before making the request (649a779)CommandExecuted
(10f67a8)IDisposable
(7366cd4)IGuildChannel
to INestedChannel
(a3f5e0b)IGuildChannel#Nsfw
moved to ITextChannel
, now maps to the API property (608bc35)ReplyAsync
have been made optional (b38dca7)AddField
removed from EmbedBuilder (479361b)Another thanks to all of the users who helped maintain and update the documentation.
Published by foxbot over 6 years ago
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:
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
Game
, StreamingGame
, or RichGame
- you may want to use a pattern match.CommandService
now has a CommandExecuted
event (e991715)NameAttribute
(9c81ab9)BaseSocketClient
(9b7afec)EmbedBuilder
using the .ToEmbedBuilder()
method (5218e6b)EmbedType
enum (42c879c)DiscordShardedClient#GetGuildFor
will now direct null guilds to Shard 0 (d5e9d6f)IRole.Mention
will correctly tag the @everyone role (6b5a6e7)CreateGuildAsync
will include the icon stream (865080a)IUserMessage#GetReactionUsersAsync
now takes an IEmote
instead of a string
(5d7f2fc)IGuild#DefaultChannel
will now resolve the first accessible channel, per changes to Discord (1ffcd4b)EmbedBuilder
will no longer implicitly convert to Embed
, you must build manually (94f7dd2)zlib-stream
compression (759db34)ReadMessages
permission is moving to ViewChannel
(edfbd05)IGuildChannel#Nsfw
moved to ITextChannel
, now maps to the API property (608bc35)AddField
removed from EmbedBuilder (479361b)Another thanks to all of the users who helped maintain and update the documentation.
Published by foxbot about 7 years ago
This release contains a critical patch for channel categories.
Thanks to the following for their contributions this release:
This is a patch release and is fully compatible with 1.0.1
READY
event.Published by foxbot over 7 years ago
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:
This is a patch release, and is fully compatible with 1.0.0