This adds the following property to ITextChannel
- SlowMode (int)
The SlowMode field defines the time in seconds users must wait between
sending messages; if zero, slow-mode is disabled.
Bots are not affected by slow-mode, and as such, no changes need to be
made to the REST client's internal ratelimiting. This is strictly a
read/write cosmetic property for bots.
* Fix swapped parameters in ArgumentException and ArgumentNullException cstrs
The constructors of ArgumentException and ArgumentNullException are inconsistent with each other, which results in their parameters being swapped here and there.
* Use named parameters for ArgumentException constructors
Cleans up some of the methods of EmbedBuilder to use simpler syntax as well
* Add input validation for bot tokens based on their length
* Add token validation to BaseDiscordClient#LoginAsync
Adds a TokenUtils class which is used to validate that tokens are correct
* Revert changes to DiscordRestApiClient
* Add Unit tests to the TokenUtils class, fix a logic error that was caught by those tests
* Allow for API to throw exceptions
Moves the validation of tokens to be inside of LoginInternalAsync, and writes a Warning to the console when the supplied tokens are invalid
* Mark guild as optional for invite
* Mark partial InviteMetadata members as Optional<T>
* Some of them aren't sent when requesting through the general GET invite endpoint
* Remove GetInviteParams
* It was kinda stupid in the first place, might as well always get the count instead of having to ask the user whether they want the two fields filled or not.
* Add ChannelType property
* Add vanity invite support
* Fix#995 ICategoryChannel.CategoryID throws NotSupportedException
* Add tests
* change run mode of TestChannelCategories
* Add throw for GetCategoryAsync
* Add xml doc explaining why exception is thrown
* Add test coverage for text and voice channel categories
* initial implementation of INestedChannel
* more implementation of INestedChannel design
* Add case in RestChannel Create for Category type
* set the CategoryID for RestVoiceChannel
* rewrite channel category tests to work with existing pattern
* remove outdated todo
* Make IVoiceChannel implement INestedChannel
* remove redundant interface implementation
* Add c#7 feature from feedback
* Remove redundant GetCategoryAsync methods from socket entities
* Added configureawait to async methods
* change signature of interface GetCategoryAsync
* Add check for cachemode in rest channel GetCategory
* remove redundant IGuildChannel interface from ITextChannel and IVoiceChannel
- Fixes indentation with a few files (looks like a bad copy+paste job)
- Renames RoleInfo to RoleEditInfo
- Moves RoleInfo from MemberRoleAuditLogData into its own class
All of this should improve docs.
* Update deps, fix test warnings.
* Support ns2.0
* Fix typo
* Remove ns1.1 support
* Net.Http and Net.Websockets.Client are not needed in ns2.0
* Move to net46 per volt
* Remove ns1.3 constants
commit 114e5b431b
Author: HelpfulStranger999 <helpfulstranger999@gmail.com>
Date: Sat Apr 28 19:08:35 2018 -0500
Fixes lack of default value for tts
commit 1fd8c70c53
Author: HelpfulStranger999 <helpfulstranger999@gmail.com>
Date: Sat Apr 28 15:21:11 2018 -0500
Makes text parameter of sending messages optional
* Cleaned up and refactored slightly
* Resolves#971
* Adds support for default avatars and resolves#971
* Amendment
* Final amendment
* Paginating reactions
* Amendments based on feedback
* Further amendment based on review
* Final(?) amendment
* Removes default limit and after user id
* Removes fromUserId; cleans up model creation; replaces function with individual parameters
* Copy audit logs impl from old branch and clean up
I suck at using git, so I'm gonna use brute force.
* Remove unnecessary TODOs
Category channels do not provide any new information, and the other
I forgot to remove beforehand
* Add invite update data, clean up after feedback
* Remove TODOs, add WebhookType enum for future use
WebhookType is a future-use type, as currently audit logs are the only
thing which may return it.
* Initial support for invite member count arg
* Fix IDiscordClient#GetInviteAsync behavior
- Previously, the GetInviteAsync method would return null since it couldn't be parsed as a simple RestInvite object. The object should be a RestInviteMetadata instead.
* Fix methods that didn't comply with the interface
* Change with_counts REST behaviour
* Remove unnecessary JSON prop
* Remove AcceptAsync
* Add EditorConfig
* Add basic .NET style rules
* Add naming rules
* Add some more extension
* Add target of the internal fields
* Fix build fails when built on macOS and Linux
* Use 'Condition' attributes
refs: 6f29dda78b (r181371650)
* Throw when attempting to modify a message not made by the current user
* Didn't realize the client is passed into the MessageHelper function
* Respond to feedback
This resolves#987
Previous behavior was that even if `null` was passed for an embed in
UploadFileAsync, the Embed property on UploadFileArgs was still
specified - this meant we were always sending a payload_json.
If a payload_json is specified, it seems like Discord will only read
from the payload_json, and will ignore properties set outside of it.
To prevent unnecessary code duplication, this commit always specifies
parameters in the payload_json, and also will only include the embed if
one was actually specified with real data (not null).
* UnixTimestampConverter should now obey a maximum value
This change prevents an issue where the converter would be unable to
handle obscenely large timestamp values - which are actually quite
common on Discord.
OptionalConverter had to be rewritten to support checking whether or not
an InnerConverter returned an Optional. The perf impacts from this
_shouldn't_ be too bad, as types without a custom parser (which should
be the majority of Optionals in the lib) will bypass the type-check.
* optimizations on OptionalConverter
* Initial Spotify support
* Remove GameAsset#ToEntity
- appId doesn't seem to be necessary, and Spotify Game doesn't return appId either.
* Implement SpotifyGame details
* Implement song Duration prop
* Add album art CDN
* Fix ActivityType
* Remove payload debug
* Add changes according to review
+ Make `ApplicationId` nullable
+ Move ctor after props
Previously it was implemented under Discord.Net.Rest, which seems
inconsistent and unnecessary.
This also allows Commands docstrings to reference EmbedBuilder, since
Commands only has a dependency on Core.
* Move REST requests to appropiate class
* Add call to ClientHelper and expose to public API
* Expose shard count request in public api
* Expose method from interface
* Update sharded client to utilize the new method
* Method is already implemented in a base class
* Refactor name to fit pattern for methods returning a `Task`
* Adds missing ConfigureAwait
* Corrects unnecessary whitespace
* Removes unneeded whitespace
commit a8bafb90cd
Merge: f38dd4c47e04285e
Author: WamWooWam <wamwoowam@gmail.com>
Date: Mon Mar 12 08:05:52 2018 +0000
Merge branch 'dev' of https://github.com/WamWooWam/Discord.Net into dev
commit f38dd4c421
Author: WamWooWam <wamwoowam@gmail.com>
Date: Mon Mar 12 08:05:49 2018 +0000
Cleaned up & fixed code style.
commit 7e04285e5d
Author: Thomas May <wamwoowam@gmail.com>
Date: Sun Mar 11 14:11:28 2018 +0000
Revert changes to DefaultRestClient
Didn't actually need to change this, whoops.
commit 3f5b2c8ef1
Author: WamWooWam <wamwoowam@gmail.com>
Date: Sat Mar 10 19:30:44 2018 +0000
Enabled embeds alongside uploaded files.
God damn Discord is a mess.
Co-authored-by: WamWooWam <wamwoowam@gmail.com>
This prevents an issue where no clients could be constructed.
In 2fd4f56, the case for user tokens was removed from GetPrefixedToken,
which means that the default value for TokenType would now fallthrough
to the default case, which throws an error.
* Set usage of TokenType.User as an error rather than a warning.
* Remove commented sections and #pragma's
Additionally, changes use of ReadMessages to ViewChannel since that Obsolete was also suppressed by the pragma
This resolves#931
As part of this change, StreamingType has been refactored to realign
with how Discord seems to define the 'type' field on activities now.
StreamType is renamed to ActivityType, and the following properties have
been changed:
- NotStreaming -> Playing
- Twitch -> Streaming
Additionally, the StreamType property/parameter has been removed from
StreamingGame, and moved up a scope to Game.
Normal Games may now set their type, to line up with changes in
Discord's official clients.
Resolves#918.
For some reason (that i'm sure will bite me in the ass later), we
configured Json.Net with a time format that forced UTC - even when the
API appends a timezone to the timestamp. Removing the custom time format
seems to resolve this issue.