* Add inline replies
* Missed a few things
* Change xml docs, IUserMessage, and other changes
* Missed one when changing
* Fix referencedMessage author
* Implement gateway ratelimit
* Remove unused code
* Share WebSocketRequestQueue between clients
* Add global limit and a way to change gateway limits
* Refactoring variable to fit lib standards
* Update xml docs
* Update xml docs
* Move warning to remarks
* Remove specific RequestQueue for WebSocket and other changes
The only account limit is for identify that is dealt in a different way (exclusive semaphore), so websocket queues can be shared with REST and don't need to be shared between clients anymore.
Also added the ratelimit for presence updates.
* Add summary to IdentifySemaphoreName
* Fix spacing
* Add max_concurrency and other fixes
- Add session_start_limit to GetBotGatewayResponse
- Add GetBotGatewayAsync to IDiscordClient
- Add master/slave semaphores to enable concurrency
- Not store semaphore name as static
- Clone GatewayLimits when cloning the Config
* Add missing RequestQueue parameter and wrong nullable
* Add RequeueQueue paramater to Webhook
* Better xml documentation
* Remove GatewayLimits class and other changes
- Remove GatewayLimits
- Transfer a few properties to DiscordSocketConfig
- Remove unnecessary usings
* Remove unnecessary using and wording
* Remove more unnecessary usings
* Change named Semaphores to SemaphoreSlim
* Remove unused using
* Update branch
* Fix merge conflicts and update to new ratelimit
* Fixing merge, ignore limit for heartbeat, and dispose
* Missed one place and better xml docs.
* Wait identify before opening the connection
* Only request identify ticket when needed
* Move identify control to sharded client
* Better description for IdentifyMaxConcurrency
* Add lock to InvalidSession
* Add missing properties to Guild, related methods, and deprecate GuildEmbed endpoints
- Add missing guild properties: `discovery_splash`, `widget_enabled`, `widget_channel_id`, `rules_channel_id`, `max_presences`, `max_presences`, `max_members`, `public_updates_channel_id`, `max_video_channel_users`, `approximate_member_count`, `approximate_presence_count`
- Update guild properties: `embed_enabled`, `embed_channel_id`
- Add `GetGuildDiscoverySplashUrl` to `CDN`
- Add classes related to the guild widget
- Add `withCounts` parameter to `GetGuild(s)Async`
- Make GuildEmbed related methods obsolete with a message redirecting to widget ones
* Change xml docs and PremiumSubscriptionCount type
* Changed some xml docs
* Add missing application properties
Add IsBotPublic, BotRequiresCodeGrant, and Team properties to IApplication
* To immutable list
* Change list to array
* Don't disable when there's no resetTick
Sometimes Discord won't send any ratelimit headers, disabling the semaphore for endpoints that should have them.
* Undo changes and change comment
* Add HttpMethod to BucketIds
* Add X-RateLimit-Bucket
* BucketId changes
- BucketId is it's own class now
- Add WebhookId as a major parameter
- Add shared buckets using the hash and major parameters
* Add webhookId to BucketIds
* Update BucketId and redirect requests
* General bugfixes
* Assign semaphore and follow the same standard as Reset for ResetAfter
fix for: https://github.com/discord-net/Discord.Net/issues/1436
`SlowModeInterval` property causes an exception for Announcement Channel feature if it is enabled on discord. Should be checked whether it is specified or not before set to property.
* Add Direction.Around to GetMessagesAsync
* Reuse the method
* Reuse GetMany
* Fix limit when getting from cache without message id
* Fix limit when getting from rest without message id
* Change cache return
It will return in a similar way to REST
The GuildHelper.CreateRoleAsync() was sending 2 requests to create a role. One to create the role, and one to modify the role that was created. This can be done in one request. So i have moved it to a single request to lower the amount of requests send to the api. This will also solve issue #1451.
If the current reset time is in the past, then somebody else in the
current bucket must have made a request before we were able to. To
prevent accidental ratelimits, we fall-back to the second sleep
branch, as if the reset time wasn't specified at all.
Additionally Extracts the minimum sleep time to a constant, and also
bumps it to 750ms.
* Feature: Allowed mentions object on msg create (interface breaking)
This change implements the AllowedMentions object for the payload of message creation. By default, the mentions behavior remains unchanged, the message content is parsed for all mentionable entities and they are all notified. If this payload is not null, it will use the content of the allowed_mentions field to determine if a role is notified, or just displayed.
This change is interface breaking. This follows the conventions of keeping RequestOptions as the last argument, but could break some users who specify each of these arguments without using named arguments.
* lint: remove commented-out code
This change removes the commented-out code which was added during testing from the previous commit.
* fix interface break: reorder allowedMentions arg so that it's after options
This change modifies the order of the AllowedMentions argument of SendMessageAsync so that this addition shouldn't be interface breaking. The downside to this change is that it breaks the convention followed by other methods, where the RequestOptions argument is normally last.
* docs: fix typo in allowedMentions arg doc
* fix interface break arg from IRestMessageChannel
* docs: update xmldoc for allowedMentions args
* fix interface breaking arg order for ISocketMessageChannel
* fix mocked classes that weren't updated
* fix: RestDMChannel#SendMessageAsync bug, allowed mentions always null
This change fixes a bug that was introduced while testing changes to the interface of the SendMessageAsync method to try and retain interface compatibility
* docs: update xmldoc for AllowedMentions type
* docs: reword xmldoc of AllowedMentionTypes type
* docs: fix typo
* fix: validate that User/Role flags and UserIds/RoleIds lists are mutually exclusive
This change adds validation to SendMessageAsync which checks that the User flag is mutually exclusive with the list of UserIds, and that the Role flag is also mutually exclusive with the list of RoleIds
* docs: reword summaries for AllowedMentions type
* Add util properties for specifying all or no mentions
Adds read only properties which specify that all mentions or no mentions will notify users. These settings might be more common than others, so this would make them easier to use.
* docs: Resolve PR comments for documentation issues/typos
* Add doc page for Named Arguments
* Implement minor stylistic changes
* Update docfx.json to support NS2.0
Signed-off-by: Still Hsu <5843208+Still34@users.noreply.github.com>
* Fix broken xref in basic-operations
* Fix broken crefs
* Fix wordings in named argument
* Fix misleading warning about long-running code
* Fix misleading CommandService summary
Signed-off-by: Still Hsu <5843208+Still34@users.noreply.github.com>
* Update copyright year and version
Signed-off-by: Still Hsu <5843208+Still34@users.noreply.github.com>
* Escape example captions
* Add warning regarding FlattenAsync for GetReactionUsersAsync
* Fix a minor grammar mistake
Co-authored-by: Joe4evr <jii.geugten@gmail.com>
This change updates the NewsChannel classes so that the overwrite permission-related properties no longer throw an Exception when they are used.
These properties were not initially supported by News/Announcement channels when the feature was first released, but now they are.
* Fix#1335 Add isMentionable parameter to CreateRoleAsync in non-breaking manner
This PR adds the isMentionable parameter to the CreateRoleAsync method
in a way that prevents it from being interface-breaking. This has been done
by adding it as an optional parameter at the end of publicly-exposed
methods.
This parameter determines if the newly created role can be mentioned as it is
created.
* Overload CreateRoleAsync methods
* Implement CustomStatusGame activity
Adds the CustomStatusGame class, which is the activity corresponding to the custom status feature.
* Remove unused import from Game.cs
* Added support for Message References
* Removed unused usings, added debugger display, updated ToString override
* Changed snowflakes to be wrapped in an optional instead of a nullable.
* Update all dependencies and deal with warning/errors
* Add updated AsyncEnumerable implementation
* Fix broken target
* Cleanup
* Remove obsolete message
* typo
* Update azure pipelines
* Update samples to .NET Core 3.0
* Pull out test change
* Install the .net core 3 SDK on the ubuntu image for the time being
* Target net core 3 for the unit tests because pipelines
* Fix#1381 Guild PreferredLocale support
Adds support for getting and modifying a guild's preferred_locale. This is a language tag in IETF BCP 47 format, which works with the built-in CultureInfo.
While Discord only supports a number of cultures, I think that this restriction should be handled at the API and not by the wrapper. (Also easier on our end)
* Add PreferredCulture to IGuild
This property was defined in RestGuild and SocketGuild, so it only makes sense to make it part of IGuild as well.