# Changelog

`16/7/2023:` **RevoltSharp v6.6.4**

* Exposed Conditions class which can now be used by users.
* Fixed UploadFileType.Emojis to UploadFileType.Emoji.
* Added RevoltPermissionException which is based on RevoltRestException.
* Added support for CreateEmojiAsync() with file path or bytes.

`16/7/2023:` **RevoltSharp v6.6.3**

* Added UploadFIleType.Emoji to use when creating emojis which was missing and breaking.

`16/7/2023:` **RevoltSharp v6.6.2**

* Add GetAvatarUrl() for PublicBot.
* Added a few missing condition checks to some requests.
* GetOrCreateSavedMessageChannelAsync() was not fetching a cached version if it existed.
* Fixed Server.GetMembersAsync() not using onlineOnly property.
* Added global extension for BigInteger.ToInt() which will get the int value or RevoltArgumentException if number is less/more than standard int, this can be used for CreateRoleAsync() and ModifyRoleAsync() where it requires an int.
* Bunch of code cleanup, formatting and tweaks.

`16/7/2023:` **RevoltSharp v6.6.1**

* Fix create emoji missing not allowed for bots condition.
* Update query builder to use string.empty and added ToString() override.
* Fixed debug config LogRestResponseJson throwing exception on startup due to using the wrong json serializer settings.

`9/7/2023:` **RevoltSharp v6.6.0**

* Fixed server default permissions update not being set for cached members.
* Fixed channel default permissions update not being set due to typo'd name.
* Added support for Member.GetPermissions(ServerChannel) which will get the permissions true/false if it can access the channel permission types.

`8/7/2023:` **RevoltSharp v6.5.9**

* Renamed User.Privileged to User.IsPrivileged for consistency.

`6/7/2023:` **RevoltSharp v6.5.8**

* Revert back to .net 6 target framework and file scoped namespaces.

`5/7/2023:` **RevoltSharp v6.5.7**

* Fixed Server.TextChannels and Server.VoiceChannels breaking due to cast type or channel collection.

`4/7/2023:` **RevoltSharp v6.5.6**

* Changed target framework to .net 5 for Visual Studio 2019 support.

`3/7/2023:` **RevoltSharp v6.5.4**

* Don't log connection closed premeturely which can cause console spam.

`28/6/2023:` **RevoltSharp v6.5.3**

* Optimized CreatedEntity and Emoji object.
* Fixed MessageEmbed.Color, EmbedBuilder.Color Embed.Color, MessageMasquerade.Color being marked nullable.
* Removed Nonce string from Message object.
* Various other nullable fixes.

`27/6/2023:` **RevoltSharp v6.5.2**

* Added .ToString() override for most core objects such as User.ToString() to get User#0001 or Role.ToString() to get role name.
* Code cleanup in some places.
* Made Emoji.CreatedAt nullable for default emojis.
* Fixed Member.CurrentUser not using display name.
* Changed User.Name to User.CurrentName for consistency.

`27/6/2023:` **RevoltSharp v6.5.1**

* Fixed Emoji ImageUrl returning invalid url on default emojis.
* Added try catch to message reactions data for potential issues.
* Made all downloadable messages fully async that may have previously caused issues.

`26/6/2023:` **RevoltSharp v6.5.0**

* Faster message sending.
* Users can now use the Const class to get a list of limits that Revolt currently uses.
* Added a ton of new condition checks and improved a lot more of them.
* Renamed ServerBanUser back to ServerBan.
* Added new rest request for GetPublicBotAsync().
* Added new rest request for GetWebhooksAsync() and extension for TextChannel.
* Added new rest request for CreateWebhookAsync().

Sending messages with webhooks is still not available yet (Disabled atm) so adding these will be a good start :)

`24/6/2023:` **RevoltSharp v6.4.1**

* Update request logger to add method and fix some methods using the old log code when using LogMode.Warn/Info.

`24/6/2023:` **RevoltSharp v6.4.0**

* Improved support for initial webhook messages.
* Updated all instances of Url to URL for consistency.
* Added client mode to Client.Mode.
* Added Message.Type for User/Bot/Webhook/System.
* Improved GetMessageAsync() with full author user when using Http mode or if not cached properly.
* Updated Message Masquerade Avatar to AvatarURL.
* Updated Logger system to include option for Info/Warn instead of Standard and improved logging functionality.
* Log messages will now get a proper color including requests if LogRestRequest is true.
* Added LogMode to config (Default is Warn)
* Added LogReducedColors to config for accessibility which will show `Warn:`/`Error:` in color instead of the entire message.

![](https://329418602-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0WbRbkSxfbbnWOLC7xpg%2Fuploads%2F4kbIEilO7M086N1u5Z8B%2FVsDebugConsole_OhZEtQhlI8.png?alt=media\&token=4c021caa-0fe3-465d-b54e-f5918f584e78)

`23/6/2023:` **RevoltSharp v6.3.8**

Added initial message support for Webhooks, this will be shown as Message.IsWebhook. The Message.AuthorId and Message.Author will also be changed to the webhook id and a webhook user with the discriminator 0000 with IsBot and IsWebhook true.

`23/6/2023:` **RevoltSharp v6.3.7**

* Updated default event argument name for updated\_properties to properties.
* Added SelfUserUpdatedProperties and UserUpdatedProperties to Update Updated and Self User Updated events.
* Added Discriminator and DisplayName to the UserUpdatedProperties.
* Fixed SelfUser profile bio and background not being updated properly in some cases.

`23/6/2023:` **RevoltSharp v6.3.6**

* Fixed DisplayName clear not being updated in user event

`23/6/2023:` **RevoltSharp v6.3.5**

* Fixed GetMessagesAsync() parameters not being applied.
* Internal tweaks and improvements.
* Added QueryBuilder class which you can also use for your own http requests!

QueryBuilder allows you to add query parameters to a url easily with a Add(key, value) and a AddIf(condition true, key, value) and then append the url with QueryBuilder.GetQuery() :)

<figure><img src="https://329418602-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0WbRbkSxfbbnWOLC7xpg%2Fuploads%2FsatGFKcUxr7g7xnthUXy%2Fdevenv_Z30YKXEoYe.png?alt=media&#x26;token=8a27cd83-d595-4684-b6a1-953031db72c2" alt=""><figcaption></figcaption></figure>

`19/6/2023:` **RevoltSharp v6.3.3**

* Fixed output response of BanUserAsync() causing exceptions.

`18/6/2023:` **RevoltSharp v6.3.2**

* Fix null ref in server member updated event.

`18/6/2023:` **RevoltSharp v6.3.1**

* Added ChannelCount, TextChannels and VoiceChannels to Server class.

`17/6/2023:` **RevoltSharp v6.2.0**

**Changes by dogsong**

* Tons of internal tweaks and cleanup.
* Fixed SelfUser GetDMChannel(), BlockUser() and UnBlockUser() not throwing properly.
* Improved GetAvatarUrl() to implement optional size and also source enum parameter for Server, User or Default.

`16/6/2023:` **RevoltSharp v6.1.3**

* Improved websocket events, cache and added a few checks to prevent null event objects.
* GetChannelAsync() will now properly populate the cache if it was missing.
* GetServerAsync() will now properly populate the cache if it was missing.
* Fixed some events such as Ready and ServerCreate not setting internal mutual servers for current cached users.\
  \
  **Changed by dogsong**
* Fixed SendFileAsync() causing issues on null content.
* Fixed documentation file paths to relative ones.

`14/6/2023:` **RevoltSharp v6.1.2**

* Fixed API returning duplicate role ids causing issues with the lib.

`14/6/2023:` **RevoltSharp v6.1.1**

* Fixed a member cache bug on message send due to invalid check on event.

`14/6/2023:` **RevoltSharp v6.1.0**

* Split up the built-in command handler into its own package now on NuGet as RevoltSharp.Commands!
* Added a package icon to both RevoltSharp and RevoltSharp.Commands
* Client.TryGet User/Role/Server/Ect have now been marked as nullable outputs.
* More code cleanup and improvements. ‎\
  \
  **Changes by dogsong**
* Cleaned up client exceptions and messages.
* Added support for cloudflare under attack mode using the CFClearance config option (Used for debugging and testing purposes)
* Updated format of the User-Agent for http requests.

`13/6/2023:` **RevoltSharp v6.0.5**

* Updated API query error messages on StartAsync() with better messages and warnings.

`13/6/2023:` **RevoltSharp v6.0.4**

* Fixed ServerMemberLeft and GroupUserLeft to remove users by ID with outdated cache objects.
* Made message author nullable if it's a system/webhook message.
* Added user flag for Spam.
* Added throwGetRequest option to Rest.SendRequest for debugging and useability.
* Improved a few error messages such as including status code for RevoltRestException message, user/bot token check and Revolt API is down.

`13/6/2023:` **RevoltSharp v6.0.3**

* Improved cache get/set when adding/removing server members on events.
* Improved cache get/set on GetMemberAsync() and GetMembersAsync().
* Fixed ServerMember causing issues due to invalid user object set check.

`11/6/2023:` **RevoltSharp v6.0.2**

* Added support for DisplayName and Discriminator.
* Added Name to get either DisplayName or Username.
* Added Tag to get Username#Discriminator.

`10/6/2023:` **RevoltSharp v6.0.1**

* Code cleanup and optimization.

`10/6/2023:` **RevoltSharp v6.0.0    (Stable)**

This is the latest stable build of RevoltSharp enjoy :)

* Switched API url from revolt dev to revolt main API due to issues and prevent downtime
* All function methods are now fully documented when using the lib.
* Fixed a few issues with some methods and better checks.
* Updated some methods with condition checks better.
* Tested various methods for issues to ensure stability.

`8/6/2023:` **RevoltSharp v5.8.1**

* Fixed GetMemberAsync() not working.

`8/6/2023:` **RevoltSharp v5.8.0**

* Added check for current user block/unblock and get dm channel function to throw a revolt exception.
* Changed User BlockUserAsync() and UnBlockUserAsync() to just BlockAsync() and UnBlockAsync().
* Added TryGet() methods for server, channel, textchannel, voicechannel, dmchannel, groupchannel, emoji and role.
* Changed all Client GetUser GetChannel method arguments from id to userId/channelId/ect.
* Fixed GetOrCreateSavedMessageChannel() not working.
* Added GetOrCreateSavedMessageChannel() to self/current user.
* Changed Message DeleteMessageAsync() to DeleteAsync().

`8/6/2023:` **RevoltSharp v5.7.1**

* Fixed major issues with send message being broken.
* Fixed message edit embeds null breaking.
* Fixed modifymember being broken.

`5/6/2023:` **RevoltSharp v5.7.0**

* Added client event OnLog to implement your own logging methods.
* Changed LogSeverity to RevoltLogSeverity so it does not conflict with other libraries.
* Improved client event code for better management.
* Added downloadable message object to OnMessageUpdated event.
* Fixed MessageUpdatedProperties and RoleUpdatedProperties not having an Id.
* Updated CreatedEntity to always have an Id property which can be better managed.
* Added CreatedAt date property to FileAttachment and ServerBan.
* Reverted optional default value false breaking some stuff.

`5/6/2023:` **RevoltSharp v5.6.1**

* Added some missing code for rest optionals request causing some methods to fail due to rewrite last patch.

`4/6/2023:` **RevoltSharp v5.6.0**

* Fixed major lib issue of sending messages not working due to a internal revolt beta api issue.
* Reworked json request serialize/deserialize to properly handle optional properties.

`26/5/2023:` **RevoltSharp v5.5.0**

* Added a bunch of xml comments to most base classes and properties.
* Removed debug option CheckRestRequest.
* Fixed bad naming of RevoltVerion :(
* Added Channels and Emojis list to client to get websocket cache.
* Fixed a few internal functions and classes being marked as public.
* Decluttered parts of the lib including the optionals extension.
* Added support for http function get or create saved message channel for the user/bot account.
* Changed RevoltRequest interface name to IRevoltRequest.
* Fixed UploadFileType enum being inside the RevoltRestClient class.

`23/5/2023:` **RevoltSharp v5.4.1**

* Updated MessageUpdatedProperties to make it fit with the Message object by changing Edited to EditedAt and fixing embeds to use proper optionals.
* Updated RoleUpdatedProperties with fixed permissions value, added role id and createdat date and changes color from string to RevoltColor.

`23/5/2023:` **RevoltSharp v5.4.0**

* Added support for UserPlatformWipe event which can be used by developers to get rid of user data for banned users and also clear the WebSocket cache.
* Added SavedMessageChannel support for the lib, WebSocket can get the current SaveMessageChannel for the bot if it was created.
* Updated DMChannel UserId to always use recipents and not fetch from a list all the time.
* Updated all system channel properties with better names from UserJoinedId -> UserJoinedChannelId.
* Updated MessageUpdatedProperties with missing message id and created date.
* Added MutualDMs cache to User object with list of DM channels and fixed HasMutuals too.
* Updated ModifyChannelAsync() to return the correct channel type casted instead of just Channel.
* Changed a bunch of rest methods from arrays to readonly collections for better performance and consistancy.
* Removed nullable annotations and null returns for a bunch of rest methods that should return lists insteads (see above too).
* Added support for bulk events.

`20/5/2023:` **RevoltSharp v5.3.0**

* Added nullable annotations to a lot of methods and properties for consistency.
* Fixed permissions in group channels not being updated.
* Fixed ServerPermissions and ChannelPermissions all value not being set.
* Fixed server owner not having all permissions by default properly due to above issue.
* ChannelPermissions will now check the base server permissions to check if it has a permission.
* Made ServerPermissions.Has(Permission) available to use in the lib.
* Add pre request checks for empty role list and not allowed for bots.
* Fixed ModifySelfAsync() not parsing user data response properly causing exception.
* Fixed ModifyChannelAsync() not parsing channel data response properly causing exception.
* Fixed some get requests not returning null properly on error.
* Added rank number option on CreateRoleAsync().

**For user accounts**

* Added CreateGroupChannelAsync(), AddUserToGroupChannelAsync() and RemoveUserFromGroupChannelAsync().

`15/5/2023:` **RevoltSharp v5.2.2**

* Added event support for OnMessagesBulkDeleted with channel and list of message ids deleted.
* Added event support for OnReactionBulkRemoved with emoji channel and downloadable message.
* Improved emoji events stability and useability.
* Added Client.RevoltVersion to get the version of revolt used after you run StartAsync().
* Changed config api url to use the new version that will get the latest updates.

`15/5/2023:` **RevoltSharp v5.2.1**

* Added a bunch more revolt error types for SocketError and RestError.
* Updated SocketError and RestError with Type for error and for rest requests that are not GET it will also include a permission name with RevoltRestException that you can catch.
* Added IsMissingPermission bool to RevoltRestException for easy check.
* Updated CreateTextChannelAsync() and CreateVoiceChannelAsync() to make description optional.
* Added message text length and user account embeds to SendFileAsync().

<figure><img src="https://329418602-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0WbRbkSxfbbnWOLC7xpg%2Fuploads%2FR9n5w13pXNkYiM7zYYEB%2Fimage.png?alt=media&#x26;token=ad23b072-6fa5-48ef-87f8-6fc9e157029d" alt="" width="449"><figcaption></figcaption></figure>

`15/5/2023:` **RevoltSharp v5.2.0**

* Added server owner check to AddRoleAsync(), RemoveRole() and ModifyMemberAsync()
* Added support for AddRolesAsync() and RemoveRolesAsync()
* Made all options for modify requests not required, ModifyMemberAsync(), ModifyChannelAsync(), content in ModifyMessageAsync() and ModifyRoleAsync()
* Fixed ModifyMemberAsync(), ModifySelfAsync(), ModifyChannelAsync() and ModifyRoleAsync() not being able to clear some values
* Added extension method for Invite.DeleteAsync(), this was only used on rest client and server before.
* Updated invite delete to use inviteCode instead of inviteId.
* Added rest function GetInviteAsync( inviteCode ) and extension method for server, there was only GetInvitesAsync() before.

`10/5/2023:` **RevoltSharp v5.1.1**

* Added more user references to member object such as mutuals and isblocked.
* Removed HasBadge() from User object since it's already in the Badges object.
* Document a bunch more properties and objects.
* Added GetServerAvatarOrUserAvatarOrDefaultUrl() for Member object.
* Fixed BotData owner not being named ownerid.
* Added string GetAvatarUrl() to User object.
* Renamed UserBadgeTypes and UserFlagTypes to sinular names.
* Added extra check for Member.GetRole() to make sure the member has the role internally.

`8/5/2023:` **RevoltSharp v5.1.0**

* Added proper UserFlags to User object with Suspended, Deleted and Banned.
* Added a HasFlag() and HasBadge() to User object.
* Added badge types for Founder, PlatformModeration, ActiveSupporter, Paw, ReservedRelevantJokeBadge1 and ReservedRelevantJokeBadge2.
* User updated will now update username, badges and flags.
* Added Created datetime utc to a bunch of objects like User, Server, Role, ect.
* Added more config safety checks.
* Added GetDefaultAvatarUrl() and GetAvatarOrDefaultUrl() for User object.
* Added GetUrl() to Attachment object which can be used for emoji images, user avatar/banner, server images and various other stuff.
* Added proper UserStatus with enum values instead of string and its own object.
* Fixed and improved user status type and IsOnline.
* Added GetDMChannelAsync() for User
* Added Deleted and Reported property to Attachment object.
* Added IsBlocked to User object.
* Fixed user relationship not being updated.
* Updated user relationship to use enum type instead of string for None, User, Friend, Outgoing, Incoming, Blocked, BlockedOther.
* Added BlockUserAsync() and UnBlockUserAsync() to User object.
* Added extension method for ServerMember IsTimedOut.
* Added GetDefaultAvatarUrl(), GetServerAvatarUrl() and GetServerAvatarOrDefaultUrl().
* Added MemberId and Joined date to ServerMember object.
* Added CurrentName to ServerMember which will get the nickname if not null or the username.
* Fixed minor issues with http mode for ServerMember and property issues.
* Added GetIconUrl() and GetBannerUrl() to Server object.

`8/5/2023:` **RevoltSharp v5.0.3**

* Fixed channel constructor being exposed and useable when it shouldn't be.
* Added a bunch more comments to objects and properties for lib users.
* Added User object to DMChannel for the current user if using WebSocket.
* Fixed Downloadable constructor being exposed and changed download function to GetOrDownloadAsync() with nullable return.
* Added Owner object to GroupChannel aside from OwnerId.
* Added extra null checks for Client.GetUser() .GetRole() .GetServer() ect just in case.
* Added Creator User object to Emoji object.
* Updated MessageInteractions and MessageReply with constructor and made properties readonly.
* Added Channel property to Invite object and added Channel and Creator (User) to InviteCreated object.
* Changed ServerSystemMessages to use UserJoinedId instead of UserJoined and added UserJoinedChannel that gets from TextChannel from websocket or null.

`7/5/2023:` **RevoltSharp v5.0.2**

* Update package properties and include docs link on RevoltClient class description and package url.

`7/5/2023:` **RevoltSharp v5.0.0**

* Fixed groupchannel internal recipents being exposed/public.
* Added nullable attributes to various properties so developers know if a property may be null.
* Added Server object to Role/ServerMember/Emoji object.
* Added Owner user object to SelfUser for bots.
* Fixed Role permissions not being null checked which may cause issues.
* Added GetOwnerAsync() to Server object which will fetch from cache or rest request.
* Fixed some cases of RevoltColor being null.
* Added serverid and server to Message object.
* Fixed Member.HasMutuals() returning false in some cases.
* Fixed DMChannel not being exposed/public and could not be casted.
* Changed DMChannel to use UserId instead of a Recipents list.
* Removed outdated description for Client.StartAsync() which can now be used in http mode.
* Fixed issue with StartAsync() for user token.
* Fixed login/token checks not being used for bot token on StartAsync().
* Added Client.CurrentUser which can be used after you run StartAsync() to get the current user/bot data.
* Added Client.OnStarted event with the CurrentUser for a successful login and can be used in http mode.
* Improved performance for Client.Servers and Client.Users with IReadOnlyCollection instead of ToArray() every time.
* Added extension methods to RevoltClient for GetDmChannel() GetGroupChannel() GetTextChannel() GetVoiceChannel() and GetRole(), it only had GetChannel()
* Fixed ReactionAdded and ReactionRemoved events not working for DM and Group channels.
* Fixed OnEmojiCreated not working.
* Fixed Client.GetEmoji() returning an empty emoji object if not in cache instead of null.
* Updated LogWebSocketFull debug option to not use events for UserUpdate, ChannelStartTyping and ChannelStopTyping.
* Improved updating of permissions in the cache and removed channel role permissions if the role has been deleted.
* Updated MessageUpdated event with better handling and properties including Server object.
* Updated ChannelUpdated, RoleUpdated and ServerUpdated with properties changed.
* Changed ChannelCreated event to be used for only server channels and changed it to use ServerChannel object.
* Added new event for DMChannelOpened which will trigger when a user first opens up the DM (or manually removes and reopens not) not every time opened.
* Fixed GroupChannelJoined event not working.
* Fixed DMChannel last message id not working.
* Added new ChannelUpdated property for Active (used for DMs)
* Fixed ServerJoined event not working at all and will cause issues for servers.

All previous versions before 5.0.0 are now defunct.
