Commit Graph

515 Commits

Author SHA1 Message Date
Paulo
5934c7949a misc: VoiceRegions and related changes (#1720) 2020-12-23 12:46:12 -03:00
Fyers
dd2e524ff9 fix: Invite and InviteMetadata properties (#1639)
* fixes #1495

* keep obsolete properties and return types for compatibility

* missing properties for SocketInvite

* Restore xml docs and change obsolete message

Co-authored-by: Paulo <pnmanjos@hotmail.com>
2020-12-19 11:39:09 -03:00
Still Hsu
2cd1880228 docs: Add minor tweaks to DiscordSocketConfig docs strings 2020-12-14 12:18:58 +08:00
Still Hsu
e31cdc7586 docs: Fix MaxWaitBetweenGuildAvailablesBeforeReady docs string
Signed-off-by: Still Hsu <dev@stillu.cc>
2020-12-14 12:07:24 +08:00
Still Hsu
e0f8737c35 Add initial StyleCops style enforcement 2020-12-14 12:00:53 +08:00
Still Hsu
833ee42a1f Cleanup GatewayReconnectException docs 2020-12-14 11:59:33 +08:00
Still Hsu
13a41f8754 Mark null as a specific langword in summary 2020-12-14 11:59:32 +08:00
Still Hsu
62539f0391 Move bulk deletes remarks from <summary> to <remarks> 2020-12-14 11:59:32 +08:00
Daniel Baynton
47f571ef1c fix: SocketGuild.HasAllMembers is false if a user left a guild (#1683)
* Fix: HasAllMembers is false if a user left

* Fix: Correct boolean logic
2020-12-14 03:55:03 +00:00
vrachv
aacfea05ea feature: Add max bitrate value to SocketGuild
* Update SocketGuild.cs

* Fix returns value docs

Signed-off-by: Still Hsu <dev@stillu.cc>

Co-authored-by: Still Hsu <dev@stillu.cc>
2020-12-14 03:54:31 +00:00
Joel Liechti
e385c40fc7 docs: Update summary of SocketVoiceChannel.Users (#1714)
The inherited summary incorrectly stated that all users who _see_ the channel are returned when in reality only the ones _connected_ are.
2020-12-14 03:42:04 +00:00
Paulo
9d7cb39faa fix: Rollback Activities to Game (#1702) 2020-12-01 02:47:20 -03:00
Paulo
1e9b252e64 fix: Wrong author for SocketUserMessage.ReferencedMessage 2020-11-29 21:18:52 -03:00
Paulo
5ed01a30b6 fix: UserMentions throwing NullRef 2020-11-26 14:30:58 -03:00
Paulo
5213916903 fix: Possible NullReferenceException when receiving InvalidSession (#1695) 2020-11-25 14:27:26 -03:00
Paulo
e3850e1e8f feature: Add inline replies (#1659)
* Add inline replies

* Missed a few things

* Change xml docs, IUserMessage, and other changes

* Missed one when changing

* Fix referencedMessage author
2020-11-22 00:43:38 -03:00
Paulo
25d5d36772 feature: Send presence on Identify payload (#1688)
* Send presence on identify

* Change CurrentUser presence
2020-11-22 00:42:48 -03:00
Paulo
ec673e1863 feature: Implement gateway ratelimit (#1537)
* 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
2020-11-18 23:40:09 -03:00
Paulo
97e71cd5e5 fix: Revert PremiumSubscriptionCount type (#1686) 2020-11-18 14:52:00 -03:00
Paulo
ec212b175d feature: Add missing properties to Guild and deprecate GuildEmbed (#1573)
* 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
2020-11-17 05:23:45 -03:00
Paulo
3a1001830b misc: Missing summary tag 2020-11-17 02:11:02 -03:00
Paulo
9134443494 fix: Crosspost throwing InvalidOperationException (#1671)
* Add INewsChannel

* Renaming variable to match the new type
2020-11-08 19:29:15 -03:00
Jack Fox
1e012ac0b8 feature: Add GetStreams to AudioClient (#1588)
* Added GetStreams

* Change return type

* Change return type on the interface

Co-authored-by: Paulo <pnmanjos@hotmail.com>
2020-11-08 18:21:51 -03:00
Paulo
1ab670b3fc feature: Add INVITE_CREATE and INVITE_DELETE events (#1491)
* Add invite events (create and delete)

* Removed unused using

* Fixing IInviteMetadata properties

* Add two new fields to the gateway event

* Better event summary and remarks

* Change how to assign to target variable

Co-Authored-By: Joe4evr <jii.geugten@gmail.com>

* Applying suggested changes to TargetUserType

* Renaming NotDefined to Undefined

* Fixing xml docs

* Changed the summary style format

Co-authored-by: Joe4evr <jii.geugten@gmail.com>
2020-11-08 17:33:37 -03:00
Paulo
a2af9857ca fix: Audio stream dispose (#1667)
* Fix audio dispose

* Missed a few
2020-11-07 16:15:46 -03:00
Radka Gustavsson
a80e5ff940 (ifcbrk) feature: Add includeRoleIds to PruneUsersAsync (#1581)
* Implemented include_roles for guilds/id/prune get&post

* Unnecessary using

Co-authored-by: Paulo <pnmanjos@hotmail.com>
2020-11-07 15:55:14 -03:00
Paulo
084db253f3 fix: limit request members batch size
Discord is actually enforcing v8 limits on v6 according to https://github.com/discord/discord-api-docs/issues/2184
2020-11-06 11:30:42 -03:00
Paulo
f396cd9b92 fix: Cancel reconnection when 4014 (#1603)
* Cancel reconnection when 4014

* Missed an else
2020-10-14 18:23:00 -04:00
Paulo
fa5ef5e1c6 fix: handicap member downloading for verified bots (#1647) 2020-10-14 18:20:30 -04:00
Paulo
3085e883b7 fix: Invoke UserUpdated from GuildMemberUpdated if needed (#1623) 2020-10-14 18:05:35 -04:00
Paulo
3860da002f fix: Do not update overwrite cache locally (#1622) 2020-10-14 18:04:43 -04:00
Samuel
c1d04b4d1a fix: Handle null PreferredLocale in rare cases (#1624)
Sometimes Discord messes up and leaves a guild with a null PreferredLocale, causing an error to be thrown. This fixes that from Discord.Net's end even though it's Discord's fault.
2020-10-14 18:03:13 -04:00
Paulo
366ca9a562 fix: Parse mentions from message payload (#1621) 2020-10-14 18:02:33 -04:00
Bram
df8a0f7cd6 Fix: Not using the new domain name. (#1571)
* Fix: Using the correct discord domain.

* Fix: Using the correct discord domain.

* Docs: Using the correct discord domain.

* Fix: Changed canary and ptb to the new domain.
2020-09-04 17:56:05 +01:00
Paulo
421a0c12cc feature: support reading multiple activities (#1520) 2020-08-01 12:43:56 -04:00
Paulo
b8fa464125 fix: Stop TaskCanceledException from bubbling up (#1580) 2020-07-10 00:13:01 -04:00
Paulo
dc8c95931e fix: Incomplete Ready, DownloadUsersAsync, and optimize AlwaysDownloadUsers (#1548)
* Fix Ready and AlwaysDownloadUsers

Ready could fire before downloading all guild data and downloading guild users one guild per time without gateway intents is a waste of a gateway request that can support up to 1000.

* Reduce batchSize and fix count

* Fix typo

* Split xml docs line

Co-authored-by: Christopher Felegy <cfelegy@riseup.net>
2020-06-18 00:00:10 -04:00
Paulo
ab32607bcc (ifcbrk) fix: Add AllowedMentions to SendFileAsync (#1531)
* Add AllowedMentions to SendFileAsync

* Update xml reference and mocked channels
2020-06-17 23:51:50 -04:00
Paulo
f2130f8513 feature: Add Direction.Around to GetMessagesAsync (#1526)
* 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
2020-06-17 23:48:45 -04:00
moiph
d5d10d32cf feature: Support Gateway Intents (#1566)
* Support Gateway Intents

Allows supplying gateway intents through DiscordSocketConfig which will be passed through the IDENTIFY payload, in order to choose what gateway events you want to receive.

* Fixing enum casing

* Feedback

* Updating comment for GuildSubscriptions

* Comment update
2020-06-17 23:40:10 -04:00
Paulo
a89f0761f4 feature: Add MESSAGE_REACTION_REMOVE_EMOJI and RemoveAllReactionsForEmoteAsync (#1544)
* Add event and method

* Simplify convert to IEmote
2020-06-15 00:04:34 -04:00
Paulo
bd4672ae21 fix: InvalidOperationException at MESSAGE_CREATE (#1555)
## Summary

If PartyId isn't present, Discord.Net will throw an InvalidOperationException and not raise `MessageReceived`.
Got this a few times with my bot, stacktrace:
```
System.InvalidOperationException: This property has no value set.
   at Discord.Optional`1.get_Value() in ...\Discord.Net\src\Discord.Net.Core\Utils\Optional.cs:line 20
   at Discord.WebSocket.SocketMessage.Update(ClientState state, Message model) in ...\Discord.Net\src\Discord.Net.WebSocket\Entities\Messages\SocketMessage.cs:line 157
   at Discord.WebSocket.SocketUserMessage.Update(ClientState state, Message model) in ...\Discord.Net\src\Discord.Net.WebSocket\Entities\Messages\SocketUserMessage.cs:line 58
   at Discord.WebSocket.SocketUserMessage.Create(DiscordSocketClient discord, ClientState state, SocketUser author, ISocketMessageChannel channel, Message model) in ...\Discord.Net\src\Discord.Net.WebSocket\Entities\Messages\SocketUserMessage.cs:line 53
   at Discord.WebSocket.DiscordSocketClient.ProcessMessageAsync(GatewayOpCode opCode, Nullable`1 seq, String type, Object payload) in ...\Discord.Net\src\Discord.Net.WebSocket\DiscordSocketClient.cs:line 1210
```

After looking all properties, this is the only one that could be blamed and was already fixed for `RestMessage`s, see #1337 

## Changes

- `Value` to `GetValueOrDefault()` for `PartyId`
2020-06-15 00:02:51 -04:00
Paulo
57880de5b8 (ifcbrk) Add SearchUsersAsync (#1556) 2020-06-15 00:02:23 -04:00
Paulo
323a6775ee misc: MutualGuilds optimization (#1545)
* Check Dictionary

Check Dictionary instead of creating a new IReadOnlyCollection and looping in it

* Add Remark to MutualGuilds
2020-05-24 23:38:25 -04:00
Paulo
30b5a833d2 feature: Add GetUsersAsync to SocketGuild (#1549)
* Add GetUsersAsync to SocketGuild

* Fix IGuild return

* Do not download unless needed
2020-05-24 23:37:21 -04:00
Matt Smith
a6c1e4c23f (ifcbrk) feature: news channel publishing (#1530)
* Added PublishAsync to Messages.

* Added missing implementation.

* 1. Aligned with naming standards
2. Clarified xml docs
3. Properly threw exceptions instead of failing silently.

* Additional documentation included.

* Removed un-needed comments.

Co-authored-by: Matt Smith <v-matsm@microsoft.com>
2020-05-20 17:28:23 -04:00
Paulo
91b270a0ce fix: handle GUILD_DELETE behavior correctly (#1542) 2020-05-20 17:25:49 -04:00
TheKingEagle
03af8e0bb4 fix: Call GuildAvailableAsync for dispatch(GUILD_CREATE) case (#1473)
* Fix for Issue #1471

This change will allow `GuildAvailable` to fire when the client joins a new guild, as well as properly update `IsConnected`.

* Removed unnecessary statement;
2020-05-07 09:19:15 -04:00
Joe4evr
c68cc85895 feature: Add cache purging methods (#1478) 2020-05-07 09:16:57 -04:00
Chris Johnston
89b6b7e1a5 feature: Include allowed mentions payload on message creation (#1455)
* 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
2020-05-07 09:13:57 -04:00