Commit Graph

2832 Commits

Author SHA1 Message Date
Christopher F
217ec34ef0 Add sample bots to the solution (#972)
* Add sample bots to the solution

* Fix missing attributes, show use of preconditions
2018-04-29 11:16:27 -04:00
Still Hsu
73dc884d47 Improve SpotifyGame (#1039)
* Initial commit

* Add TrackUrl

* Rename AlbumArt to AlbumArtUrl for consistency
2018-04-29 11:15:24 -04:00
Still Hsu
3631886d2b Resolves #1024 (#1031)
- Replace 'var _' with simple '_' discard as well.
2018-04-29 11:14:34 -04:00
Allan
9b29c004fa Fixed GetReactionUsersAsync that was not using limit and afterUserId arguments. (#1017) 2018-04-29 11:11:44 -04:00
Still Hsu
7022149536 Fix/Implement various invite-related behaviors (#1023)
* 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
2018-04-29 11:11:05 -04:00
Joe4evr
6d3010065f Allow setting IgnoreExtraArgs on an individual basis (#998)
* Allow setting IgnoreExtraArgs on an individual basis

* Remove passing in the flag as a separate parameter

* VS plz

* Push the RunMode setting out to its own attribute, because fox wants consistency.

Bonus: Removes the need for that godawful 'RunMode.Default'.

* Revert previous commit

* Fox doesn't like module-wide switches 😒
2018-04-29 11:10:00 -04:00
Still Hsu
a3ce80c1dc Fix Embed.Length behavior (#1012)
- This commit splits up the get statement lines for better analysis.
2018-04-29 11:08:43 -04:00
Acid Chicken (硫酸鶏)
a4d1e2bc14 Fix build fails when built on macOS and Linux (#1026)
* 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)
2018-04-21 14:45:26 -04:00
Still Hsu
510f4745ea Update VoiceRegion model (#1030) 2018-04-21 14:43:00 -04:00
HelpfulStranger999
c618cb3ccd Fixes RetryMode.RetryRatelimit being ignored (#1036) 2018-04-21 14:41:16 -04:00
Joe4evr
b8b59d97ae Forward all embed-related types for non-updated addons (#1021) 2018-04-06 17:28:54 -04:00
Fyers
109f663a9a added UserDefaultAvatar to IUser (#973)
* added UserDefaultAvatar to IUser

* pass ushort as discriminator

* removed unneeded ushort.parse
2018-04-01 14:02:50 -04:00
HelpfulStranger999
c67db88961 Cleaned up and refactored slightly 2018-03-30 15:57:22 -04:00
Christopher F
b918712ad2 Cleanup of #1009 2018-03-30 15:51:28 -04:00
Paulo
6b7c6e9667 Add new overload for AddTypeReader (#1009) 2018-03-30 15:40:43 -04:00
Alex Gravely
2988b38ea8 Resolve mutability issues with EmbedBuilder. (#1010)
* Create new entities on each build call. Added Length property to EmbedBuilder.

* Resolve Length issues per #1012
2018-03-30 15:36:58 -04:00
Joe4evr
d50fc3b4e1 Throw when attempting to modify a message not made by the current user (#992)
* 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
2018-03-24 13:12:34 -04:00
Paulo
810f6d610e Fix SocketCategoryChannel properties (#945)
* Update Users property for category channels

* Wrong property being used for Channels property

CategoryId is the category that "owns" this channel. That is actually impossible right now for category channels, so it returns null and get all channels wrongly.

* Resolve permissions for category

* Remove spaces

* Small fix for IChannel.GetUsersAsync
2018-03-24 13:11:55 -04:00
advorange
6d58796f2d Added in an all value for category channels. (#952) 2018-03-24 13:11:43 -04:00
Chris Johnston
88e6244075 Add release version to docs footer, Add doc build instructions (#963)
* Add guide for building the docs

* Add version to the footer of the docs

* fix links for readme

* change formatting of doc build readme

* proper capitalization of DocFX in readme

* Remove code tags around version
2018-03-24 12:28:50 -04:00
Quahu
55299ff14f Prevents NREs when sending/modifying messages (#993) 2018-03-23 19:49:45 -04:00
Christopher F
1905fdec04 Add BanAsync extension to IGuildUser 2018-03-20 16:44:30 -04:00
Christopher F
ac5ecd365d Include the content in payload_json for file uploads
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).
2018-03-19 16:34:21 -04:00
Christopher F
bfaa6fc97a Enforce a maximum value when parsing unix timestamps (#981)
* 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
2018-03-18 16:22:27 -04:00
Christopher F
02c650773d Clean up SpotifyGame PR
- Add a helper under CDN for cover art URLs
It would be bad practice of us to leave CDN urls hardcoded in the
deserializer, would be harder to change down the line should Spotify
ever change their CDN.

I'm not entirely supportive of leaving Spotify's CDN hardcoded in our lib
either, but there's no better alternative.

- Change SpotifyGame#Artists to an IEnumerable<string>
Seems pretty common to prefer IEnumerables in place of Arrays.
2018-03-18 16:18:40 -04:00
Still Hsu
64b9cc7a53 Add Spotify track support (#970)
* 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
2018-03-18 16:06:53 -04:00
Christopher F
b9be6deb4f Move EmbedBuilder+Extensions to Discord.Net.Core
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.
2018-03-18 15:59:45 -04:00
Christopher F
b38dca7803 All arguments in ReplyAsync should be optional
To reply with just a rich embed, users have to invoke ReplyAsync with
`ReplyAsync("", embed: embed)`, which seems wasteful, when they only
need to specify the embed.
2018-03-18 15:48:34 -04:00
Christopher F
b70ae41285 AddModule(s)Async should be explicit about IServiceProvider
In f19730e4, AddModule(s)Async was changed so that the IServiceProvider
was optional, both at compile time and runtime. This had the side effect
of meaning that there was no longer a compile-time hint that users would
need to pass an IServiceProvider to AddModulesAsync. I assumed this
would not be an issue - users would recognize the runtime exception here
and self correct - but activity in our Discord support channel would
indicate otherwise.

We now require the user to explicitly opt-out of dependency injection -
they are still free to pass null in place of an IServiceProvider if they
do not intend to use one, and the library will handle this at runtime.
2018-03-18 15:35:10 -04:00
Darnell Williams
fc5e70c9dd Attempts to resolve #961 (#962)
* 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
2018-03-15 18:49:25 -04:00
Christopher F
f175dde2b3 Clean embed serialization up slightly 2018-03-13 19:16:12 -04:00
Christopher F
e9f9b484b6 Allow attaching embeds alongside a file upload. (#978)
commit a8bafb90cd1c5ea12abaa1aa01d0929833c999a8
Merge: f38dd4c4 7e04285e
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 f38dd4c42149380f3f7f86c21c86cb76d0f104b7
Author: WamWooWam <wamwoowam@gmail.com>
Date:   Mon Mar 12 08:05:49 2018 +0000

    Cleaned up & fixed code style.

commit 7e04285e5dcc0102c9b958e75155834ca35724b9
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 3f5b2c8ef16d356e7b9588c4b36af03162ab7089
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>
2018-03-13 18:28:49 -04:00
Christopher F
f9ac190e9a Don't create a service scope in CommandService#ExecuteAsync anymore
IServiceProvider does not support scopes by itself - this is a behavior
introduced by Microsoft's DI container. As such, not all DI containers
may support an IScopeFactory the way that Microsoft's DI is expecting
them to.

This also means that our builtin EmptyServiceProvider does not support
scopes - meaning that users who do not use a DI container can not invoke
commands.
2018-03-13 18:23:42 -04:00
Christopher F
e68ef63bc6 Allow GetPrefixedToken to handle the default TokenType
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.
2018-03-12 20:46:49 -04:00
Joe4evr
2fd4f5670e Remove support for TokenType.User (#958)
* 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
2018-03-12 13:59:22 -04:00
Joe4evr
170a2e00bd Resolve #936 (#941)
* Resolve #936

* Remember to not search *only* typereaders for primitives 😒
2018-03-08 16:09:34 -05:00
Michael Flaherty
8537924d9b Add Missing Parameter For WebSocket4Net Constructor (#968)
* Add missing param to constructor

This should fix `15:02:44 Gateway     System.MissingMethodException: Method not found: 'Void WebSocket4Net.WebSocket..ctor(System.String, System.String, System.Collections.Generic.List`1<System.Collections.Generic.KeyValuePair`2<System.String,System.String>>, System.Collections.Generic.List`1<System.Collections.Generic.KeyValuePair`2<System.String,System.String>>, System.String, System.String, WebSocket4Net.WebSocketVersion, System.Net.EndPoint)'.`

* Bump WS4N to latest stable
2018-03-04 13:24:09 -05:00
Alex Gravely
4edbd8d4b9 Allow nested ModuleBase classes to be built when declared from non-module classes. (#969)
* Allow modules to be built regardless of their declaring type.

* Need to exclude submodules.
2018-03-04 13:15:00 -05:00
Christopher F
f19730e433 AddModuleAsync/AddModulesAsync should not require an IServiceProvider
If one is not passed, they will default to an EmptyServiceProvider

This resolves issues where since the merging of OnModuleBuilding, users
were effectively forced to use the DI pattern, where before they were
not.

While this isn't necessarily a bad idea, we shouldn't just change this
behavior for no reason (though I assume making the IServiceProvider
argument required was a mistake)
2018-03-03 20:36:06 -05:00
Chris Johnston
63e670464f Add more tests for Permissions class (#967)
* Add tests for more Permissions code coverage

* Add guild tests

* Add more in-depth covering of permissions methods

* Add tests for OverwritePermissions

* Remove unknown ItemGroup tag from csproj

* Add missing Fact attributes, separate class so that it is not dependant on main test fixture

* Separate out GuildPermissions and ChannelPermissions tests from main partial Tests class because they do not need to have access to the main test fixture
2018-03-01 20:06:48 -05:00
Finite Reality
32ebdd51f7 Correct impl. of HasFlag and ResolveChannel (#966)
HasFlag was checking if any of the flags were set, not the ones
specified, and ResolveChannel was still treating the ChannelPermission
enum as before it was changed to a bitflag.
2018-02-28 17:46:01 -05:00
Christopher F
b1eaa44021 Don't attempt to load types with generic parameters as a module
This fixes an issue where custom ModuleBases that contained a generic
parameter would be loaded as a module - only to fail when trying to be
built.

Realistically, ModuleBases _should_ be abstract - but it was still a bug
that we allowed them to be included as a module.
2018-02-26 19:35:43 -05:00
Alex
fda19b5a8f [docs] Change 'Echos' to 'Echoes' (#964) 2018-02-24 16:01:28 -05:00
Anu6is
88765970ec Incorrect variable assignment (#959)
The username parameter was being used to set args.AvatarUrl as opposed to the actual avatarUrl parameter provided
2018-02-22 16:02:47 -05:00
Alex Gravely
500f5f434a Add request info to HttpException & RateLimitedException (#957)
* Add request info to RateLimitedException

* Remove Promise from interface.

* Add Request to HttpException.
2018-02-18 19:19:10 -05:00
Christopher F
bb8ebc13d2 Add callback method for when a module class has been added (#934)
commit 5b047bf02b4299f34172cac05dc7e4a84ecc108c
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Fri Feb 2 22:22:00 2018 +0100

    [feature/OnModuleAdded] Quickstart fixes (#946)

    * Quickstart: fix minor derp

    * Other overdue fixes

commit bd3e9eee943b9092cc45217b19ff95bae359f888
Author: Christopher F <computerizedtaco@gmail.com>
Date:   Sat Jan 27 16:51:18 2018 -0500

    Resort usings in ModuleBase

commit 8042767579b337fdae7fe48e0a6ea2f007aef440
Author: Christopher F <computerizedtaco@gmail.com>
Date:   Sat Jan 27 16:41:39 2018 -0500

    Clean up removed owned IServiceProvider

commit 30066cb102ffbd65906ead72a377811aa501abba
Author: Christopher F <computerizedtaco@gmail.com>
Date:   Sat Jan 27 16:37:22 2018 -0500

    Remove redundant try-catch around OnModuleBuilding invocation

    If this exception is going to be rethrown, there's no reason to include
    a try-catch.

commit 60c7c31d4476c498a97ae0536ec5792f08efb89b
Author: Christopher F <computerizedtaco@gmail.com>
Date:   Sat Jan 27 16:36:27 2018 -0500

    Include the ModuleBuilder in OnModuleBuilding

    This allows modules hooking into OnModuleBuilding method to mutate
    theirselves at runtime.

commit b6a9ff57860ff3bddbad7ca850fd331529cb8e6e
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 22 13:17:14 2018 +0100

    #DERP

commit f623d19c68c5642a44898a561f77ed82d53fd103
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 22 13:15:31 2018 +0100

    Resolution for #937 because it's literally 4 lines of code

commit 8272c9675b0d63b4100aaf57f5067d635b68f5e6
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 22 11:39:28 2018 +0100

    Re-adjust quickstart

commit e30b9071351b69baa30a93a4851516dca9ea43cf
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 22 11:35:08 2018 +0100

    Undo experimental changes, request IServiceProvider instance everywhere instead

commit ad7e0a46c8709e845dfacdc298a893e22dc11567
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Fri Jan 19 03:40:27 2018 +0100

    Fix quickstart leftover from previous draft

commit e3349ef3d400bb3ad8cb28dd4234d5316a80bcc4
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Fri Jan 19 03:33:46 2018 +0100

    Doc comment on items

commit 81bd9111faaf98a52679daae863ab04dce96e63e
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Fri Jan 19 03:16:44 2018 +0100

    Add comment about the ServiceProviderFactory in the quickstart

commit 72b5e6c8a149d8e989b46351965daa14f8ca318c
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Fri Jan 19 03:10:40 2018 +0100

    Remove superfluous comments, provide simpler alternative for setting the ServiceProvider.

commit 74b17b0e04e2c413397a2e1b66ff814615326205
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Tue Jan 16 18:06:28 2018 +0100

    Experimental change for feedback

commit 7b100e99bb119be190006d1cd8e403776930e401
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 15 23:34:06 2018 +0100

    * Make the service provider parameters required

    * Adjust quickstart guide to reflect changes

commit 7f1b792946ac6b950922b06178aa5cc37d9f4144
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 15 20:04:37 2018 +0100

    I..... missed one.

commit 031b289d80604666dde62619e521af303203d48d
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 15 20:02:20 2018 +0100

    Rename method to more intuitive 'OnModuleBuilding'

commit 9a166ef1d0baecd21e4e5b965e2ac364feddbe2e
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Mon Jan 15 19:09:10 2018 +0100

    Add callback method for when a module class has been added to the CommandService.
2018-02-18 19:16:38 -05:00
Alex Gravely
178ea8de4d Change GameParty size types to longs. (#955) 2018-02-17 18:38:14 -05:00
Christopher F
3b2b434258 Bump version to 2.0.0-beta2 2018-02-10 19:37:41 -05:00
Paulo
b88ce8c51f Remove IGuild.DownloadUsersAsync() from SocketGuild (#944) 2018-02-02 16:21:16 -05:00
Christopher F
73ac9d7886 Remove incomplete reconnect handler for certain session invalidations
This resolves #938 and #883

Note: This fix is not 'verified' in production (I waited over a week for
another full Discord outage and never encountered one), but I do have it
on record from b1nzy that Discord may send an OP9 with `{"d": true}`
during outages, so this would appear to be the proper fix.

The removed code seems to have been leftover from when ConnectionManager
was rewritten and never finished.
2018-01-27 16:08:01 -05:00