Commit Graph

199 Commits

Author SHA1 Message Date
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
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
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
Joe4evr
2c3e9193c2 Implement ISnowflakeEntity for Audit Log entries 2018-08-09 17:34:26 +01:00
Finite Reality
aadd6f639f Add missing fields to new MemberInfo type (#1107) 2018-07-20 20:07:29 -04:00
Still Hsu
b2f0043952 Fix typo in audit log interface declaration (#1104) 2018-07-10 19:32:29 -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
NovusTheory
890904f32c Allow external VoiceChannel client API implementation (#1057)
* ConnectAsync(bool external) API implemented

This allows developers to handle the AudioClient externally (for example with Lavalink)

* Modify ConnectAsync API and add DisconnectAsync to IAudioChannel

* Update summary message on IAudioChannel.DisconnectAsync()

* Review changes:
- Fix `if (!external)` styling
- Remove unecessary ConnectAsync overload

* SocketVoiceChannel overload update

* Update IAudioChannel.ConnectAsync()
- Remove ConfigAction from parameters
- Add SelfDeafen/SelfMute to parameters

* Remove SocketVoiceChannel.ConnectAsync() default params (Inherit)
2018-05-31 22:21:57 +01:00
Christopher F
a718a7d3c2 cleanup: Remove ChannelHelper#IsNsfw
Closes #1074

This code was not referenced anywhere in the active codebase.
2018-05-28 12:45:49 -04:00
FiniteReality
683b3f2701 Mark ChannelHelper.IsNsfw Obsolete
Discord no longer treats channels prefixed with 'nsfw' as NSFW,
so we no longer need to have this check.
2018-05-28 17:12:28 +01:00
Chris Johnston
f9cbff5e42 Fix #995, Move Category Implementation from IGuildChannel to INestedChannel (#1004)
* 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
2018-05-26 14:06:35 -04:00
FiniteReality
4d8764e124 Refactor RoleInfo types into separate classes
- 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.
2018-05-26 14:11:49 +01:00
Hawx
bbbac85c46 Update Dependencies and support NS2.0 builds (#1046)
* 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
2018-05-25 08:14:28 -04:00
Still Hsu
bc6009ec72 Implement IMessageChannel#DeleteMessageAsync (#996)
* Implement DeleteMessageAsync

* Refer to MessageHelper instead of duplicating call

* Fix refactor error
2018-05-24 20:08:51 -04:00
Christopher F
5023357a60 codefix #1020: RequestOptions should always be sorted last 2018-05-24 19:36:33 -04:00
Joe4evr
bf5275e071 Add ability to specify parameters on channel creation (#1020)
commit 07bca5b31a3580d55278878eabb56a82973f8c8f
Author: Joe4evr <jii.geugten@gmail.com>
Date:   Fri Apr 6 09:44:50 2018 +0200

    Add ability to specify parameters on channel creation
2018-05-24 19:36:00 -04:00
HelpfulStranger999
0ba8b063ad Makes text parameter of sending messages optional (#1042)
commit 114e5b431b26669bcdaac9f84792a216ad67186f
Author: HelpfulStranger999 <helpfulstranger999@gmail.com>
Date:   Sat Apr 28 19:08:35 2018 -0500

    Fixes lack of default value for tts

commit 1fd8c70c5346ff0c4fdb0093c0fc7fb4b3c8db2c
Author: HelpfulStranger999 <helpfulstranger999@gmail.com>
Date:   Sat Apr 28 15:21:11 2018 -0500

    Makes text parameter of sending messages optional
2018-05-24 19:23:44 -04:00
HelpfulStranger999
79811d0e61 Paginate reactions - solved #1007 (#1022)
* 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
2018-05-24 18:35:38 -04:00
Finite Reality
39dffe8585 Audit Logs implementation (#1055)
* 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.
2018-05-12 20:46:07 -04:00
Still Hsu
97c893107b Implement GetBanAsync (#1056) 2018-05-06 18:22:49 -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
Still Hsu
510f4745ea Update VoiceRegion model (#1030) 2018-04-21 14:43:00 -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
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
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
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
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
ObsidianMinor
5bbd9bba82 Renamed existing Flatten method to FlattenAsync and added new Flatten method. Also fixed ClientHelper using incorrect guild batch count. (#744) 2018-01-06 22:43:11 -05:00
Chris Johnston
edfbd055bb Fix #854 Added ViewChannel enum and property to channel permissions (#874)
* Fix #854 Added ViewChannel enum and property to channel permissions

* replaced usages of ChannelPermission#ReadMessages with ViewChannel

* rename parameter of ChannelPermissions constructor

* made OverwritePermissions#ReadMessages obsolete, use ViewChannel instead

* Fix #854 Added ViewChannel enum and property to channel permissions

replaced usages of ChannelPermission#ReadMessages with ViewChannel

rename parameter of ChannelPermissions constructor

made OverwritePermissions#ReadMessages obsolete, use ViewChannel instead

* renamed readMessages parameter in ChannelPermissions constructor and Modify

* fixed channel permission tests to use ChannelPermission enum instead of GuildPermission enum

* replaced usages of readmessages in channel permission tests

* resolve build warnings for permission tests
2018-01-06 22:35:17 -05:00
BinkanSalaryman
804d9188e7 Fix flawed bulk message deletion (#872)
* Fix flawed bulk message deletion

https://github.com/RogueException/Discord.Net/issues/871, consider changing DeleteMessagesParams.MessageIds type to I(Readonly)List<ulong> or IEnumerable<ulong> to avoid unnecessary copying (batch.ToArray())

* Update code formatting
2018-01-06 22:33:00 -05:00
Christopher F
030422fa1d Add support for channel categories (#907)
commit a85c5814a74e473e95fe172f0379cbc7f9f951d8
Author: Christopher F <computerizedtaco@gmail.com>
Date:   Sat Jan 6 22:25:48 2018 -0500

    Code cleanup

commit 4b243fd3dd99152b4ebc7ee01d704bd8e57eeee1
Author: Christopher F <computerizedtaco@gmail.com>
Date:   Sat Jan 6 22:08:28 2018 -0500

    Add support for channel categories (#907)

    commit 41ed9106f2b05530acbf06b245c9aa618011d815
    Author: mrspits4ever <spits.lucas@gmail.com>
    Date:   Thu Dec 14 20:02:57 2017 +0100

        removed mentioning support for RestCategoryChannel, added channels property to SocketCategoryChannel

    commit 71142c310847886dff80c49e9357dd0786d67a1b
    Merge: 4589d731 678a7238
    Author: mrspits4ever <spits.lucas@gmail.com>
    Date:   Wed Dec 13 21:17:53 2017 +0100

        Merge branch 'dev' of https://github.com/RogueException/Discord.Net into feature/channel-categories

    commit 4589d73187871c98485ed25c6d223706927af7ec
    Author: mrspits4ever <spits.lucas@gmail.com>
    Date:   Wed Dec 13 21:17:46 2017 +0100

        adressed requested changes

    commit d59b038efa048b2279602e2015ddd2c185e58d63
    Author: pegasy <pegasy@users.noreply.github.com>
    Date:   Mon Sep 25 18:53:23 2017 +0200

        Renamed classes / properties / methods to use CategoryChannel instead of ChannelCategory to be consistant with how text / voice channels are named.

    commit 5c4777dc8cc443108f2e7e4afae98824c9a32b1f
    Author: pegasy <pegasy@users.noreply.github.com>
    Date:   Sun Sep 24 19:08:25 2017 +0200

        removed Guild from class name for ChannelCategory
        Renamed all properties to use Category instead of Parent
        Throw exception on GetUsers / GetInvites etc for categories

    commit e18bd8c799d2327270021c05866cb2e97ad4671b
    Author: pegasy <pegasy@users.noreply.github.com>
    Date:   Sun Sep 24 15:49:51 2017 +0200

        Add support for channel categories (as its own channel type)
2018-01-06 22:27:51 -05:00
Chris Johnston
227f61aa4e Allow null value to reset IGuildUser nickname (#923)
* Added workaround for UserHelper#ModifyAsync that accepts null values as a way to reset user nicknames

* Update comments

* Update comment to use see tag
2018-01-05 20:24:21 -05:00
Alex Gravely
7b2ddd027c Add missing REST Webhook implemenation (#843)
* Add Webhook API models, REST implementation, and Socket bridges.

* Remove token overrides from REST.

Leaving that as a Webhook package only feature.

* Add Webhook API models, REST implementation, and Socket bridges.

* Remove token overrides from REST.

Leaving that as a Webhook package only feature.

* Webhook core implementation.

* Webhook REST implementation.

* Webhook client implementation.

* Add channel bucket id.
2017-12-23 15:17:20 -05:00
Christopher F
a19ff188e9 Added support for animated emoji (#913)
* Added support for animated emoji

This was such a useful feature Discord, I'm glad you added this instead
of fixing bugs.

* Fix bugs in emote parser

* Added unit tests for emotes
2017-12-23 15:09:24 -05:00
Christopher F
34b4e5a6d2 Refactor Games, support reading Rich Presences (#877)
* Add API-level support for Rich Presences

* Add library-level support for Game presences

* Add model conversions for outgoing+incoming rich presences

* Refactored Game into Activities

* Integrated Activities with user entities

rebase hell from 5f3cb947a92f4fd01cc4df47ca548180036b47f3

* Fix JSON converters for Activities

* Finish rebase, activity should be set on BaseSocketClient

* Use ApplicationId to define a rich presence

* Added SetActivityAsync to Base and Sharded Socket clients

* Remove public parameterless Game constructor

* Remove GameAssets, refactored to GameAsset

* Hide constructors for types that should be read-only

* Revert changes to Discord.Net.sln

got damned visual studio caching

* Refactor GameParty to use dedicated current/capacity values

Per feedback from @khionu
2017-12-23 14:58:35 -05:00
Mateusz Brawański
b4bf046ad4 Implemented emoji endpoints (#835)
* Implemented emoji endpoints.

* Fixed: now using API entities for REST client.

* Removed emoji listing endpoint, as per @foxbot's request.
2017-11-20 15:02:42 -05:00
Christopher F
9979a027d5 Change default InviteAge to 24 hours
Resolves #859
2017-11-10 15:39:33 -05:00
enzosk8
da335b95c4 Fix general typos (#852) 2017-11-05 22:05:19 -05:00
Alex Gravely
e00f17fe55 Move DeleteMessagesAsync from IMessageChannel to ITextChannel (#829) 2017-10-01 15:37:13 -04:00
Chris Johnston
30e867a183 Implement welcome message channels (#819) 2017-09-23 17:00:08 -04:00
Alex Gravely
ec03883e26 Create unspecified channel object for unknown channel types (#811)
* Partial fix of #810, addresses critical connection issues.

* Implement fix for REST.

* Implement fix on RestChannel.
2017-09-09 15:56:03 +01:00
Mark Gross
479361bbea Condense redundant AddField overloads in EmbedBuilder (#790)
* Remove extra AddField overload in EmbedBuilder

* Remove AddInlineField()
2017-08-29 19:38:34 -04:00
Christopher F
4846264074 Add IsNsfw to TextChannelProperties 2017-08-29 17:42:00 -04:00
Christopher F
608bc359ee Removed IChannel#Nsfw, added to ITextChannel 2017-08-29 17:26:36 -04:00
Christopher F
5d7f2fc7ec Add GetReactionUsersAsync(IEmote) overload (#731)
* Add GetReactionUsersAsync(IEmote) overload

Resolves #730

* Remove obsolete GetReactionUsersAsync(string) overload
2017-08-29 17:09:28 -04:00
Joe4evr
94f7dd2ab8 Remove EmbedBuilder -> Embed implicit conversion (#801) 2017-08-29 16:51:41 -04:00
Christopher F
1ffcd4bfa7 Changed Guild#DefaultChannel to resolve the first accessible channel (#777)
* Changed Guild#DefaultChannel to resolve the first accessible channel

Resolves #776

This change is inline with hammerandchisel/discord-api-docs#329

RestGuild#DefaultChannelId is now obsolete and will throw a
NotSupportedException.

* RestGuild#DefaultChannelId will fall back to the guild ID

Adding an exception here would be a breaking change, so this was agreed
to fall back to the previous behavior, which would just return the guild
ID.
2017-08-28 16:49:16 -04:00
Christopher F
182f00f8ce Reworked IChannel.IsNsfw to support the new API flag (#771)
IChannel.IsNsfw will now return false when being used on any channel
that is not an ITextChannel. When being used on an ITextChannel, this
will now account for the API flag, and fall back to the channel name.

(this is gross design, thanks discord)
2017-08-28 16:45:53 -04:00