Commit Graph

2467 Commits

Author SHA1 Message Date
jaypaw549
dca6c33da3 fix: Update ChannelCreateAuditLogData.cs (#1195) 2018-11-28 20:17:08 -05:00
Christopher Felegy
5421df14fe feature: add extensions for bulk reactions
this is not api-level bulk reactions (!)
2018-11-27 17:49:30 -05:00
Christopher Felegy
f005af37b4 feature: add Format.Url, Format.EscapeUrl
Format.Url formats a URL into a markdown `[]()` masked URL.

Format.EscapeUrl formats a URL into a Discord `<>` escaped URL.
2018-11-27 17:31:47 -05:00
Nathan Solomon
a64ab6025b Resolve Issue #1188 (Allow Users to specify position when creating a new channel) (#1196)
* Added ability to specify position when creating a channel

* Adjusted categories to include guildproperties and allow specifying position when creating channel categories

* fixed unimplemented methods (for CreateCategoryChannelAsync) and added appropriate documentation
2018-11-27 17:16:32 -05:00
Casino Boyale
10233f3a9a fix: Fixed CommandExecuted firing twice for failed RuntimeResults (#1192)
* Fixed CommandExecuted firing twice for failed RuntimeResults

* Changed to just checking the result type

* Amendments
2018-11-20 14:16:27 -05:00
Joe4evr
419c0a5b53 feature: Add a way to invoke a command specifying optional values by name (#1123)
* Add NamedArgumentTypeAttribute

* Add NamedArgumentTypeReader

* Fix superflous empty line.

* Fix logic for quoted arguments

* Throw an exception with a tailored message.

* Add a catch to wrap parsing/input errors

* Trim potential excess whitespace

* Fix an off-by-one

* Support to read an IEnumerable property

* Add a doc

* Add assertion for the collection test
2018-11-06 18:36:44 -05:00
Alex Gravely
8ef5f8120f feature: add Add Guild Member endpoint (#1183)
* Add AddGuildMember Oauth endpoint support

* Concat RoleIds if already exists.

* Use local ids variable.
2018-11-05 18:34:09 -05:00
Still Hsu
7dd2268982 lint: Discord Namespace Clean-up (#1185)
* Remove RpcException

* Move RestConnection to Discord.Net.Rest

* Remove RpcVirtualMessageChannel

* Move REST objects to Discord.Net.Rest

* Fix Discord.Rest namespace
2018-11-05 18:32:30 -05:00
OatmealDome
c1d5152212 fix: UploadWebhookFileParams: Move most things into a json_payload (#1186) 2018-11-04 17:43:36 -05:00
Chris Johnston
8e6e0e9ad2 lint: Remove public setters for MessageApplication, MessageActivity properties (#1182)
This fixes an error that was introduced in d30d12246d (thanks Still for noticing!)

Changes the public property setters of the MessageActivity and MessageApplication entities to be
internal, since they cannot be modified by the user in the API.
2018-10-21 17:27:02 -04:00
Still Hsu
8fa70bf6a6 lint: Initial clean-up (#1181) 2018-10-21 17:26:39 -04:00
Alex Gravely
637d9fc794 Add SocketUser.MutualGuilds + various command ext. methods. (#1037)
* Add SocketUser.MutualGuilds + various ext. methods.

* Search through submodules for GetExecutableCommandAsync

* Allow GetExecutableCommandsAsync(ModuleInfo) to recurse properly to all submodules.

* Bump down lang. version & whitespace cleanup.

* Change to use Task.WhenAll

* Change to ICollection<CommandInfo>

* Resolve build errors.
2018-10-20 14:40:13 -04:00
Still Hsu
649a779c23 feature: Add invite maxAge check before attempting to create the invite (#1140)
* Add maxage check & improve maxage parameter check

* Change InvalidOperation to ArgumentOoR

* Remove HasValue check
...since it does it implicitly already.

* Add parameter names & better wording for invite OoR

* Move maxAge check to DiscordRestApiClient for consistency
2018-10-20 12:45:05 -04:00
Christopher F
f549da50e0 fix: pass the entire Exception into ExecuteResult 2018-10-20 11:01:17 -04:00
Christopher F
6260749095 fix: invoke CommandExecuted on async exception failures 2018-10-20 10:52:26 -04:00
Christopher F
fe07a83f1f fix: strip trailing slash from ratelimit bucket IDs (#1163)
* fix: strip trailing slash from ratelimit bucket IDs

This resolves #1125.

fixes a bug where some ratelimit buckets would include a trailing slash,
while others wouldn't; this would cause them to be treated as separate
ratelimits, even though they are the same

ideally this fix should change the ratelimit generator, but that code is
pretty complicated and this was an easier fix that seems less likely to
break things in the future.

tested against normal bot function, all routes are assigned the proper
buckets from my testing, so this should be good to go.

* lint: use more performant algorithm, operate on StringBuilder
2018-10-19 17:22:02 -04:00
Still Hsu
5ea1fb374e Add SyncPermissionsAsync to Sync Child Channels with its Parent (#1159)
* Initial implementation

* Adjust according to comments

See: 6e76b45713 (diff-58466c35787d448266d026692e467baa)
2018-10-19 17:21:37 -04:00
Chris Johnston
d30d12246d Update Guild and Message Models (#1165)
* Add ExplicitContentFilter property to Guild

* re-order properties to match order listed on api docs

* re-order SystemChannelId to match api docs

* Implement ApplicationId in Guild model

* Add ExplicitContentFilter property to Guild

* re-order properties to match order listed on api docs

* re-order SystemChannelId to match api docs

* Implement ApplicationId in Guild model

* Improve xmldoc for IGuild ExplicitContentFilter

* Update xmldoc

* docs "Id" -> "ID"

* rename Test.GuildPermissions to a more general Test.Guilds

* Add ExplicitContentFilter to GuildProperties

* Add a test for ExplicitContentFilterLevel modification behavior

* Implement ModifyAsync behavior

* simplify ExplicitContentFilter test

* Add RestGuild ApplicationId inheritdoc

* Implement message Activity and Application model update

* RestMessage Application and Activity implementation

* add ToString to MessageApplication

* Add IconUrl property to MessageApplication

* clean up whitespace

* another excessive whitespace removal
2018-10-19 17:20:41 -04:00
Christopher F
10f67a8098 feature: consolidate all results into CommandExecuted (#1164)
* feature: consolidate all results into CommandExecuted

This resolves #694.

This is a breaking change!
- changes the signature of CommandExecuted from (CommandInfo, ...) to
(Optional<CommandInfo>, ...), since we are now including Search result
failures in the event (and a command isn't accessible yet).

* lint: remove unfinished thoughts
2018-10-19 17:18:59 -04:00
Christopher F
8df2c1a1fb fix: don't assume the member will always be included on MESSAGE_CREATE (#1167)
* fix: don't assume the member will always be included on MESSAGE_CREATE

This resolves #1153.

Member objects are only included on a message when the user has
transitioned from an offline state to an online state (i think?), so
this change will fall back to the prior behavior, where we just create
an incomplete member object for these states.

* lint: use a ternary in place of an if/else block
2018-10-09 19:26:57 -04:00
advorange
00717cf481 Implemented GetVoiceRegionsAsync on IGuild. (#1166) 2018-10-02 16:26:35 -04:00
Still Hsu
ff0fea98a6 Documentation Overhaul (#1161)
* Add XML docs

* Clean up style switcher

* Squash commits on branch docs/faq-n-patches

* Fix broken theme selector

* Add local image embed instruction

* Add a bunch of XML docs

* Add a bunch of XML docs

* Fix broken search
+ DocFX by default ships with an older version of jQuery, switching to a newer version confuses parts of the DocFX Javascript.

* Minor fixes for CONTRIBUTING.md and README.md

* Clean up filterConfig.yml

+ New config exposes Discord.Net namespace since it has several common public exceptions that may be helpful to users

* Add XML docs

* Read token from Environment Variable instead of hardcode

* Add XMLDocs

* Compress some assets & add OAuth2 URL generator

* Fix sample link & add missing pictures

* Add tag examples

* Fix embed docs consistency

* Add details regarding userbot support

* Add XML Docs

* Add XML Docs

* Add XML Docs

* Minor fixes in documentations
+ Fix unescaped '<'
+ Fix typo

* Fix seealso for preconditions and add missing descriptions

* Add missing exceptions

* Document exposed TypeReaders

* Fix letter-casing for files

* Add 'last modified' plugin

Source: https://github.com/Still34/DocFx.Plugin.LastModified
Licensed under MIT License

* XML Docs

* Fix minor consistencies & redundant impl

* Add properties examples to overwrite

* Fix missing Username prop

* Add warning for bulk-delete endpoint

* Replace note block

* Add BaseSocketClient docs

* Add XML docs

* Replace langword null to code block null instead

- Because DocFX sucks at rendering langword

* Replace all langword placements with code block

* Add more IGuild docs

* Add details to SpotifyGame

* Initial proofread of the articles

* Add explanation for RunMode

* Add event docs

- MessageReceived
- ChannelUpdated/Destroyed/Created

* Fix light theme link color

* Fix xml docs error

* Add partial documentation for audit log impl

* Add documentation for some REST-based objects

* Add partial documentation for audit log objects

* Add more XML comments to quotation mark alias map stuff, including an example

* Add reference to CommandServiceConfig from the util docs'

* Add explanation that if " is removed then it wont work

* Fix missing service provider in example

* Add documentation for new INestedChannel

* Add documentation

* Add documentation for new API version & few events

* Revise guide paragraphs/samples

+ Fix various formatting.
+ Provide a more detailed walkthrough for dependency injection.
+ Add C# note at intro.

* Fix typos & formatting

* Improve group module example

* Small amount to see if I'm doing it right

* Remove/cleanup redundant variables

* Fix EnterTypingState impl for doc inheritance

* Fix Test to resolve changes made in 15b58e

* Improve precondition documentation

+ Add precondition usage sample
+ Add precondition group usage sample
+ Move precondition samples to its own sample folder

* Move samples to individual folders

* Clarify token source

* Cleanup styling of README.md for docs

* Replace InvalidPathChars for NS1.3

* InvalidPathChars does not exist in NS1.3; replaced with GetInvalidPathChars instead.

* Add a missing change for 2c7cc738

* Update LastModified to v1.1.0 & add license

* Rewrite installation page for Core 2.1

* Fix anchor link

* Bump post-processor to v1.1.1

* Add fixes to partial file & add license

* Moved theme-switcher code to scripts partial file
+ Add author's MIT license to featherlight javascript

* Remove unused bootstrap plugin

* Bump LastModified plugin

* Changed the path from 'lastmodified' to 'last-modified' for consistency

* Cleanup README & Contribution guide

* Changes to last pr

* Fix GetCategoryAsync docs

* Proofread and cleanup articles

* Change passive voice in "Get Started" to active
* Fix improper preposition in Commands Introduction page
* Fix minor grammar mistakes in "Your First Bot" (future tense -> present tense/subjunctive mood -> indicative mood/proper noun casing/incorrect noun/add missing article)
* Fix minor grammar mistakes in "Installation" (missing article)

* no hablo ingles

* Try try try again

* I'm sure you're having as much fun as I am

* Cleanup TOC & fix titles

* Improve styling

+ Change title font to Noto Sans
+ Add materialized design for commit message box

* Add DescriptionGenerator plugin

* Add nightly section for clarification

* Fix typos in Nightlies & Post-execution

* Bump DescriptionGenerator to v1.1.0

+ This build adds the functionality of generating managed references' summary into the description tag.

* Initial emoji article draft

* Add 'additional information' section for emoji article

* Add cosmetic changes to the master css

* Alter info box color
+ Add transition to article content

* Add clarification in the emoji article

* Emphasize that normal emoji string will not translate to its Unicode representation.
* Clean up or add some of the samples featured in the article.
+ Add emoji/emote declaration section for clarification.
+ Add WebSocket emote sample.
- Remove inconsistent styling ('wacky memes' proves to be too out of place).

* Improve readability for nightlies article

* Move 'Bundled Preconditions' section

* Bump LastModified to fix UTC DateTime parsing

* Add langwordMapping.yml

* Add XML docs

* Add VSC workspace rule

* The root workspace limits the ruler to 120 characters for member documentations and excludes folders such as 'samples' and 'docs'.
* The docs workspace limits the ruler to 70 characters for standard conceptual article to comply with documentation's CONTRIBUTING.md rule, and excludes temprorary folders created by DocFX.

* Update CONTRIBUTING.md

* Add documentation style rule

* Fix styling of several member documentation

* Fix ' />' caused by Agent Smith oddities
* Fix styling to be more specific about the mention of IDs

* Fix exception summary to comply with official Microsoft Docs style

* References
https://docs.microsoft.com/en-us/dotnet/api/system.argumentnullexception?view=netframework-4.7.2
https://docs.microsoft.com/en-us/dotnet/api/system.platformnotsupportedexception?view=netframework-4.7.2
https://docs.microsoft.com/en-us/dotnet/api/system.badimageformatexception?view=netframework-4.7.2

* Add XML documentations

* Shift color return docs

* Fix minor docs

* Added documentation for SocketDMChannel, SocketGuildChannel, and SocketTextChannel

* Add XML docs

* Corrections to SocketGuildChannel

* Corrections to SocketTextChannel

* Corrections to SocketDMChannel

* Swapped out 'id' for 'snowflake identifier

* Swapped out 'id' for 'snowflake identifier'

* SocketDMChannel amendments

* SocketGuildChannel amendments

* SocketTextChannel amendments

* Add XML docs & patch return types
+ Starting from this commit, all return types for tasks will use style similar to most documentations featured on docs.microsoft.com

References:
https://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.dbcontext.-ctor?view=efcore-2.1
https://docs.microsoft.com/en-us/dotnet/api/system.io.filestream.readasync?view=netcore-2.1
https://docs.microsoft.com/en-us/dotnet/api/system.io.textwriter.writelineasync?view=netcore-2.1#System_IO_TextWriter_WriteLineAsync_System_Char___
And many more other asynchronous method documentations featured in the latest BCL.

* Added documentation for many audit log data types, fixed vowel indefinite articles

* Change audit log data types to start with 'Contains' (verb) instead of an article

* Fix some documentation issues and document some more audit log data types

* Fix English posession

* Add XML doc

* Documented two more types

* Documented RoleCreateAuditLogData

* Document remaining audit log data types

* Added RestDMChannel documentation

* Added RestGuildChannel documentation

* Added RestTextChannel documentation

* Added RestVoiceChannel documentation

* Added RestUser documentation

* Added RestRole documentation

* Added RestMessage documentation

* Slightly better wording

* Contains -> Contains a piece of (describe article)

* [EN] Present perf. -> past perf.

* Add XML docs

* Fix arrow alignment

* Clarify supported nullable type

* Fixed a typo in ISnowflakeEntity

* Added RestUser Documentation

* Added RestInvite documentation

* Add XML docs & minor optimizations

* Minor optimization for doc rendering

* Rollback font optimization changes

* Amendments to RestUser

* Added SocketDMChannel documentation

* Added RestDMChannel documentation

* Added RestGuild documentation

* Adjustment to SocketDMChannel

* Added minimal descriptions from the API documentation for Integration types

* Added obsolete mention to the ReadMessages flag.

* Added remarks about 2FA requirement for guild permissions

* Added xmldoc for GuildPermission methods

* Added xml doc for ToAllowList and ToDenyList

* Added specification of how the bits of the color raw value are packed

* Added discord API documentation to IConnection interface

* I can spell :^)

* Fix whitespace in ChannelPermission

* fix spacing of values in guildpermission

* Made changes to get field descriptions from feedback, added returns tag to IConnection

* Added property get standard for IntegrationAccount

* Added property get pattern to xml docs and identical returns tag.

* Change all color class references to struct
...because it isn't a class.

* Add XML docs

* Rewrote the returns tags in IGuildIntegration, removed the ones I was unsure about.

* Rewrote the rest of the returns tags

* Amendments

* Cleanup doc for c1d78189

* Added types to <returns> tags where missing

* Added second sample for adding reactions

* Added some class summaries

* Missed a period

* Amendments

* restored the removed line break

* Removed unnecessary see tag

* Use consistent quotation marks around subscribers, the name for these users are dependant on the source of where they are integrated from (youtube or twitch), so we should not use a name that is specific to one platform

* Add <remarks> tag to the IGuildIntegration xmldocs

* Fix grammar issue

* Update DescriptionGenerator

* Cleanup of https://github.com/Still34/Discord.Net/pull/8

* Cleanup previous PR

* Fix for misleading behaviour in the emoji guide
+ Original lines stated that sending a emoji wrapped in colon will not be parsed, but that was incorrect; replaced with reactions instead of sending messages as the example

* Add strings for dictionary in DotSettings

* Add XML docs

* Fix lots of typos in comments
+ Geez, I didn't know there were so many.

* Add XML docs & rewrite GetMessagesAsync docs

This commit rewrites the remarks section of GetMessagesAsync, as well as adding examples to several methods.

* Update 'Your First Bot'
+ This commit reflects the new changes made to the Discord Application Developer Portal after its major update

* Initial optimization for DocFX render & add missing files

* Add examples in message methods

* Cleanup https://github.com/RogueException/Discord.Net/pull/1128

* Fix first bot note

* Cleanup FAQ structure

* Add XML docs

* Update docfx plugins

* Fix navbar collapsing issue

* Fix broken xref

* Cleanup FAQ section
+ Add introductory paragraphs to each FAQ section.
+ Add 'missing dependency' entry to commands FAQ.
* Split commands FAQ to 'General' and 'DI' sections.

* Cleanup https://github.com/RogueException/Discord.Net/pull/1139

* Fix missing namespace

* Add missing highlighting css for the light theme

* Add additional clarification for installing packages

* Add indentation to example for clarity

* Cleanup several articles to be more human-friendly and easier to read

* Remove RPC-related notes

* Cleanup slow-mode-related documentation strings

* Add an additional note about cross-guild emote usage

* Add CreateTextChannel sample

* Add XMLDocs
2018-09-30 17:44:33 -04:00
Christopher F
6b21b11f7d feature: adjust the ratelimit for reactions (#1108)
* feature: adjust the ratelimit for reactions

allows users to add reactions quickly

* fix: don't force DEBUG_LIMITS

* fix: undefined behavior using DateTime on intel architerctures

it's fine

* fix: ensure add/del rxn ends up in the same bucket
2018-09-30 17:10:10 -04:00
Still Hsu
c9ba79ec80 Initial fix (#1160) 2018-09-30 17:09:32 -04:00
Paulo
c898325e45 Fix GetReactionUsersAsync (#1151) 2018-09-28 18:22:48 -04:00
Christopher F
232f525b59 lint: refactor SlowMode -> SlowModeInterval
this was the name change i always wanted
2018-09-11 18:28:31 -04:00
Christopher F
97d17cfdda api: add slow mode
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.
2018-09-11 18:21:22 -04:00
Chris Johnston
9e9a11d4b0 Fix swapped parameters in ArgumentException, ArgumentNullException cstrs (#1139)
* 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
2018-09-06 22:08:45 -04:00
Alex Gravely
272604f275 Make voice connection properties optional. (#1129) 2018-08-30 17:38:44 -04:00
Still Hsu
82cfdffc65 Add various optimizations and cleanups (#1114)
* Change all Select(... as ...) to OfType

* Add changes according to 194a8aa427
2018-08-30 17:36:44 -04:00
Joe4evr
a2d8800115 Add == support on Color (#1126) 2018-08-30 17:29:05 -04:00
Chris Johnston
2de6cef18c Add validation to bot tokens based on string length (#1128)
* 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
2018-08-30 17:27:37 -04:00
Finite Reality
efdb4f9266 Pass our json serializer to ToObject calls (#1133)
Should fix issues in audit logs when deserializing overwrites and
similar types which we use a custom contract resolver for.
2018-08-29 17:11:26 +01:00
JustNrik
143fb2808b Update CommandAttribute.cs 2018-08-29 17:07:17 +01:00
JustNrik
c56fff9fe5 Update CommandAttribute.cs 2018-08-29 17:07:17 +01:00
JustNrik
4259b8cb0c Update CommandAttribute.cs
Nullable<T> is not valid for Attributes, this is my suggested fix.
2018-08-29 17:07:17 +01:00
Joe4evr
748e92bcda Allow FromError(Exception) on all IResult types. 2018-08-09 17:39:37 +01:00
Joe4evr
2c3e9193c2 Implement ISnowflakeEntity for Audit Log entries 2018-08-09 17:34:26 +01:00
Christopher F
c1d78189e1 core: add PrioritySpeaker to Permissions 2018-08-01 15:09:46 -04:00
Joe4evr
5dad0fa1a1 Minor fixes around OnModuleBuilding (#1116)
* Don't attempt instantiation of an abstract module
* Attempt associating a TypeReader in case one is registered late (ie. OnModuleBuilding)
2018-08-01 10:10:21 -04:00
Casino Boyale
afc3a9d063 Added GetJumpUrl() as an extension method for IMessage (#1102)
* Added GetJumpUrl() as an IMessage extension method

* Removed extra line for consistency

* Moved the namespace from Discord.Commands to Discord

* lint: remove eof newline

* lint: use TextChannel to get GuildID
2018-07-20 20:31:30 -04:00
Finite Reality
aadd6f639f Add missing fields to new MemberInfo type (#1107) 2018-07-20 20:07:29 -04:00
Still Hsu
245806fe3d Initial refactor (#1103) 2018-07-11 20:44:00 -04:00
Still Hsu
b2f0043952 Fix typo in audit log interface declaration (#1104) 2018-07-10 19:32:29 -04:00
Christopher F
beb3d46e08 gateway: Ignore PRESENCES_REPLACE dispatch
This dispatch is undocumented and only used by user accounts.
2018-07-02 21:26:07 -04:00
Still Hsu
ffe994a9df Mark guild optional in invite & general invite improvement (#1094)
* 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
2018-07-02 17:02:38 -04:00
HelpfulStranger999
4bc06a0a54 Patch lazy default readers not getting replaced (#1083) 2018-07-02 16:29:42 -04:00
ComputerMaster1st
322d46e47b Solved 4003 Authentication Error (Race Condition) (#1093)
* Solved 4003 Authentication Error (Race Condition)

* Set static interval & removed hello case
2018-06-22 21:20:53 -04:00
Builderb
aff4512fcd Update Discord.Net.Core.csproj (#1081) 2018-06-18 16:02:08 -04:00
HelpfulStranger999
033d31294f Creates full guild user object, resolves #1047 (#1078) 2018-06-18 16:00:40 -04:00