Compare commits

...

1854 Commits

Author SHA1 Message Date
Amish Shah
ebfbf20f07 Bump to 11.4.2 2018-08-13 15:19:21 +01:00
Souji
3021e5ce7f Docs: document ChannelData.parent and .permissionOverwrites, fix typedefs to not include Collection of ChannelCreationOverwrite (#2734)
* document ChannelData.parent

* document ChannelData.permissionOverwrites

* Overwrites also take other things, account for it

* note to self: stop copy-pasting

* remove eslint madness, fix param defs

* fix property slip
2018-08-13 15:17:09 +01:00
Schuyler Cebulskie
b5df8603e8 Update version in web builds example 2018-08-12 17:01:32 -04:00
Kolkies
8b1bb95b1a docs: update for 11.4.0 (#2727)
* Update for 11.4.0 docs
2018-08-12 13:20:08 -05:00
Lewdcario
6775684ff0 chore: update typings & bump version 2018-08-12 13:14:52 -05:00
Lewdcario
d772bff632 fix(ClientDataManager): replacing channels unecessarily 2018-08-12 11:50:01 -05:00
SpaceEEC
8adfc97409 docs(Client): actually fix rateLimit's event params 2018-08-11 09:38:58 +02:00
Amish Shah
72bb9cb532 voice deps: fix prism-media requirement 2018-08-09 22:40:31 +01:00
Lewdcario
0e370d7a4c docs: fix client#rateLimit parameters 2018-08-09 14:58:17 -05:00
Lewdcario
7126cade45 fix: richEmbed#_apiTransform fields 2018-08-09 13:52:50 -05:00
Lewdcario
bef07152c8 chore: update typings & bump version 2018-08-09 11:47:52 -05:00
Amish Shah
16331d9e85 chore: update typings 2018-08-09 17:34:59 +01:00
Souji
bafbee9677 docs: small changes regarding permissions/overwrites (#2718)
* Add Collection as param to GuildChannel#replacePermissionOverwrites

* Add example for null to PermissionOverwriteOptions

* eslint-disable max-len

* PermissionOverwriteOptions desc. change default to unset

* deprecated allow/deny in favor of allowed/denied
2018-08-09 10:52:59 -05:00
Lewdcario
6da423fc07 backport: Permissions#toArray 2018-08-08 22:17:08 -05:00
Lewdcario
1e5b5b83c8 backport: GuildChannel#permissionsFor(role) 2018-08-08 22:16:46 -05:00
Lewdcario
c76f3048af backport: TextChannel#bulkDelete accepts Snowflake[] 2018-08-08 17:14:52 -05:00
Souji
af6d649510 docs: change for GuildChannel#replacePermissionOverwrites (#2714) 2018-08-08 16:09:39 -05:00
SpaceEEC
c7f379f51d docs(RichEmbed): timestamp is actually a Date 2018-08-07 21:46:54 +02:00
SpaceEEC
4a48a7d621 docs(ShardingManager): respawnAll actually resolves with a collection of shards keyed by numbers 2018-08-07 21:36:03 +02:00
Lewdcario
c33ab1ea61 backport: add PRIORITY_SPEAKER permission 2018-08-03 19:09:09 -06:00
Lewdcario
87b4b23596 backport: fix circular conversion when editing RichEmbed 2018-08-03 15:33:51 -06:00
Lewdcario
b63948e14e backport: RichEmbed#attachFiles 2018-08-02 15:06:27 -06:00
Lewdcario
4a9c2f8884 fix(Emoji#fetchAuthor): reject with Error rather than TypeError 2018-07-26 14:35:26 -06:00
Lewdcario
41f6eaa635 backport: Message#url getter 2018-07-26 11:22:29 -06:00
Lewdcario
95a2d25b7d chore: deprecate userbot methods 2018-07-26 11:18:41 -06:00
Lewdcario
d685e39af4 backport: add rejection for Emoji#fetchAuthor if managed
Signed-off-by: Lewdcario <isabellafj97@gmail.com>
2018-07-26 10:24:26 -06:00
Lewdcario
96011cf68f backport: make Webhook token not enumerable 2018-07-26 09:51:47 -06:00
Isabella
488b1eb4ee backport: Sharding utility methods (#2672) 2018-07-25 12:08:08 -04:00
Lewdcario
6d70da5b1e backport: fix circular conversion in RichEmbed 2018-07-23 22:41:07 -06:00
Lewdcario
e4da97e058 eslint: re-enable eslint after disabling max-len 2018-07-23 14:34:38 -06:00
SpaceEEC
fbbd8f43b3 chore: update typing submodule 2018-07-22 20:37:38 +02:00
SpaceEEC
886c21223e fix(GuildAuditLogs): default to PartialGuildChannel if channel deleted (#2605) 2018-07-18 11:38:59 +02:00
Gymnophoria
a97b5040e6 docs(Client): clarify messageReactionRemove event's user description (#2657)
* Clarify messageReactionRemove user description

* Update MessageReactionRemove.js

* wait one more word difference lol
2018-07-18 11:37:36 +02:00
Lewdcario
524a15df0b backport: Permissions improvements 2018-07-17 21:49:21 -05:00
Lewdcario
0702a0fcda backport: DefaultMessageNotifications 2018-07-17 21:32:24 -05:00
SpaceEEC
1d9edec567 fix(Message): keep reply option when replying with an embed or attachment
Fixes #2651
2018-07-08 21:40:12 +02:00
Amish Shah
d81441f627 voice: null-check UDP socket 2018-07-03 14:15:27 +01:00
Amish Shah
695ff1e70f voice: fix #2635 (channel bitrate not being set) 2018-07-02 19:45:35 +01:00
Lewdcario
a667e44c4d fix(Client): login catch 2018-07-01 10:05:56 -05:00
Lewdcario
3d82ca901b docs: improvements in various places
* Client#login example consistency

* add warning to Client#fetchApplication

* incorrect WEBHOOK_DELETE value
2018-06-29 19:38:20 -05:00
Lewdcario
448f38429d fix(Client): login not properly rejecting on invalid token 2018-06-29 19:38:06 -05:00
Lewdcario
3fa9ed1f42 backport: deleted property 2018-06-29 19:11:50 -05:00
Lewdcario
72346fb47e fix(TextBasedChannel): bulkDelete should not return non-Promise 2018-06-29 17:32:56 -05:00
Camzure
7ce1d1642c docs: only cached messages emit reaction events (#2607)
* wording improvement

* wording improvement for docs

* docs: wording

* wording

* user account only: docs

* Edited

* Edited

Signed-off-by: SpaceEEC <spaceeec@yahoo.com>
2018-06-21 21:40:52 +02:00
SpaceEEC
8a3ae875bb fix: do not cache webhook users (#2611)
Goal in mind is to not save the name and avatar used by webhooks because
those can change between messages without any other update.
2018-06-21 21:34:30 +02:00
SpaceEEC
bd3d8d48c0 docs(GuildMember): joinedAt is nullable
See: ecf6e2b62d
2018-06-21 21:24:53 +02:00
RumbleFrog
493ba73037 fix(ShardClientUtil): send method's promise erroneously rejecting (#2604)
Patches the remaining ones that were missed in eef4a4ad17
2018-06-17 08:21:51 +02:00
reeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
507cce3ff4 docs: document lastMessageID for TextChannel and (Group)DMChannel (#2602)
* Adds JSDocs for TextChannel.lastMessageID

* oops

* docs: document lastMessageID in (Group)DMChannel as well
2018-06-16 22:10:24 +02:00
Lewdcario
6de5acbac3 backport: RichPresence 2018-06-09 15:37:01 -05:00
Lewdcario
ecf6e2b62d fix(GuildMember): mark joined as nullable 2018-06-09 15:15:08 -05:00
Lewdcario
caa4104b95 docs: GuildMember#speaking
closes #2540
also improves consistency
2018-06-05 00:31:06 -05:00
Lewdcario
f238883046 fix(MessageReaction): fetchUsers inconsistency
Unlike TextChannel#fetchMessages, this method returned the cache rather than the fetched items, so in interests of consistency, this does as well now
closes #2574
2018-06-05 00:31:03 -05:00
Lewdcario
eef4a4ad17 fix(Shard): erroneously returning false
The node documentation fails to correctly document when the backlog of unsent messages exceeds a certain threshhold the function will return false. This does not mean it will refuse to send- simply that it will take time. Issue in point: https://github.com/nodejs/node/issues/7657#issuecomment-240581726
2018-06-05 00:31:00 -05:00
Lewdcario
c699888780 docs: add examples & improve notices 2018-06-05 00:30:50 -05:00
Lewdcario
0387d34ab4 fix(VoiceChannel): deletable erroneously returning true 2018-06-04 17:18:27 -05:00
Adrien Brignon
13880fe7de docs(Guild): handle error in example of fetchInvites correctly (#2568) 2018-05-27 20:59:12 +02:00
SpaceEEC
f23b61794c fix(ClientUser): correctly resolve nicks to an object in createGroupDM 2018-05-25 17:23:09 +02:00
SpaceEEC
f456f4c3c0 feat(Collection): backport partition method
Commit: a732402c95
PR: #2511
2018-05-25 16:49:10 +02:00
SpaceEEC
f921261f3f fix(docs): remove duplicated Collection#findAll docstring
Also added intended @ deprecated decorators
2018-05-25 16:44:49 +02:00
Lewdcario
6070b22382 docs: using deprecated version of find 2018-05-13 04:41:58 -05:00
Lewdcario
b2d1cb6a3d docs: permissions 2018-05-12 00:51:08 -05:00
Lewdcario
09ddbcb88a chore: deprecations 2018-05-12 00:40:12 -05:00
Lewdcario
6f02be2b2e docs: rateLimit event 2018-05-11 23:21:39 -05:00
Lewdcario
0d90798c6c backport: rateLimit event 2018-05-11 20:55:31 -05:00
Lewdcario
379061987c fix: burst request mode hanging permanently 2018-05-11 19:27:34 -05:00
1Computer1
de7d90ada3 feat(Collection): add tap method (#2507)
* Add Collection#inspect

* No u

* Rename to tap

* Rename variable

* Do it here too
2018-05-09 16:46:54 +02:00
bdistin
2b6592ed54 feat(Collection): add sweep method (#2528) 2018-05-09 16:42:28 +02:00
SpaceEEC
9bb8831619 feat(GuildMember): add manageable getter 2018-05-09 16:38:28 +02:00
SpaceEEC
99041671f0 feat(GuildChannel): add fetchInvites method
Backported from commit: 47bc0fc51e
PR: #2339
2018-05-09 16:28:40 +02:00
SpaceEEC
dd7eedbd48 feat(Emoji): add fetchAuthor method
Backported from commit: e0cbf0bb60
PR: #2315
2018-05-09 16:20:41 +02:00
SpaceEEC
c0ca73a40c feat(Game): add toString method
Backported from commit: 016526486c
PR: #2313
2018-05-09 16:08:59 +02:00
SpaceEEC
15a8e17710 fix(Guild): memberCount not decrementing when an uncached member leaves
Backported from commit: 93e083da4f
2018-05-09 16:07:20 +02:00
SpaceEEC
54913d9edb feat(GuildChannel): add setNSFW method
Backported from commit: 0fc9459450
PR: #2050
2018-05-09 16:04:49 +02:00
Gus Caplan
9169958264 feat(Guild): add verified getter (#2027) 2018-05-09 15:52:00 +02:00
SpaceEEC
96b115ef7b feat(ClientDataResolver): add 2 basic role colors
Commit: 3a3ca96b0d
PR: #2303
2018-05-08 22:35:35 +02:00
Will Nelson
2d831269ab feat(Permissions): add valueOf method (#2363) 2018-05-08 22:30:27 +02:00
Jonah Snider
e5e59cce32 docs(Role): Change 'the this' to this (typo) (#2377)
Commit: 8b679913a4
2018-05-08 22:27:58 +02:00
Pascal
ae28f52e0d fix(ClientDataResolver): always resolve with a buffer when fetching a file
Commit: 85413481ed
2018-05-08 22:25:49 +02:00
SpaceEEC
9264511092 docs(ClientUser): correct warning for createGuild method
Backported from: 2bf68dcdfb
PR: #2453
2018-05-08 22:06:07 +02:00
SpaceEEC
2f2e28183b fix(Role): allow role color to be removed
Backported from: f985b6bef3
PR: #2447
2018-05-08 22:05:56 +02:00
SpaceEEC
54fa5f644f docs(GroupDMChannel): fix top 'an user' -> 'a user' 2018-05-08 20:14:23 +02:00
bdistin
b757f9ef2d docs(Collection): fix spelling of 'behavior' (#2529) 2018-05-08 19:07:49 +02:00
Kyra
bd9c9ce4e0 refactor(VolumeInterface): remove usage of deprecated new Buffer (#2531) 2018-05-08 18:55:52 +02:00
SpaceEEC
60288d0704 fix(Collector): increase and decrease max listeners dynamically 2018-05-08 11:57:12 +02:00
SpaceEEC
ed8ab91782 feat(Emoji): add deletable getter
Backport for commit: fca6d3be56
From PR: #2535
2018-05-08 11:35:14 +02:00
SpaceEEC
21326f67a0 feat(ClientDataResolver): account for discord.gg/invite/<code> invites 2018-05-04 18:49:53 +02:00
Kyra
8700e965c5 feat(DiscordAPIError): backport method property (#2536) 2018-05-03 22:47:50 +02:00
Kyra
a89de09855 fix(RESTMethods): remove listener from correct event (#2534) 2018-05-03 17:56:10 +02:00
SpaceEEC
a85d801a12 fix(ClientUser): setActivity should resolve with a Presence 2018-05-01 20:27:05 +02:00
Amish Shah
5f50d9e627 voice: backport null key fix 2018-04-29 18:53:50 +01:00
SpaceEEC
33a4232652 fix(OpusEngineLinst): throw a descriptive error when not funding an opus engine 2018-04-28 14:30:14 +02:00
SpaceEEC
d9a091f674 feat(SnowflakeUtil): allow snowflakes to be generated dynamically 2018-04-27 20:34:48 +02:00
SpaceEEC
44fefdfa49 fix(Util): reject with a meaningful error instead of throwing one 2018-04-27 20:16:46 +02:00
Amish Shah
b05622766b voice: start using provided IP rather than manually resolving 2018-04-27 15:25:05 +01:00
Isabella
49ad8cc2cc feat(GuildChannel): add manageable getter (#2439)
* Adds GuildChannel.manageable

* Resolve requested changes

* fix eslint max-len error

* Fix for nullable permissionsFor()

* Indent fixes
2018-04-26 01:31:52 -05:00
bdistin
7b9e84dff5 feat(Guild): add mfaLevel property (#2451) 2018-04-26 01:28:59 -05:00
Lewdcario
384e96d51e backport: docs improvements 2018-04-26 01:25:44 -05:00
Isabella
d7e7803178 docs: (backport) Bring the main doc pages up to date, and add more examples (#2094) 2018-04-26 01:13:44 -05:00
bdistin
feb0991c46 fix: use Object.keys instead of Object.values for node 6 (#2487) 2018-04-20 21:11:27 +02:00
SpaceEEC
ff671b2f3c fix(RestMethods): typo timeout -> timed 2018-04-19 13:53:44 +02:00
SpaceEEC
b60ee25038 fix(MessageEmbed): avoid throwing error when accessing colorless hexColor 2018-04-19 13:14:20 +02:00
SpaceEEC
3ba26ad972 fix(Message): do not update editedTimestamp when there is none in the payload
Fixes #2307
2018-04-19 13:13:50 +02:00
SpaceEEC
de78a8d0b4 fix(RESTMethods): verify correct member in add and remove role listeners
Fixes #2480
2018-04-19 13:13:28 +02:00
SpaceEEC
7c37a0d386 fix(MessageDeleteBulkAction): remove bulkDeleted messages from cache
Fixes #2382
2018-04-19 11:50:30 +02:00
Lewdcario
c387e96078 fix: Client#generateInvite resolving permissions incorrectly 2018-04-18 20:30:24 -05:00
Lewdcario
7c0b6173dd fix: Role#setPermissions resolving & docs 2018-04-18 19:57:16 -05:00
Lewdcario
92b421607e fix: GuildChannel#setTopic not nullable 2018-04-18 19:35:28 -05:00
iDroid
f3ae7fd638 Fixed JSDoc owner thing (#2473)
Added a `?` before `GuildMember`, the `owner` property may be undefined in some cases.
2018-04-18 19:25:28 -05:00
sekwah41
6e5b674338 Fixed updateChannel being too protective (#2460)
If I am not mistaken the only way atm to remove a channels parent atm is to do this to get the null value through the code.

channel.client.rest.methods.updateChannel({id:channel.id, name:channel.name,
            topic:channel.topic,position:channel.position,
            bitrate:channel.bitrate,userLimit:channel.userLimit,parent:{id:null}}, {});

This fixes the method allowing channel.setParent(null); to work
2018-04-13 14:03:18 +02:00
Amish Shah
e5bd6ec150 11.3.2 2018-03-04 18:08:54 +00:00
Gus Caplan
c8f78b2bf0 fix(ws): set correct ratelimit remaining after reset or destroy (#1806) 2018-03-04 12:44:31 +01:00
Schuyler Cebulskie
419a2eea3f Bump version to 11.3.1 2018-03-03 15:38:24 -05:00
Schuyler Cebulskie
a3cec3bc1f We must not be like Todd Howard 2018-03-03 15:36:59 -05:00
iCrawl
ad93b90cd9 update typings 2018-03-03 02:53:24 +01:00
Lewdcario
8f9e911b5f fix: RichEmbed timestamp cloning 2018-03-02 18:52:43 -06:00
Lewdcario
363ead922a fix: bulkDelete discarding non-cached messages 2018-03-02 12:17:10 -06:00
Lewdcario
96e88f3cef docs: incorrect returns 2018-03-01 22:38:55 -06:00
Lewdcario
fcdffcf623 docs: improvements & examples 2018-03-01 20:47:18 -06:00
Lewdcario
acdf43a872 fix: GuildAuditLogs using Guild#fetchInvites 2018-03-01 20:37:19 -06:00
Lewdcario
38f5288be8 docs: Message#type 2018-03-01 20:12:14 -06:00
Lewdcario
f64e924f0d fix: export CategoryChannel 2018-03-01 20:09:05 -06:00
Pascal
f2c5714751 fix(StreamDispatcher): remove gratuitous parentheses 2018-03-01 19:12:15 +01:00
FireController1847
ced93fe826 Specify that Client#uptime is "in milliseconds" (#2288) 2018-03-01 18:25:17 +01:00
Gus Caplan
7f5c1038db fix websocket ratelimits (#2014) 2018-03-01 18:25:00 +01:00
Gus Caplan
af75e43900 proper fix for #1685 (#1805)
* Update WebSocketConnection.js

* Update WebSocketConnection.js

* Update WebSocketConnection.js

* Update RESTManager.js
2018-03-01 17:50:07 +01:00
Lewdcario
b79722a77b docs: remove trailing commas 2018-02-27 17:43:51 -06:00
Lewdcario
2b24b10246 docs: trailing commas 2018-02-27 11:13:56 -06:00
Isabella
af3517594f docs: improvements 2018-02-27 10:43:31 -06:00
Pascal
c6f92c1bc5 fix: if present, wait for libsodium-wrappers' ready to support v0.7.3 2018-02-26 11:35:51 +01:00
Kyra
b7851bad37 perf(Collection): Performance improvements (#2342)
* Update Collection.js

* ESLint
2018-02-21 22:03:40 +01:00
Sanctuary
0ec53c9d6f docs: Add links for the guide (#2346) 2018-02-21 21:42:35 +01:00
Pascal
dc92582eb4 fix(ReadyHandler): don't create new guild instances for already existing guilds
See: #2319, #2332
2018-02-21 21:41:02 +01:00
Pascal
be40858e32 chore: update typings submodule 2018-02-19 16:26:30 +01:00
iCrawl
5454a074ee revert: changes to node 8 2018-02-17 18:19:56 +01:00
iCrawl
2254a3ee11 fix: build with node 8 2018-02-17 18:13:01 +01:00
iCrawl
da14e33ff7 fix: add node 8 to build 2018-02-17 18:11:28 +01:00
iCrawl
a7b46be923 fix: webpack minified and bump deps 2018-02-17 18:01:20 +01:00
Lewdcario
40a2f093aa fix(VoiceChannel): setUserLimit defaulting to wrong value 2018-02-13 10:43:38 -06:00
David Siaw
8ee2788baf fix(StreamDispatcher): properly check that timestamp fits in 2^32-1 (#2325)
* fix a very strange bug caused by massive timestamps sent to discord

* remove 'gratituous' spaces
2018-02-11 08:35:46 +01:00
Pascal
3df3741922 backport/fix(GuildDelete): disconnect voice and cleanup GuildChannels 2018-02-05 13:03:43 +01:00
Pascal
96904b1826 fix(AudioPlayer): add opus to destructured key of stream options
This fixes #2079 (VoiceConnection#playOpusStream being broken)
2018-02-05 10:42:47 +01:00
Lasse Niermann
1f14758e0c docs(ClientUser): mark email field as user account only property (#2306)
* Store Mail - User Account Only

Added that info

* docs(ClientUser): mark email field as nullable
2018-02-01 20:06:59 +01:00
Lewdcario
52c402faea fix(resolveColor): not interpreting DEFAULT correctly 2018-01-28 19:04:55 -06:00
Lewdcario
e978253896 fix(Webhook#send): incorrect docs + return
Two things:
* Documentation doesn't account for possible raw object return
* Allows the return to be a Message object as well, like the docs originally intended
2018-01-24 13:06:05 -06:00
Pascal
8df1ac9920 fix(startTyping): return, to not overwrite already existing entries 2018-01-22 14:09:27 +01:00
Cynthia Lin
00e2f39ea1 fix(client#voiceConnections): Incorrect docs description (#2280) 2018-01-20 22:09:39 -06:00
Pascal
b5ff309bf9 fix(CategoryChannel): set the type to 'category' and document its type 2018-01-20 23:27:18 +01:00
Schuyler Cebulskie
6e10d258b6 Tweak readme and docs welcome page 2018-01-18 20:16:59 -05:00
Schuyler Cebulskie
aafb291ce2 Update typings submodule URL 2018-01-18 19:45:04 -05:00
Schuyler Cebulskie
51ddd6595c Update repository references 2018-01-18 14:40:02 -05:00
Schuyler Cebulskie
bb8ed98a85 Merge remote-tracking branch 'origin/11.3.1-dev' into 11.3-dev 2018-01-18 14:32:36 -05:00
Amish Shah
c49c5576d0 Point discord.js-docgen dependency to its new location 2018-01-18 17:56:46 +00:00
MaySoMusician
8cbefcc081 [v11.3.x] Fix param to setPresence in setActivity (#2270)
ClientUser#setPresence in master branch (latest) calls client.presences.setClientPresence, but that in v11.3 does not
so i change parameter sent to setPresence for clearing the game activity, from activity:null to game:null,
for now until setPresence gets updated
2018-01-18 02:39:54 -06:00
Isabella
932980e91f fix(guild#createRole): incorrect guild reference 2018-01-16 08:28:08 -06:00
Schuyler Cebulskie
2c8eb8a1ec Fix grammar 2018-01-14 19:03:21 -05:00
Amish Shah
c4b1be8506 i didnt even want to update deps but no here we are updating deps for a version nobody will use because they all use v12 2018-01-13 20:39:47 +00:00
Schuyler Cebulskie
4584148706 Merge branch '11.3-dev' of https://github.com/hydrabolt/discord.js into 11.3-dev 2018-01-13 14:22:10 -05:00
Schuyler Cebulskie
0b28998af8 Update docs 2018-01-13 14:22:05 -05:00
Amish Shah
c27ecf678e Update dependencies 2018-01-13 18:52:20 +00:00
Amish Shah
233889cf3a Update typings 2018-01-13 17:28:20 +00:00
Isabella
f62fa05389 fix(Message#addReaction): incorrect regex (#2247) 2018-01-13 17:22:23 +00:00
Isabella
2efe2d28f2 fix(Channel#startTyping): less breaking (#2232)
* fix(Channel#startTyping): less breaking

* silent

* appelation suggestion

* space suggestion
2018-01-11 16:18:40 +00:00
Frangu Vlad
0821acfa99 Fix iter issues (#2237) 2018-01-09 21:17:46 +01:00
Isabella
d94ead70f8 fix(avatarURL): gifs not being animated (#2195) 2018-01-05 21:33:50 +00:00
Isabella
8226752098 fix(voiceStateUpdate): incorrect members.size (#2231) 2018-01-05 21:28:57 +00:00
Michel Nguyen
e883afa0ee docs: fix guildChannel#toString() example (#2203)
* fix the docs

* don't log something what you don't log
2018-01-04 01:17:40 +01:00
SpaceEEC
659e89e8cd feat: backport animated emojis support (#2217)
Commit: 84e4dd6a99
2018-01-04 01:16:50 +01:00
Isabella
c79823002b docs: improve examples (#2200)
* docs: improve examples


another

* remove conflict

* some nuances

* backport
2018-01-04 01:14:36 +01:00
SpaceEEC
db5bdcd855 feat: backport after and before parameter when fetching a reaction's users (#2218)
Commits:
- f40a5e9f88
- 5cd42695ae
2018-01-04 01:07:14 +01:00
Isabella
b3eb1bba24 backport(Channel#startTyping): returns Promise (#2208) 2018-01-04 01:02:22 +01:00
bdistin
7a89598795 Update welcome.md (#2173) 2017-12-31 20:22:58 +01:00
Isabella
b6c89ef638 fix(verson): update package.json (#2196) 2017-12-31 20:19:42 +01:00
Yukine
fc5d4438f8 backporting the fix for RTP header extensions (#2185) 2017-12-23 12:29:06 +01:00
Isabella
6683c40a6f fix(bulkDelete): stop rejections when filterOld=true (#2178)
* fix(bulkDelete): stop rejections when filterOld=true

* gus suggestion
2017-12-21 09:31:47 +01:00
Isabella
9f0417c09d fix(Guild#createChannel): default to text (#2168)
update docs


doc fixes


real fix


stuf
2017-12-12 06:33:48 +01:00
Isabella
1c34819d47 fix(UserGuildSettingsUpdate): not creating settings with new guilds (#2150) 2017-12-06 07:10:30 +01:00
Isabella
862b2ec3d4 Backport: Guild#createChannel (#2145)
* Backport: Guild#createChannel

* this should not return a buffer
2017-12-06 07:08:46 +01:00
Isabella
d705a0c7d0 fix(VoiceChannel#edit): incorrect bitrate (#2144) 2017-12-04 05:38:06 +01:00
Isabella
fb6d14d099 fix(guild#createChannel): new channel returning null (#2143)
forgot to return channel.
2017-12-04 05:37:51 +01:00
bdistin
6a222ec6e9 Backport: erlpack dep fix (#2142) 2017-12-01 18:50:33 +01:00
Isabella
cd066849ad feature(ClientUser): deprecate ClientUser#setGame in favour of ClientUser#setActivity (#2127)
* feature(ClientUser): backported ClientUser#setPresence

* fix ternary

* deprecation stuff
2017-11-29 23:29:37 -05:00
Isabella
e40c3f8cd0 fix(GuildAuditLogs): backport (#2123) 2017-11-21 09:45:26 +01:00
Isabella
22da595b50 fix(DMChannel): messages not being cached (#2122) 2017-11-21 09:43:53 +01:00
Isabella
cce2480bb5 feature(CategoryChannel): backport (#2117)
* feature(CategoryChannel): backport


fix


no

* ????

* bad ternary
2017-11-19 23:19:46 -05:00
Isabella
b274dba6ec fix(GuildMember): permissions.missing is not a function (#2118) 2017-11-18 17:10:59 -05:00
Gus Caplan
69b7d5d58e Fix #1903 (#1904) 2017-09-07 16:25:55 +01:00
Cynthia Lin
97b013de46 Fix whitespace in 11.2.0 welcome docs. (#1887) 2017-09-04 18:36:43 -04:00
Amish Shah
d9f772cdc1 11.2.1 2017-09-03 19:54:59 +01:00
Amish Shah
42c195c857 Merge branch '11.1-dev' into stable 2017-09-03 18:13:53 +01:00
iCrawl
77c54a94f2 Fix typo in landing page 2017-09-03 18:42:57 +02:00
iCrawl
4778a47cd4 Update docs landing page 2017-09-03 18:40:49 +02:00
iCrawl
18de265fcc lock version numbers, prepare release 2017-09-03 18:03:13 +02:00
iCrawl
a47c30e31a update submodule 2017-09-03 17:58:46 +02:00
bdistin
0d6b7ce641 Fix deny administrator edge case bug
(backport from permissions cleanup)
2017-09-03 17:43:15 +02:00
Crawl
9cdd494db6 Revert "Fix deny administrator edge case bug (#1878)" (#1879)
This reverts commit dbe1ae972b.
2017-09-03 17:41:07 +02:00
bdistin
dbe1ae972b Fix deny administrator edge case bug (#1878)
(backport from permissions cleanup)
2017-09-03 16:39:27 +01:00
SpaceEEC
4df2adc801 Backporting #1863, allowing the afk and systemchannel to be set to null (#1865)
* fix(Guild): Allow the afk and system channel to be set to null.

* make the getter return null
2017-09-01 16:14:20 +02:00
SpaceEEC
95e22c2f12 feat/fix: add DiscordAPIError#path and fixed Burst request handler handling api errors (#1867) 2017-09-01 16:05:22 +02:00
SpaceEEC
425efe1fe4 Consistently store message reactions keyed under their unicode (#1852) 2017-08-30 02:15:24 +02:00
SpaceEEC
56fe70266e Allow Message#edit to accept a RichEmbed and fixed RichEmbed#file's type (#1829) 2017-08-25 19:50:01 +02:00
SpaceEEC
1fe201ae90 Backporting, doc/bug fixes as well deprecation (#1826)
* Backporting, doc/bug fixes as well deprecation

* Adress issue with not resettable icons/images
2017-08-25 15:14:05 +02:00
iCrawl
bce5b677ad Backport passing a collection to a collector 2017-08-24 00:35:44 +02:00
Gus Caplan
85d195da52 Fix docs on resolveImage 2017-08-23 05:40:58 +02:00
Isabella
17d7f5c723 resolveImage backport (#1822)
* add resolveImage

* add groupDMChannel#setIcon + icon getter

* doc fix

* crawl no kill pls

* *whistles*

* channe
2017-08-23 05:29:22 +02:00
Crawl
a85fc91630 make webpack over 9000 times better (#1816)
* webpack stuff

* even better

* Update browser.js
2017-08-22 19:57:59 +02:00
SpaceEEC
0b22d9a774 Backporting Attachments (#1817) 2017-08-22 00:39:27 +02:00
SpaceEEC
f7664b01a2 Backports (#1813)
* Backported OAuth2Application 201ecd25a2

* Backported retry on 500 57b6980313

* Backported b8034525e3 and fa5c4efa2b
2017-08-21 22:25:21 +02:00
SpaceEEC
be4ccb3686 Backporting audit log reasons and createRole with position for 11.2 (#1810)
* Backporting audit log reasons and createRole with position for 11.2

* Sending kick reason via header rather than via query
2017-08-21 22:21:18 +02:00
SpaceEEC
618fa2b104 functions for setTimeout should get the context bound and not applied (#1673) 2017-08-20 22:26:04 +02:00
Crawl
a7e5e53e5d Fix ClientUser#settings not showing up in the documentation (#1757) 2017-08-20 22:18:40 +02:00
SpaceEEC
c01e9ad828 No longer double increment the reaction count when the client reacts (#1755) 2017-08-20 22:17:44 +02:00
Raphael
29aef18de8 updated docs for <ReactionEmoji>.toString() so it now uses send instead sendMessage in example (#1761) 2017-08-20 22:17:36 +02:00
Crawl
2478092d44 More docs cleanup 2017-08-20 22:15:51 +02:00
Crawl
c7d1507e19 Docs cleanup 2017-08-20 22:08:37 +02:00
Crawl
c33b78da23 Remove reasons for now 2017-08-20 22:01:17 +02:00
Gus Caplan
e76ebb4fcb Guild/systemchannel (#1799)
* add cool system channel

* Update Guild.js

* Update Guild.js

* Update Guild.js
2017-08-20 21:59:20 +02:00
iCrawl
b3216f26d6 Update deps 2017-08-20 21:39:27 +02:00
SpaceEEC
2809eb74ca Always send a type now when updating own presence (#1785) 2017-08-17 00:16:09 +02:00
Crawl
cd4a69d009 Add Guild#nameAcronym 2017-08-12 11:50:15 +02:00
iCrawl
5dc83a1b03 Git pls 2017-08-12 11:28:47 +02:00
SpaceEEC
2611efe9c1 No longer double increment the reaction count when the client reacts (#1755) 2017-08-12 11:25:29 +02:00
Crawl
cba4cc2400 Audio bitrate support (#1439)
* Audio bitrate support

Note: not implemented for VoiceBroadcasts

* Fix default args, auto bitrate

* Late night typos are the best

* Changes bitrate to kbps for VoiceChannel stuff

* Add methods to manipulate bitrate while encoding
2017-08-12 11:23:47 +02:00
Évelyne Lachance
d513c4bbb9 Add count optional argument to Collection methods (#1552)
* Add `count` optional argument to Collection methods

[NON-BREAKING CHANGE]
An optional `count` argument is added to the following methods:
- random() and randomKey()
- first() and firstKey()
- last() and lastKey()

If `count` is used, the method returns an array instead of only the value. Performance impact non-existent for existing code. Performance for returning an array has been measured and this is the fastest I could find (array[i] = value is faster than array.push()).

* Update Collection.js

Fixed spacing/line length errors according to suggestions by codacy/pr

* Fixed docs

Added proper `@returns {*|Array}` as the methods might return either. Also added params where missing (whoops)

* Further doc fixes

Per Crawl's comments, fixed (i + 1) spacing as well as fixed {Integer} to {number}

* random() and randomKey() fix

Per Hydra's comment, random() and randomKey() now ensures unique values.
I've also resolved potential issues with requesting a count higher than the collection size. A collection with 10 items will only ever return at most 10 items using the `count` property.

* Can I facepalm harder

Had wrong header comments ^_^

* Fixed for "values/value" and Omited

Also, added "Positive" integer check.

* looks like I "omitted" a change, there.

* Update Collection.js

* Update Collection.js

* Update Collection.js
2017-08-12 11:18:25 +02:00
aemino
7aa791eaaa Ignore setSpeaking requests when VC isn't connected (#1638) 2017-08-12 11:16:11 +02:00
Gus Caplan
407500bf52 deprecate Guild#defaultChannel (#1752) 2017-08-04 10:44:35 +02:00
Crawl
59122a6ba4 Update typings 2017-08-01 04:39:44 +02:00
iCrawl
8a9b6cbdb5 Stop doubling the message key 2017-07-31 01:32:44 +02:00
iCrawl
bdc61a4068 Wrong operator in flattenErrors 2017-07-31 01:29:46 +02:00
SpaceEEC
a56a24d042 Fixed DiscordAPIError#message sometimes being undefined 2017-07-31 01:26:42 +02:00
bdistin
e7ebb23f14 Fix guildMembersChunk documents for v11.1-dev (#1734) 2017-07-30 15:00:01 +02:00
Crawl
46a50cb57c Fix "shitty" shortcut 2017-07-28 05:20:28 +02:00
Crawl
b27198ebe5 Update nsfw prop 2017-07-28 04:53:36 +02:00
Crawl
e91a2c6b2b Update typings 2017-07-21 15:34:30 +02:00
Crawl
26e5ef3205 Update deps and fix webpack 2017-07-16 14:34:23 +02:00
Gus Caplan
ed84d76a42 move nsfw to the new prop (#1687) 2017-07-16 14:06:51 +02:00
aemino
b9434ed112 Expose DiscordAPIError and API error constants (#1641)
* Expose DiscordAPIError

* Expose API error constants

* Add typedef for APIError

* Integligently forgot to save file
2017-07-16 14:06:26 +02:00
Gus Caplan
85615aa3a1 update tern file to actually work (#1630) 2017-06-29 19:53:37 +01:00
Gus Caplan
822c1f533c Fix toLowerCase errors in GuildAuditLogs (#1627) 2017-06-29 19:53:25 +01:00
Drahcirius
4ce4dc019e setTimeout should use args (#1623) 2017-06-29 19:53:11 +01:00
Will Nelson
f1a74f214e make token not enumerable (#1620) 2017-06-29 19:52:58 +01:00
Gus Caplan
85ec7c64bc update docs for discord api error (#1575)
* aaaaa

* Update DiscordAPIError.js
2017-06-29 19:52:44 +01:00
aemino
b5de89a973 Fix VoiceConnection#authenticateFailed race condition (#1601) 2017-06-29 19:52:22 +01:00
Mythic
ddfa57e96d Improve Message's ID attribute documentation (#1450)
Remove the implication that a Message object's ID is unique only to the channel it was sent on
Message ID's are snowflakes, and as stated in Discord's API documentation, globally unique throughout Discord
2017-06-29 19:51:37 +01:00
SpaceEEC
e3232bdb2b added Guild#setExplicitContentFilter (#1583) 2017-06-29 19:51:11 +01:00
SpaceEEC
86ec60bc00 fix merge conflict 2017-06-29 19:48:34 +01:00
Drahcirius
830d8fb3b5 Remove global flag from ffmpeg tutorial doc (#1582) 2017-06-10 23:55:10 +01:00
Crawl
510ddab0f5 Fix createMessageCollector example 2017-06-08 14:50:34 +02:00
Schuyler Cebulskie
95a531ee7d Switch to User#tag in web builds example 2017-06-08 09:35:38 +02:00
Crawl
3f7049e1a0 CRLF to LF 2017-06-06 08:45:51 +02:00
aemino
1ed6bbc4b4 Remove unused VoiceBroadcast#guaranteeOpusEngine (fixes #1556) (#1563) 2017-06-05 06:54:56 +02:00
aemino
2116fba4c2 Opus engine fetching: don't ignore non-missing errors (#1555)
* Opus engine fetching: don't ignore non-missing errors

* typo fix
2017-06-01 10:32:12 +02:00
Amish Shah
b49266baa5 fml 2017-05-30 12:33:58 +01:00
Amish Shah
46b8a7d411 Correct documentation for VoiceConnection (see #1536) 2017-05-30 12:33:50 +01:00
Snazzah
2f1eb71a3f Add MEMBER_ROLE_UPDATE to returning 'UPDATE' array (#1538) (#1542) 2017-05-29 23:55:42 +02:00
Gus Caplan
3ec08d5976 add nsfw options to 11.1 search (#1540)
* Update RESTMethods.js

* Update TextBasedChannel.js
2017-05-29 23:53:49 +02:00
Amish Shah
19d4d3bf2c Fix #1528 2017-05-27 19:21:03 +01:00
Crawl
eb4d3627bd Update typings 2017-05-23 11:13:59 +02:00
Gus Caplan
bb2a35a849 they can be more than just string/num/bool (#1448) 2017-05-21 21:25:06 +02:00
vzwGrey
8e80b6660c Fix reaction collector example (#1513) 2017-05-21 21:15:23 +02:00
Crawl
c62e8bb1f0 Update typings 2017-05-21 06:40:52 +02:00
Gus Caplan
433c5e5702 you can't mutate a socket event in some browsers (webpack fix) (#1512) 2017-05-21 05:20:51 +02:00
Crawl
a8d34e340b Relink permission#FLAGS on docs 2017-05-20 21:05:45 +02:00
Crawl
04f0534d33 Revert "relink Permissions.FLAGS (#1510)" (#1511)
This reverts commit 65afedee49.
2017-05-20 21:02:10 +02:00
aister
65afedee49 relink Permissions.FLAGS (#1510)
(hop ai du eet raito)
2017-05-20 21:00:51 +02:00
bdistin
c903929b6b guild setPosition missing docs (#1498)
* missing docs

* update return docs
2017-05-16 16:12:43 +02:00
Gus Caplan
28a29d5d9f Update Invite.js (#1496) 2017-05-16 15:26:32 +02:00
Gus Caplan
6eced4d465 fix infinte loop issue (#1488) 2017-05-14 19:34:51 +02:00
Crawl
f25ced2969 Add test.sh and modified deploy.sh 2017-05-13 19:19:25 +02:00
Crawl
b9172ffe22 Add travis staging 2017-05-13 19:16:32 +02:00
Crawl
8a7a805d92 Fix webpack uglify 2017-05-13 18:18:15 +02:00
SpaceEEC
45bc653988 Failing to resolve a role should reject and not throw an error (#1483) 2017-05-12 15:31:04 +02:00
aemino
e3c3a4fd60 GuildMember#setVoiceChannel fix (#1482)
Looks like someone forgot to remove the full channel object from the PATCH payload.
2017-05-12 06:42:18 +02:00
Drahcirius
798018713b invalid token errors not rejected properly (#1478)
* ready event will now throw errors properly

* ws login rejection fix
2017-05-11 00:40:47 +02:00
meew0
ea1b5beea6 Fix the mention example in the USERS_PATTERN doc comment
Previously it was a channel mention. Thanks @Hackzzila.
2017-05-11 00:40:39 +02:00
SpaceEEC
bb0ee59718 Handing promise rejections from GuildAuditLogs#build to the user (#1474)
* handing guildauditlog's promise rejections to the user

* Returning a new Promise to resolve a Promise.all is unnecessary.
Also for the docs, it returns a Promise<GuildauditLogs>, not GuildAuditLogs directly.

* totally did not removed that line
2017-05-09 00:19:46 +02:00
1Computer1
294f5ea5c8 Deprecate aliases (#1469) 2017-05-06 01:24:53 +02:00
Crawl
fd7cb41ee6 Using a traditional for loop rather than a for in loop for options.files (#1461) 2017-05-06 01:14:27 +02:00
SpaceEEC
1e115efa56 fix fetchMentions' auth header, options and data mapping (#1457)
* fix fetchMentions' auth header, options and data mapping

* vscode strikes again

* switched to Util.mergeDefault

* vscode

* removed duplicated optionals and switched to instanceof
2017-05-06 01:04:05 +02:00
SpaceEEC
ee622f7d9f added Invite#presenceCount and Invite#memberCount (#1460)
* added Invite#online and Invite#memberCount

* requested change
2017-05-05 23:24:16 +02:00
SpaceEEC
1fc6e3b91e using correct properties for invites (#1467) 2017-05-05 23:19:25 +02:00
SpaceEEC
6cd55ed5c9 readded docs for Client#error and Client#ready (#1466) 2017-05-05 20:14:56 +02:00
SpaceEEC
7d7f1b2446 update GuildAuditLogs for MESSAGE_DELETE and fixed extras (#1464)
* update GuildAuditLogs for MESSAGE_DELETE and fixed extras

* correct oder of targets
2017-05-05 19:44:41 +02:00
Crawl
328d75be7d Update version 2017-05-05 17:08:22 +02:00
Crawl
41e0be1db3 Endpoints.Guild(...).Emoji(...) should not use CDN (#1462) 2017-05-05 02:23:25 +02:00
Crawl
77caa0f8d4 Update welcome docs page 2017-05-05 01:57:09 +02:00
Gus Caplan
712305dece Update GuildAuditLogs.js (#1456) 2017-05-04 00:50:16 +02:00
Anxeal
e96daba7c0 Fix typo in RESTMethods.js (#1455)
Mentions should be written with a capital M
2017-05-03 20:36:22 +01:00
Anxeal
3a73628567 Fix typo in RESTMethods.js (#1454)
fetchMeMentions -> fetchMentions 🤔
2017-05-03 20:36:17 +01:00
Amish Shah
cdc355811e New is also optional 2017-05-01 22:10:45 +01:00
Amish Shah
ce8dc85f78 watch me, gus 2017-05-01 22:09:14 +01:00
Amish Shah
2d416cca79 Improve GuildAuditLogs documentation by creating an AuditLogChange typedef 2017-05-01 21:07:46 +01:00
Cody A. Taylor
61a081faa5 Document flattenErrors keys param (#1447)
* Document flattenErrors keys param.

* Remove parens.

* Capitalise a letter
2017-05-01 20:47:45 +01:00
Gus Caplan
3bab4ec9fd Add time methods to Audit Log entries (#1443)
* aaaaa

* Update GuildAuditLogs.js
2017-05-01 18:05:15 +01:00
aemino
2bf8a36077 Allow await endpoint stage to not error (#1444) 2017-05-01 18:01:28 +01:00
Amish Shah
fccd0bd183 docs 2017-05-01 16:39:43 +01:00
Amish Shah
c48f042785 silly hydar 2017-05-01 15:42:47 +01:00
Amish Shah
b8018d4b6d Reconnect on 1000 if client didn't close 2017-05-01 15:32:40 +01:00
Amish Shah
6e4b744d03 Export ClientOAuth2Application 2017-05-01 15:27:44 +01:00
Amish Shah
135d9e3ea0 Expose GuildAuditLogs 2017-05-01 15:25:21 +01:00
Amish Shah
51a2e465bd Let client know who closed the WebSocket 2017-05-01 15:24:02 +01:00
Amish Shah
2ace21c412 backwards compat docs 2017-05-01 15:10:11 +01:00
Amish Shah
140839128a Fix ban delete days 2017-05-01 15:07:02 +01:00
Amish Shah
47fbd18eda docs 2017-05-01 15:06:26 +01:00
Amish Shah
0f4983852e Fix ban message delete days 2017-05-01 14:57:27 +01:00
Amish Shah
db45d99d0c More deprecated stuff 2017-05-01 11:28:48 +01:00
Amish Shah
8bab9fb122 Add VIEW_AUDIT_LOG to Permissions docs 2017-05-01 11:15:09 +01:00
Isabella
a02e10926d Stop using deprecated methods within discord.js (#1441)
* fix deprecation stuff

* fixed a check
2017-05-01 10:14:26 +01:00
Drahcirius
166161d6d3 ready event will now throw errors properly (#1440) 2017-05-01 08:43:35 +01:00
Amish Shah
892ba67d71 Emit packet handling errors to the error event and not the debug event 2017-05-01 07:56:13 +01:00
Crawl
c3be798663 Update GuildAuditLogs.js 2017-05-01 01:03:12 +02:00
Gus Caplan
7779069e32 add audit logs "extras" (#1435)
* add audit logs "extras"

* whoops

* Update GuildAuditLogs.js
2017-04-30 23:57:42 +01:00
Gus Caplan
1ddae43fed Add class doc blocks to Audit Logs (#1438) 2017-04-30 23:57:06 +01:00
SpaceEEC
c5efa985fc Readding Client#disconnect and docs for Client#reconnecting (#1437)
* readded docs for client#reconnecting and client#disconnect

* moved disconnect event emitting and clarified emitting reason
2017-05-01 00:16:02 +02:00
Amish Shah
0754ddbc34 Reset sequence when sessions are invalidated 2017-04-30 22:26:44 +01:00
Gus Caplan
37b1f38ebe Make audit log entries a collection (#1436) 2017-04-30 21:25:22 +01:00
Amish Shah
c2566d230c Wait undo that 2017-04-30 21:04:39 +01:00
Amish Shah
474a954938 Force deaf/mute properties to be booleans even when null data is received 2017-04-30 21:04:11 +01:00
Amish Shah
e460e5e853 Fix some stuff 2017-04-30 21:01:04 +01:00
Crawl
457b9600f2 Docs consistency plz 2017-04-30 13:16:19 +02:00
Amish Shah
9841615775 Merge branch 'master' of https://github.com/hydrabolt/discord.js 2017-04-30 12:10:27 +01:00
Amish Shah
c880f10714 Update bufferutil peerdep requirement from ^2.0.0 to ^3.0.0 2017-04-30 12:10:22 +01:00
Crawl
3cb4aac65a Remove unused util 2017-04-30 13:03:51 +02:00
Crawl
653aa6c1d7 Add back uws to the docs frontpage 2017-04-30 13:02:44 +02:00
Crawl
62ac246162 Add uws back to the readme 2017-04-30 13:01:46 +02:00
Crawl
bd6317cf99 Add uws back to package.json 2017-04-30 12:59:11 +02:00
Amish Shah
edf1a3e7b4 Undeprecate uws and fix support for it 2017-04-30 11:56:24 +01:00
Amish Shah
f20f49388d Simplify data unpack logic 2017-04-30 11:40:16 +01:00
Amish Shah
007b1226c9 Rudimentary support for uws while it is deprecated 2017-04-30 11:36:20 +01:00
Amish Shah
8e5c600227 Make OAuth2Application backwards compatible again 2017-04-30 11:21:48 +01:00
Amish Shah
dd110f4824 Add example for creating VoiceBroadcasts 2017-04-30 11:04:41 +01:00
Amish Shah
81b176cfea BaseOpusEngine should be private 2017-04-30 11:01:26 +01:00
aemino
5cad25ea69 Add Guild#me (#1384)
* Add Guild#me

(also did minor docs cleanup)

* Don't use Guild#member as there's nothing to resolve

* Update ClientDataResolver.js

* Update Guild.js

* Update Guild.js

* Update Guild.js
2017-04-30 04:30:59 -04:00
Pg Biel
9a5de25d79 Emoji convenience methods (#1378)
* make branch

* stuff

* Consistency & remove role(s)

* kill me

* Doc changes

Requested by Crawl

* forgot 1
2017-04-30 04:51:15 +02:00
Crawl
ac92d2cecc Improve docs a bit 2017-04-30 04:30:44 +02:00
Schuyler Cebulskie
3f8c0a4d11 Move things 2017-04-29 20:56:40 -04:00
Schuyler Cebulskie
e2c8ba5be0 Allow MessageMentions#channels to function in DMs 2017-04-29 20:18:23 -04:00
Schuyler Cebulskie
aa35e21b84 Revert "Make MessageMentions#channels return an empty collection in DMs (#1430)"
This reverts commit 88aa947376.
2017-04-29 20:00:36 -04:00
Schuyler Cebulskie
4bca4a5181 Update typings 2017-04-29 19:59:22 -04:00
Gus Caplan
6f96cf7325 Use Target variables for consistency (#1431) 2017-04-30 00:36:26 +01:00
Amish Shah
ee37d859a4 dumb ass bug fix 2017-04-29 22:47:06 +01:00
Amish Shah
1a69331f0c Merge branch 'master' of https://github.com/hydrabolt/discord.js 2017-04-29 21:09:56 +01:00
Amish Shah
c40252381b Deprecate all the things 2017-04-29 21:09:53 +01:00
Gus Caplan
4127cf6e40 Experimental support for Audit Logs (#1403)
* start audit logs

* make better var types so gawdl3y doesn't shit on this

* add constructor stuff

* make more changes

* add entry creation

* add methods

* make it all work hopefully

* aaa

* aaaa

* i wish i could test this locally

* fix users, guild when i feel like it

* make guild prop non-enumerable

* make better types

* change nouns

* e

* Update GuildAuditLogs.js

* Update GuildAuditLogs.js

* Update GuildAuditLogs.js

* eek

* Update GuildAuditLogs.js

* Update GuildAuditLogs.js

* friggin trailing spaces

* Update GuildAuditLogs.js

* docs!

* Update GuildAuditLogs.js

* reason stuff

* Update GuildAuditLogs.js

* Update GuildAuditLogs.js

* support before/after for pagination

* Update Guild.js

* Update GuildAuditLogs.js

* mfw using github web editor

* fix build

* Update Guild.js

* amazing cache fuckery shit evil

* cool stuff

* make building audit logs nicer

* ban endpoint stuff

* dox

* <.<
2017-04-29 20:34:57 +01:00
Amish Shah
b0a3528411 sorry gus i borked 2017-04-29 20:00:05 +01:00
Amish Shah
5b2ca326d4 ESLint pls >.> 2017-04-29 18:07:48 +01:00
Amish Shah
f7d65991d5 Minor refactor of Actions 2017-04-29 17:56:36 +01:00
Amish Shah
dd8f77fcf0 Stop the EventEmitter debug warnings when fetching lots of guilds before ready 2017-04-29 17:46:36 +01:00
Amish Shah
584961b04b Debug resume from connection not Client 2017-04-29 15:58:12 +01:00
Amish Shah
2e33bf583e Try to fix StreamDispatchers (#1387) 2017-04-29 15:12:34 +01:00
SpaceEEC
88aa947376 Make MessageMentions#channels return an empty collection in DMs (#1430)
* Make MessageMentions#channels return an empty collection in DMs

* reduce code duplication and corrected docstring
2017-04-29 14:33:18 +01:00
stupid cat
d6b7d31047 Better ClientUser#setStatus for self bots (#1428)
* better setstatus for selfbots

* make both calls

* must return

* use setpresence, set invisible
2017-04-29 14:31:32 +01:00
Will Nelson
13672cc637 Export ReactionCollector and Collector (#1426) 2017-04-29 14:27:39 +01:00
SpaceEEC
956372731f Using ws.connection.status rather than undefined ws.status (#1429) 2017-04-28 21:27:30 +02:00
Drahcirius
9ee695a291 incorrect variable name convention (#1427)
I'm not pr farming, I swear.
Gus told me to fix it.
2017-04-28 19:46:24 +02:00
Will Nelson
35c4c552f4 [wip] Fix collector documentation (again) (#1416)
* remove private on abstract methods, fix timeout type

* make client readonly, add documentation to abstract methods

* document implemented collector methods
2017-04-28 19:45:46 +02:00
Drahcirius
89745fe132 emojis should use cdn endpoint (#1425) 2017-04-28 18:47:18 +02:00
Drahcirius
2accb7b6fd small typo fix in emoji id endpoint (#1424) 2017-04-28 18:11:12 +02:00
Amish Shah
195fcfa15c Rewrite WebSocket internals (#1410)
* Start rewriting Manager and Connection

* more stuff

* stuff

* Fix ready bug

* some stuff i forgot

* fix some stuff

* add stupid heartbeat ack like seriously who cares

* woo!

* fix a bug

* rate limit the dumb websocket

* stuff

* hdocs

* Docs

* Remove ClientManager#setupKeepAlive as it is now redundant

* Change Client._pingTimestamp to a getter that fetches the timestamp from the WebSocketConnection

* are you happy now eslint smh

* make gus happy

* Add CloseEvent external doc

* Make sure to emit 'reconnecting' when actually reconnecting

* ffs

* Fix RESUME logic

* Add heartbeat ack debug messages, including latency data

* Dumb stuff for Gus

* thx eslint

* more dumb stuff

* more dumb crap smh gus i h8 u

* moar messages

* fix for using wrong status, causing certain events not to be fired (#1422)
2017-04-28 16:13:06 +01:00
SpaceEEC
95bcac9d9b Throwing 'Message not found' error when fetching from empty channel or without read history permission. (#1394) 2017-04-28 17:02:52 +02:00
Gus Caplan
1601ad14e3 i hate my life (#1420) 2017-04-27 00:21:03 +02:00
Gus Caplan
5ac22691d2 Add TextBasedChannel#nsfw (excluding User and GuildMember) (#1419) 2017-04-26 23:01:27 +01:00
bdistin
298ee4e79f Throw an error if you try to initiate a new SnowflakeUtil class instance (#1413) 2017-04-25 23:29:30 +02:00
SpaceEEC
909b825c94 Fixed acknowledging of channels (#1411)
* Fixed acknowledging of channels

* using channel#lastMessageID and resolve when it's not present
2017-04-25 23:29:08 +02:00
Amish Shah
eb9c280d5f CRLF to LF 2017-04-25 18:08:27 +01:00
Crawl
10138dfad2 Update voice docs page 2017-04-25 07:10:09 +02:00
Gus Caplan
c670209021 allow search('string here') (#1408) 2017-04-24 16:43:30 +02:00
Crawl
53eda09f72 Improve docs 2017-04-24 16:29:29 +02:00
SpaceEEC
401822a094 Made search argument optional, added useronly warning and fixed endpoint (#1407) 2017-04-24 14:31:39 +02:00
Crawl
aec0a095e3 Make sentence better (English is hard) 2017-04-24 08:45:29 +02:00
Crawl
4a18ac72ce Add some more comments to the example 2017-04-24 08:35:51 +02:00
Crawl
bbb5d4c7a1 Update examples 2017-04-24 08:34:00 +02:00
Crawl
b15e012788 Fix silly typo cant -> can 2017-04-24 08:24:45 +02:00
Crawl
fb5b8f8548 Remove uws from package.json 2017-04-24 08:22:28 +02:00
Crawl
c538c076ff Deprecate uws 2017-04-24 08:21:54 +02:00
Gus Caplan
59e733cef6 deprecate aliases (#1397)
* hype

* add doc dep tags

* fix that

* hopefully fix docs

* Update TextBasedChannel.js
2017-04-24 08:05:24 +02:00
Crawl
96041dbd3a Fix doc string 2017-04-23 08:51:07 +02:00
Crawl
6abe014ac3 Change theme prop type 2017-04-23 07:04:44 +02:00
Crawl
c095610bb4 Change docstring 2017-04-23 06:50:43 +02:00
Crawl
98ee016b83 Add .npmignore to reduce module filesize 2017-04-23 06:07:53 +02:00
Crawl
c0c2fd1493 Remove yeoman generator link 2017-04-23 05:53:33 +02:00
Amish Shah
26069a44e2 nope i was right the first time 2017-04-22 21:23:20 +01:00
Amish Shah
3465a154d5 that should be 60 tbh 2017-04-22 21:20:50 +01:00
Amish Shah
eec79b5fd0 Increase WebSocket backoff time to alleviate reconnect issues 2017-04-22 21:16:58 +01:00
Crawl
64b378f7d4 Update sharder test 2017-04-22 19:47:22 +02:00
Crawl
7d5bfccd67 Update package.json 2017-04-22 18:15:26 +02:00
SpaceEEC
5b3e971c5c Message.editedTimestamp should be a number (#1402) 2017-04-22 16:54:48 +02:00
Crawl
6c4f63ed72 Make @types/node a devDependency 2017-04-22 15:00:37 +02:00
Crawl
c3bc6d5234 Update to latest eslint 2017-04-22 14:56:10 +02:00
Will Nelson
794c0e131d how2docs (#1400) 2017-04-22 01:56:23 +02:00
Amish Shah
5605dc04e1 Fix #1399 (Trying to unset games with values other than null doesn't end up displaying properly for mobile clients) 2017-04-21 11:42:19 +01:00
Will Nelson
94e2a85386 Docs fixes (#1398)
* fix collector docs

* fix message collector param type
2017-04-21 09:44:59 +02:00
Isabella
a652901d60 Throw Error for non role-resolvables (#1322)
* throw error for role names/integers being provided for role resolvables

* Update RESTMethods.js

* Update RESTMethods.js

im really bad

* Update RESTMethods.js

* removed new promise reject

ty gus

* Update RESTMethods.js

* move error to guildmember.addRole method

* Update GuildMember.js
2017-04-19 18:57:54 +02:00
Will Nelson
ca34c43ba0 Add message reaction collectors & abstract collectors (#1335)
* message reaction collectors

* docs cleanup

* abstraction

* remove pointless method

* rename reaction collector creator method

* docs and stuff

* fix docs & build

* backwards compatibility, fix docs

* fix docs

* remove deprecated comments

* betterer docs again

* Fix documentation

* Fix Alias to not break depreciated code
2017-04-19 18:52:40 +02:00
Skiptir Engu
8475a4abee Use libsodium.js if available (#1390)
* Use libsodium.js if available

* Style consistency

* Added peer dep and update README

* Link should point to npmjs 🤔
2017-04-19 18:35:45 +02:00
Crawl
27114eebf9 Commit those in LF too 2017-04-19 18:17:23 +02:00
Crawl
1897b4f4d6 Commit those in LF 2017-04-19 18:14:37 +02:00
Crawl
b1e3309783 According to the spec just this should work 2017-04-19 17:55:00 +02:00
Crawl
fa5787cc8b Fix arrow parens 2017-04-19 17:48:34 +02:00
Gus Caplan
47442eeba3 snekfetch v3 hype (#1391) 2017-04-19 16:40:07 +01:00
Schuyler Cebulskie
b7e16ad4b8 Revert "use LF instead of CRLF (#1392)"
This reverts commit 5e522e0a2e.
2017-04-18 22:41:08 -04:00
Gus Caplan
5e522e0a2e use LF instead of CRLF (#1392) 2017-04-18 21:43:05 +01:00
Gus Caplan
0d83f80fc0 Fix endless reconnection bug (#1389) 2017-04-17 12:32:26 +01:00
Crawl
6bae7a135f Update package.json to v11.1
This is to reflect version of the master branch
2017-04-16 02:22:18 +02:00
Gus Caplan
15723ece1f Prepare examples for v12 (#1382) 2017-04-16 00:50:37 +01:00
Mr. Sakamoto
4aa82b4fdf fix Guild setOwner example (#1383)
* fix Guild setOwner docs

* hello s and bye s
2017-04-15 22:13:20 +02:00
Amish Shah
bdf6f30990 Update package.json to depend on npm distribution of prism-media rather than the git repo 2017-04-15 19:46:36 +01:00
Crawl
930519c494 Update AudioPlayer.js 2017-04-13 03:17:00 +02:00
meew0
81619ac7be Create a PR template
As discussed on Discord.
2017-04-13 00:57:39 +02:00
Amish Shah
8ddaa1b92c Merge branch 'master' of https://github.com/hydrabolt/discord.js 2017-04-12 21:22:14 +01:00
Amish Shah
78895ace17 Fix reactions not being uncached once they hit a count of 0 2017-04-12 21:22:08 +01:00
SpaceEEC
d54ef0eea4 fix (#1375) 2017-04-12 22:06:05 +02:00
Amish Shah
dce8e83465 Add VoiceConnection#dispatcher 2017-04-12 20:36:03 +01:00
Amish Shah
36c03909dd Clean up AudioPlayer internals, change currentDispatcher and currentTranscoder to just dispatcher and transcoder 2017-04-12 20:32:50 +01:00
Amish Shah
9eaf1456b2 Clean up AudioPlayer internals, remove the concept of multiple "temporary" streams 2017-04-12 20:12:51 +01:00
SpaceEEC
d0c2b84659 Fixed Util.arraysEqual, made it better and updated its docs (#1374)
* commit

* improved docs
2017-04-12 19:37:31 +02:00
SpaceEEC
81d7dbdc76 Fix resolveEmojiIdentifier (#1373) 2017-04-12 17:15:23 +01:00
Amish Shah
8b67660271 Fix contribution link 2017-04-12 15:39:26 +01:00
Lana Reeve
40c610987e Improved EmojiIdentifierResolvable support (#1361)
* EmojiIdentifierResolvable now supports emoji IDs and pre-encoded unicode

* forgot to return the identifier and not the emoji itself

* using ? in JSDoc instead of |null
2017-04-12 06:32:18 +02:00
bdistin
c5e2ea7458 Break reconnect loop if you client.destroy in the disconnect event (#1371)
* Break reconnect loop if you client.destroy in the disconnect event

* fix lint/long line?

* God this is So UGLY, why...

* Update WebSocketManager.js

* Update WebSocketManager.js
2017-04-12 06:31:45 +02:00
aemino
39f7dc018a Make FEC and PLP non-default (#1372)
I considered it might be useful to have something exposed that allows the end-user to set these if they want, but our current code doesn't allow for that. It'll remain an internal feature for the time being.
2017-04-12 06:30:48 +02:00
meew0
5dea21ba80 Move CONTRIBUTING.md to the new .github folder
There's no point in keeping it in the root directory given that it can also be in .github.
2017-04-12 01:19:16 +02:00
meew0
9b989c4fd7 Create an issue template
This has been created in discussion with various people on Discord.
Closes #1362 as that is obsolete now, sorry!
2017-04-12 01:16:12 +02:00
SpaceEEC
6187c17097 readded inviteLink endpoint (#1369) 2017-04-11 22:21:28 +02:00
xDdude
a49d4e6d43 getters for decibel and logarithmic volume (#1355)
* getters for decibel and logarithmic volume

I don't really understand where the conversion numbers come from but having this allows for an easy way to get the volume back based on what method you used to set it. I think the math is right, but yeah I've just used the conversion numbers from the other methods.

* fix trailing spaces
2017-04-11 18:21:00 +01:00
Drahcirius
84aab1021a reaction remove fix (#1366) 2017-04-11 18:10:14 +01:00
Amish Shah
25e0048bbf remove useless waiting reference 2017-04-11 17:59:27 +01:00
Gus Caplan
8dfc96d460 fix message acking (#1368) 2017-04-11 17:54:25 +01:00
Amish Shah
6495df50f9 Fix sequential rate limiting 2017-04-11 17:54:03 +01:00
bdistin
9365272baf Fix embeds getting converted to collection on edgecase (#1356) 2017-04-10 14:30:06 -04:00
SpaceEEC
e60d2bd175 Fix MessageMentions properties always being null or empty (#1357) 2017-04-10 20:06:00 +02:00
Gus Caplan
0a56fa0aae websocket cleanup (#1346)
* websocket cleanup

* resume event

* Update Resumed.js

* Update WebSocketManager.js
2017-04-10 20:02:17 +02:00
Gus Caplan
8436cbe8b1 Update User.js (#1351) 2017-04-10 16:20:07 +01:00
aemino
6d4fe89212 Volume stuff docs fixes (#1354)
* Volume stuff docs fixes

* 10/10 for spelling
2017-04-10 11:50:33 +01:00
Schuyler Cebulskie
3bc90dcbf1 Add export for MessageMentions 2017-04-10 03:21:14 -04:00
Schuyler Cebulskie
ebcf61ff9c Remove MessageMentions constructor docs 2017-04-10 03:12:57 -04:00
Schuyler Cebulskie
4fa5ceed83 Fix some docstrings 2017-04-10 03:07:05 -04:00
Schuyler Cebulskie
fa016b6b41 Clean up Message#mentions and message updates 2017-04-10 03:01:50 -04:00
Crawl
878e5d7c76 Fix example typo 2017-04-10 00:39:07 +02:00
Gus Caplan
d7cf4a0919 switch snekfetch to npm dep because not everyone has git (#1349)
* Update package.json

* Update package.json
2017-04-09 15:55:35 +02:00
Gus Caplan
e5293647a3 (╯°□°)╯︵ ┻━┻ (#1347) 2017-04-07 12:13:13 +02:00
aemino
ab589fa5f2 VoiceConnection speaking bugfix (#1343)
Looks like I made a typo...
2017-04-06 16:20:34 +02:00
Crawl
d1d8179460 Revert "add auth session change handling" (#1342)
* Revert "User settings (#1337)"

This reverts commit 801633b970.

* Revert "add auth session change handling (#1339)"

This reverts commit 5d85de0883.
2017-04-06 13:50:31 +02:00
Gus Caplan
801633b970 User settings (#1337)
* user settings bruh

* remove development dump

* emit stuff

* i am so done

* Update ClientUserSettings.js

* modularize

* Update ClientUserSettings.js

* Update Constants.js

* Update ClientUserSettings.js

* Update RESTMethods.js

* Update ClientUserSettings.js

* <.<
2017-04-05 22:03:33 +02:00
Gus Caplan
5d85de0883 add auth session change handling (#1339)
* add auth session change handling

* eek
2017-04-05 21:52:55 +02:00
Crawl
4ebf4307e8 Update package.json 2017-04-05 21:40:38 +02:00
SpaceEEC
6ce24398ab Fix messageReactionAdd internally & doc fix (#1341) 2017-04-05 21:34:14 +02:00
Amish Shah
970bfffc46 Fix emoji events (fixes #1333) 2017-04-05 17:05:27 +01:00
Amish Shah
140fd4ad4c Update submodules 2017-04-05 16:08:03 +01:00
SpaceEEC
ecb8655dac Document readonly and private properties (#1338) 2017-04-03 20:05:36 +02:00
Crawl
4be08406e6 Fix travis build error 2017-04-03 02:06:08 +02:00
Crawl
047cd2da5c Fix fetchRecommendedShards 2017-04-03 01:51:15 +02:00
Crawl
6910585f69 Fix lowercase comments 2017-04-02 19:47:00 +02:00
Crawl
dde6eb003c Force newest node-opus and opusscript 2017-04-02 19:45:10 +02:00
aemino
8716702b59 Add FEC and PLP support for Opus encoding (#1264)
* Add FEC and PLP support for Opus encoding

* Silently fail if the Opus engine doesn't support CTL

* Fixed inversed max/min functions
2017-04-02 19:43:46 +02:00
Crawl
2ff1f3dcde Update sharder.js 2017-04-02 09:45:59 +02:00
Crawl
09489e2b9f Fix indent on doc string 2017-04-01 21:19:39 +02:00
Isabella
d189b51da5 explicit content filter for guilds (#1329) 2017-04-01 21:16:30 +02:00
SpaceEEC
270bbc2731 to Endpoints.CND with you (#1330) 2017-04-01 21:16:15 +02:00
Crawl
7ffbbc7f07 Fix _sortedRoles in Role.js 2017-04-01 16:28:19 +02:00
Crawl
358131fb6f Fix _sortedRoles in Guild.js 2017-04-01 16:27:55 +02:00
SpaceEEC
d2e3d6dc63 replaced 'del' with 'delete' (#1328) 2017-04-01 16:16:05 +02:00
Gus Caplan
cb3f6d9646 http rewrite (actually works this time!!1!) (#1257)
* rewrite http

* browser fun

* all the mimes dammit

* i need a newline

* whoops

* forgot about this

* use promises and HTTPRequest.method

* fluent

* move httpclient to external module

* branding

* middleware

* revert middleware
2017-04-01 09:04:01 +02:00
Gus Caplan
a4e0af2e45 make positions for channels and roles nicer (#1211)
* make role calculated position nicer

* make channels sortable in a nice way too

* stupid git web rebase editor

* Update Guild.js

* Update Guild.js

* Update Guild.js

* Update Guild.js

* Update RESTMethods.js
2017-04-01 08:28:54 +02:00
TimeForANinja
c4e5292516 resolve for not loggedin clients (#1301) 2017-04-01 08:05:46 +02:00
bdistin
bca101aac8 Fix for #1089 & Message Reactions (#1236)
* [requires more testing] Fix #1089

* Clean up unshift

* Remove <Message>.patch(data)

Nothing calls this method any longer. It is also a private method, so this shouldn't be a breaking change.

* Fix Message Reactions

Purposely reference previous reaction collections, so collection is consistant accross all message edits (no unnecisary data duplication). Makes #1221 extranious.

* Some Data Packets come Incomplete

And several properties can be falsy, so instead of || opted for hasOwnProperty().

* No reason MessageTypes should be an object...

* Use `prop in obj` isntead of hasOwnProp

per @Gawdl3y
2017-04-01 01:51:12 -04:00
SpaceEEC
07740955cf Fixing stuff, borked by #1323 (#1326)
* several things

* see my comment

* Fixed missing stuff and returned undefined
2017-04-01 07:29:31 +02:00
Gus Caplan
305a7d14af whoops (#1325) 2017-03-31 23:13:41 +02:00
Gus Caplan
e86ec7de6f Update Constants.js (#1324) 2017-03-31 19:42:16 +02:00
Gus Caplan
1df3b84da6 rewrite endpoints for consistancy and modularity (#1323)
* rewrite endpoints for consistancy and modularity

* clean up a bit

* add missing endpoint
2017-03-31 18:36:09 +01:00
Amish Shah
1cb227d6d8 Update license 2017-03-31 18:18:29 +01:00
SpaceEEC
e08f2bad30 Add guild#createRole resolve permissions and RoleData optional (#1321)
* resolving permissions

* make RoleData optional
2017-03-31 12:55:23 +02:00
Crawl
f73e6a3e4d Fix typo in MessageEmbed#video 2017-03-30 22:14:06 +02:00
Gus Caplan
dd3831fa1e Remove type error from Collection#exists() (#1320) 2017-03-30 11:01:07 -04:00
1Computer1
5334682682 Add missing properties for MessageEmbed (#1300)
* Add missing properties

* Derp
2017-03-30 08:47:34 -04:00
Gus Caplan
104f3397af Add defaultRole to guild ((╯°□°)╯︵ ┻━┻) (#1311)
* (╯°□°)╯︵ ┻━┻

* Update Guild.js
2017-03-30 08:44:08 -04:00
Vap0r1ze
61f5051dfd Fix invite resolver (#1318)
Old version only worked with temporary links.
Now works with: vanity invites, and permanent invites.
2017-03-30 08:41:18 -04:00
SpaceEEC
55141b408b Fix (#1306) MessageRection#fetchUsers() return a collection istead of an array 2017-03-30 12:02:00 +02:00
Alexandre B
c86ebefecb Updated uws package version. (#1315) 2017-03-29 21:51:30 +02:00
Schuyler Cebulskie
c73b9483f4 Clean up and add comments 2017-03-22 01:16:30 -04:00
Schuyler Cebulskie
cff7069275 Switch from for..of to forEach 2017-03-22 01:12:46 -04:00
Drahcirius
8444f19662 Added mentions.members (#1271)
* Added mentions.members

* made member.mentions undefined on when not on guild channel

* changed property to getter

* Update Message.js
2017-03-22 01:08:25 -04:00
SpaceEEC
beffcd31cd fix guildWebhooks endpoint (#1284) 2017-03-21 16:31:02 +00:00
Gus Caplan
dd8907472c nonce has to be a uint64 :< (#1240)
* nonce me daddy

* Update RESTMethods.js

* Update RESTMethods.js

* Update RESTMethods.js

* Update RESTMethods.js

* Update RESTMethods.js

* Update RESTMethods.js

* (╯°□°)╯︵ ┻━┻

* Update RESTMethods.js

* Update RESTMethods.js
2017-03-21 03:17:20 -04:00
Gus Caplan
3e0c0f44a2 make useragent better because data is fun (#1244)
* Update UserAgentManager.js

* Update UserAgentManager.js

* gawdl3y is one of the most pants-on-head retarded people i have ever met

* Update UserAgentManager.js

* Update UserAgentManager.js

* Update UserAgentManager.js

* Update UserAgentManager.js
2017-03-21 03:12:20 -04:00
Schuyler Cebulskie
58068fdae9 Change check for array/number, and fix docs 2017-03-21 02:53:08 -04:00
Schuyler Cebulskie
245bd91101 Allow Permissions constructor to take array of perms 2017-03-21 02:45:11 -04:00
Schuyler Cebulskie
79278bccb4 Fix Permissions.resolve to return a combined bitfield for arrays 2017-03-21 02:16:18 -04:00
Programmix
633e3ca896 Fix addRole/removeRole when the user has/doesn't have the role (#1288) 2017-03-21 01:52:43 -04:00
Schuyler Cebulskie
2e54f6d90d Was worth a shot 2017-03-21 01:49:12 -04:00
Pg Biel
64ce829ab2 Make FetchMessage work for non-bot users (#1291)
* [WIP] make fetchMessage work for normal users

wip

* Actual thing

* not WIP anymore

better docs

* oops

* better stuff

* Update TextBasedChannel.js

* Update TextBasedChannel.js

* Update TextBasedChannel.js
2017-03-21 01:42:39 -04:00
Schuyler Cebulskie
2349238f69 Fix #1287 (Role#serialize) 2017-03-21 01:24:53 -04:00
Schuyler Cebulskie
f5da1f2411 Add missing symbol correction to ESLint 2017-03-19 15:50:23 -04:00
Schuyler Cebulskie
bfb3f39e94 Remove unnecessary options for arrow-parens rule 2017-03-17 01:47:50 -04:00
Schuyler Cebulskie
e757f7c0d8 Add two more ESLint rules, and move arrow-parens 2017-03-17 01:44:42 -04:00
Schuyler Cebulskie
41c67766d8 Update ESLint dependency (forgot to include this) 2017-03-17 01:25:30 -04:00
Schuyler Cebulskie
136cab240d Add new ESLint rules 2017-03-17 01:23:39 -04:00
Crawl
2237749d29 Fix richEmbed attachFile 2017-03-16 17:07:11 +01:00
SpaceEEC
6983798820 Fix optional args for sendFiles (#1278) 2017-03-16 16:20:37 +01:00
Gus Caplan
94062d19dd Add message/channel/guild acknowledging (#1239)
* add acking

* 👀

* Update RESTMethods.js

* Update TextBasedChannel.js

* Update RESTMethods.js

* Update Guild.js

* Update TextBasedChannel.js

* Update Message.js

* super shitty names

* Update GroupDMChannel.js

* Update DMChannel.js

* Update TextChannel.js
2017-03-16 09:38:12 -04:00
Gus Caplan
fa609caee2 remove pako (#1258) 2017-03-16 09:15:48 -04:00
Crawl
1f2d8bfbc1 Add missing sendFiles doc and on channels 2017-03-16 00:47:05 +01:00
bdistin
8729ee6a1d Fix #1253: Permission Overwrites Resolution (#1255)
* Fix #1253

* apparently @ everyone role can be undefined

* Fix oops

* Fixes possible mutiple roles named '@​everyone'

* Clean up order/logic
2017-03-15 15:29:34 +01:00
Gus Caplan
a82d9f1fbb add multi-file support (#1268)
* add multi-file support

* (╯°□°)╯︵ ┻━┻

(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻(╯°□°)╯︵ ┻━┻

* stupid git web rebase editor - Gus2k17

* Update TextBasedChannel.js

* Update TextBasedChannel.js
2017-03-15 15:10:49 +01:00
SpaceEEC
6b26d28c06 Fix (#1262)
Not ignoring the filterOld boolean when a number is being passed instead of collection or array
2017-03-14 22:58:21 +01:00
Crawl
4ef0ec491c Add arrow-parens eslint rule & fix inconsistencies 2017-03-13 15:56:00 +01:00
Motion
cee0d58fb8 Added docs warning for acceptInvite method (#1267)
Added docs warning for acceptInvite method (user account only iirc)
2017-03-13 07:04:31 +00:00
1Computer1
bbd89585c6 Add RichEmbed fields error handling (#1243)
* RichEmbed fields error handling

* Fix consistency

* Update RichEmbed.js
2017-03-09 20:58:46 -05:00
bdistin
14ae7cdf17 [Docs] Evaluated Permissions References (#1250)
* Docs / Permissions Overwrites Reference

* Docs / Evaluated Permissions Reference

* Clarify role.permissions is not evaluated

* Update Role.js
2017-03-09 18:32:44 -05:00
Gus Caplan
2897692cf1 fix created timestamp precision (#1241)
* fix created timestamp precision

* perf

* Update Snowflake.js

* gawdl3y was butthurt

* Update Snowflake.js
2017-03-09 18:31:31 -05:00
Schuyler Cebulskie
21babf8859 Update GuildMember#hasPermission(s) to match Role 2017-03-07 02:53:12 -05:00
Schuyler Cebulskie
3e5096f9fe Update Role#hasPermission, and deprecate hasPermissions 2017-03-06 19:58:42 -05:00
Schuyler Cebulskie
df2333ac82 Fix Role#hasPermission 2017-03-06 19:38:58 -05:00
Schuyler Cebulskie
b926cd0dcd Remove redundant Markdown 2017-03-06 12:22:53 -05:00
Schuyler Cebulskie
6211119928 Fix Permissions.ALL on Node 6 2017-03-06 12:21:42 -05:00
Schuyler Cebulskie
4f7e0c41ee Doc fixes 2017-03-06 02:34:39 -05:00
Schuyler Cebulskie
30dd9be900 Pass the member into new Permissions instances 2017-03-06 02:29:35 -05:00
Schuyler Cebulskie
427eec8ccb Fix ESLint failure 2017-03-06 02:27:04 -05:00
Schuyler Cebulskie
16fe48d405 Overhaul Permissions utilities (EvaluatedPermissions no more) 2017-03-06 02:22:42 -05:00
Programmix
055775de2f Fix for #1219 (sodium methods) (#1220)
* Change node-opus methods

* Try using crypto_secretbox(_open)_easy

* Wrong open method name
2017-03-04 08:33:19 +00:00
Amish Shah
33de408a70 fix bulk delete endpoint 2017-03-04 00:35:54 +00:00
1Computer1
e7b0afbd1f Add color role, hoist role getters to GuildMember (#1188) 2017-03-01 04:53:12 -05:00
Schuyler Cebulskie
a5740e83f4 Change burst mode warning 2017-03-01 04:51:46 -05:00
Schuyler Cebulskie
7473fd513e Remove InviteOptions typedef, rephrase 2017-03-01 04:48:26 -05:00
SpaceEEC
fc42a46e5b Invite options (#1223)
* test

* updated descripton

* Update GuildChannel.js
2017-03-01 04:45:05 -05:00
bdistin
25bb602d5a Add Collection.clone() (#1238)
* Add Collection.clone()

* More efficient cloning, and concat update

* Update Collection.js

* Update Collection.js
2017-03-01 04:41:36 -05:00
Kelvin Wu
01d8d32ea9 Add typedef for GuildmemberEditData. (#1230)
* Add typedef for GuildmemberEditData.

* Farm commits

* Make terms consistent.
2017-03-01 04:36:17 -05:00
meew0
b6f74c45fe Add a note about questions to the CONTRIBUTING.md 2017-02-27 20:45:26 +01:00
lipgloss
0e6b5e9193 Change update to create (#1231) 2017-02-27 07:03:24 +00:00
Amish Shah
dfb1a16e9e One-line an if statement 2017-02-25 23:26:40 +00:00
Programmix
275c9953a0 Fixes disconnecting VoiceConnections before connected (#1227) 2017-02-25 23:17:39 +00:00
Schuyler Cebulskie
f3a7f59824 Several improvements
- Rename Guild#updateChannelPositions -> setChannelPositions
- Allow Guild#setChannelPositions to take ChannelResolvables
- Prioritise ClientDataResolver#resolveChannel's string case
- Minor cleanup
2017-02-25 15:29:32 -05:00
Amish Shah
18bcd2f7e2 Add AudioPlayer.currentDispatcher 2017-02-25 11:12:17 +00:00
Programmix
a029999b09 Doc fixes, mostly pertaining to Snowflakes (#1218)
GUS!!!! @GusCaplan
2017-02-24 15:33:51 -05:00
Programmix
76637ed10d Fix VoiceDispatcher docs (#1214) 2017-02-23 21:42:41 -05:00
Amish Shah
53209fbe31 update typings 2017-02-23 20:20:49 +00:00
Amish Shah
70b35c85d6 Merge branch 'indev-prism' 2017-02-23 20:19:26 +00:00
Schuyler Cebulskie
af3d4782b9 Add a word 2017-02-22 19:31:04 -05:00
Schuyler Cebulskie
15240cfdc3 Fix contributing link on docs site, link node.js 2017-02-22 19:23:37 -05:00
Programmix
bf25caf3d3 Updated VoiceConnection to use new Util class (#1210)
pls @Gawdl3y pls
2017-02-22 22:10:26 +00:00
Amish Shah
b55e6927e9 merge fix 2017-02-22 20:39:21 +00:00
Amish Shah
8a2ec437e5 Merge branch 'master' into indev-prism 2017-02-22 20:37:59 +00:00
Gus Caplan
4c9d8d6cd7 add lots of group dm features (#1208)
* group dm stuff

* minor doc changes
2017-02-22 20:33:20 +00:00
Joschua Schneider
5c2086b351 Allow presence updating to allow null games (#1186)
* Adding resetGame functionallity

`setGame` method would allways result in an Object passed to `setPresence`.
Passing { game: null } (supported by discords WebSocket gateway to reset the current Game) to `setPresence` would still result in a Game Object sent to the endpoint.
Explicitly setting `game` to null should overwrite the `game` object provided by `localPresence` or `client.presence`.
This was neither supported by `setGame` or `setPresence`.

* Missing semicolons to resetGame and setPresence

* Fixing trailing spaces, commas and semicolons

* Moving resetGame functionality into setGame method

Minification of if statement in setPresence.
Removing resetGame method and adding a case for `game === null` to setGame method

* Adding missing space in setGame method

* Fix docs
2017-02-22 20:24:39 +00:00
lipgloss
f068010e96 Implement 'Modify Guild Channel Positions' (#1198)
* Adding shuffleArray method to utils

* Shuffle channels functionality on guild.

* Comment fix

* Removing shuffle functionality and replacing with a simple update

* Code review changes to method/variable names

* Update comment reference to channelId as well

* Updating jsdoc with typedef of ChannelPosition
2017-02-22 20:24:05 +00:00
Programmix
7fd94c29d8 VoiceConnection rework (#1183)
* VoiceConnection rework

- improves codebase
- removes concept of pending connections
- attempts to fix memory leaks by removing EventEmitter listeners
- makes voice connections keep track of its own channel when it is moved by another user
- allows voice connections to reconnect when Discord falls back to another voice server or a region change occurs
- adds events for some of the aforementioned events

* Removed unused code

* More clean up / bugfixes

* Added typedefs to Status and VoiceStatus constants
2017-02-22 20:13:52 +00:00
Gus Caplan
566135d25b move permission stuff to the resolver (#1185) 2017-02-22 20:11:11 +00:00
Programmix
eb069d0249 Added volumeChange event to VoiceInterface (#1207)
VoiceBroadcast relies on this event to initialize a new Opus engine
2017-02-22 20:10:19 +00:00
Zack Campbell
f01b3f922d Update typings submodule (#1206) 2017-02-22 20:09:49 +00:00
Gus Caplan
61e12c637b Add support for more OAuth features (#1203) 2017-02-22 20:09:40 +00:00
Programmix
d09dfa4c37 Capitalize channel type constants (#1209) 2017-02-22 20:08:47 +00:00
Schuyler Cebulskie
b0338df7db Add more required permissions to Guild#addMember 2017-02-21 15:09:46 -05:00
Schuyler Cebulskie
8d1bc30e40 Clean up dd6dd6f 2017-02-21 15:07:54 -05:00
Zack Campbell
db5259cdf1 Add RichEmbed#attachFile (#1202)
* Add RichEmbed#attachFile

Mostly for attaching local images that can be accessed within the embed image/author icon/footer icon via `attachment//filename.png` and the like.

* Update docstring to reflect valid param types

* Update TextBasedChannel.js

* Update RichEmbed.js

* Update RichEmbed.js
2017-02-21 14:29:37 -05:00
Gus Caplan
d4a84915e6 Add timeout/interval methods to WebhookClient (fixes #1181), and clean up docs (#1204)
* fix up 1181

* Clean up documentation

* Update WebhookClient.js
2017-02-21 14:16:41 -05:00
Schuyler Cebulskie
f2a6c1d98c Improve Client docs a bit more 2017-02-21 14:02:29 -05:00
Kelvin Wu
d870b27ece Message#member should be a nullable. (#1205) 2017-02-21 13:49:20 -05:00
Jamelele
1273bb42ec Doc fixes (#1197)
* Improve ban/unban examples

* Fix example comments

* Replace nondescript 'user' parameter with 'some user ID'

* Update Guild.js

* Update Guild.js
2017-02-19 16:06:18 -05:00
Jamelele
12136f8c54 Welcome example (#1194)
* Add user greeting example

* Add welcome.js to index.yml

* Reword greeting message

* Update welcome.js

* Rename welcome.js to greeting.js

* Update index.yml
2017-02-18 13:59:25 -05:00
Schuyler Cebulskie
05bba9b74a Remove old comment part 2017-02-18 03:13:46 -05:00
Schuyler Cebulskie
7232531eb1 Move all util methods into class
Remove TransformMessageOptions altogether
2017-02-15 22:25:18 -05:00
Schuyler Cebulskie
63ffd8aa7c Clarify bufferutil scenario a bit 2017-02-15 21:04:06 -05:00
Schuyler Cebulskie
8d620ac33f Update typings 2017-02-15 20:32:39 -05:00
Schuyler Cebulskie
b91f8f27be Fix resolveBuffer file failure behaviour 2017-02-15 16:37:31 -05:00
Gus Caplan
ec1ed15c88 Fix request handling (#1180)
* clean up ratelimiters, and disable burst until some big questions are handled

* burst mode is a work

* fix burst again
2017-02-11 12:04:24 +00:00
Mike
dd6dd6fb59 Added support for adding users to guild 2 (#1179)
* Added support for adding users to guild

added RESTMethods#AddGuildMemberOptions and Guild#addMember with typedef
AddGuildMemberOptions to be able to add user to guild as a member
through `PUT/guilds/{guild.id}/members/{user.id}`
https://discordapp.com/developers/docs/resources/guild#add-guild-member

* fixing lint errors

* Changes based on discussion

* Changes based on discussion 2

* Changes based on discussion 3

Yay! More changes.
2017-02-08 21:04:39 +00:00
Zack Campbell
2518a0f7e2 Fix for incorrect oldMember in guildMemberUpdate event after addRole (#1129)
* Fix for incorrect oldMember in guildMemberUpdate event after addRole

`addRole` would modify the cached GuildMember rather than letting it be handled internally when a guild member update packet is received from Discord, leading to the `oldMember` and `newMember` being identical following a call to `addRole`

This is currently how `addRoles` does it, and a correct oldMember is passed to the `guildMemberUpdate` event following a call to `addRoles`

* Return cloned member with added/removed role

So we can return a member object with the added/removed role without affecting the member object sent to `guildMemberUpdate`

* Wait for guildMemberUpdate and return updated GuildMember

* Fix linter errors

* Remove listeners after 10 seconds
2017-02-08 17:38:57 +00:00
Will Nelson
cdb911f2af update setImage documentation (#1177) 2017-02-08 17:18:10 +00:00
Alexander
cc3e7b26b1 Add convenience function RichEmbed.addBlankField (#1139) 2017-02-08 17:17:13 +00:00
Gus Caplan
7c8f534a38 add random color (#1175)
* add random color

* Update ClientDataResolver.js

* Update ClientDataResolver.js
2017-02-07 01:19:43 -05:00
Alex
ab5e57d94b Create Emoji requires a base64 data uri (#1154) 2017-02-06 14:19:03 -05:00
Schuyler Cebulskie
a90bd837af Add sodium to optional packages list 2017-02-06 02:06:01 -05:00
Schuyler Cebulskie
0f6fceebb4 Update voice webpack exclusions 2017-02-06 01:57:08 -05:00
Schuyler Cebulskie
d6f17a9319 Merge branch 'master' into indev-prism 2017-02-06 01:54:31 -05:00
Schuyler Cebulskie
4dc70d8cef Update dependencies and fix tweetnacl webpack exclusion 2017-02-06 01:27:04 -05:00
Jacob
49944747ae Sodium (#1172)
* Use Native libsodium when available

* add newline

* fix typo of exports

* add to webpack ignore

* Update Secretbox.js
2017-02-06 01:24:54 -05:00
Schuyler Cebulskie
b859ba7639 Increase some documentation detail 2017-02-05 23:00:36 -05:00
Amish Shah
26becb570b Fix #1168 (.hasPermission) 2017-02-04 20:58:39 +00:00
Gus Caplan
59ff1d99ba fix types for snowflakes (#1156)
* fix types for snowflakes

* Update TextBasedChannel.js
2017-02-03 21:37:58 -05:00
Funnbot
0b5eeb08f3 clone topic in channel.clone() (#1157)
* Update GuildChannel.js

* Update GuildChannel.js

* Update GuildChannel.js

* Update GuildChannel.js

* Update GuildChannel.js

* Update GuildChannel.js
2017-02-03 21:37:32 -05:00
Gus Caplan
cee9e4839c fix sending code when you aren't splitting the message (#1162)
* fasguhq4wbyghjehuibh

kjgewqhuilb

* Update RESTMethods.js
2017-02-02 16:21:26 +00:00
Gus Caplan
1e94a9e2a4 serious role position stuff (#1159)
* serious role position stuff

* kill meh

* Update Role.js

* Update Guild.js

* Update Role.js
2017-02-01 22:02:16 +00:00
Schuyler Cebulskie
02c23a8b53 Merge branch 'master' into indev-prism 2017-02-01 15:32:18 -05:00
bdistin
a2d6791cd8 Fix CodeBlock Splitting (#1160)
* Fix CodeBlock Splitting

* fix changes requested
2017-02-01 15:31:57 -05:00
Schuyler Cebulskie
e8ac18489e Merge branch 'master' into indev-prism 2017-02-01 15:29:45 -05:00
Schuyler Cebulskie
187f43aebd Make a letter lowercase 2017-02-01 02:06:24 -05:00
Schuyler Cebulskie
c40a511954 Change wording slightly 2017-02-01 02:03:42 -05:00
Schuyler Cebulskie
d51e45f3b9 Add bufferutil info, and uws warning 2017-02-01 02:01:36 -05:00
Schuyler Cebulskie
a5b901f4ef Update ws and opusscript 2017-02-01 01:52:22 -05:00
Alex
ed42d7bd85 Fix backwards GuildEmojiCreate parameters (#1153) 2017-01-31 00:49:11 -05:00
Gus Caplan
8da915f6a1 expose createDM (#1151)
* expose createDM

* Update User.js

* in v12 we are removing these, kay?

* Update GuildMember.js

* Update User.js
2017-01-30 22:56:14 -05:00
Schuyler Cebulskie
f4724d61b2 Fix #1095 2017-01-30 22:54:37 -05:00
Gus Caplan
565c640bc6 Add role support to emoji creation (#1141)
* add role support to emojis

* specify types
2017-01-30 22:47:27 -05:00
Alex
18729b25c7 Add support to edit emojis (#1142)
* Add support to edit emojis

* Fixes for coding style.

* Add and use guildEmoji constants for updateEmoji

* Just use the Constant

* Fix typo in edit documentation

* Specify property types

* Fix ridiculous typo.

* Update Emoji.js
2017-01-30 22:47:05 -05:00
Schuyler Cebulskie
94483ae194 GOODER 2017-01-30 21:52:41 -05:00
Schuyler Cebulskie
f73fd4ec29 get grammer gooder 2017-01-30 21:27:28 -05:00
Schuyler Cebulskie
2e1310ae72 Add web build docs, many other minor doc changes 2017-01-30 21:23:06 -05:00
Schuyler Cebulskie
e9ab9c9f92 Improve scripts 2017-01-30 20:21:53 -05:00
Programmix
78dafb9480 Properly check whether an Opus engine exists (#1150)
* Properly check whether an Opus engine exists

I think I'm retarded

* Fix eslint error

* Update OpusEngineList.js
2017-01-30 16:38:47 -05:00
Gus Caplan
8ee0acf44c make d.js great again (#1149)
get out, donald

* AGHHH

* FUHFUHFUHFUHUFHUHF
2017-01-29 19:10:25 +00:00
Programmix
7ed58f5f7f Added Opus stream support, added volume interface (#1102)
* Added opus stream support, added volume interface

* Remove setImmediate

* Fix weird syntax error

* Most useless commit ever

You're welcome, @PgBiel

* Fix potential memory leak with OpusScript

Emscripten has the tendency to not free resources even when the Opus engine instance has been garbage collected. Thanks to @abalabahaha for pointing this out.

* Typo

* VoiceReceiver.destroy: destroy opus encoder
2017-01-29 19:07:33 +00:00
Programmix
5059c59a31 Message patching: clear mention collections (#1138)
* Message patching: clear mention collections

Fixes #1089
When discord sends an array of mentions, it is a full list of mentions -- therefore, we should clear the old mention collection. The same goes for when we re-analyze the message for channel mentions.

* Use Collection.clear() instead of new Collection
2017-01-29 19:02:54 +00:00
Fiddlekins
6fae17912e Added try catch so that decode errors aren't fatal (#1146)
* Added try catch so that decode errors aren't fatal

* Tweaked the usage of the warn event and updated jsdocs

* Moved method into class for webpack scoping reasons
2017-01-29 18:59:00 +00:00
Digitroinc
448c93615b fix splitting messages #1148)
* fix for issue #1120

* build fix
2017-01-29 18:58:35 +00:00
Gus Caplan
2beb77ab5c check if a guildchannel is deletable (#1143)
* Update GuildChannel.js

* eghhh

* Update GuildChannel.js
2017-01-28 10:07:53 +00:00
Pg Biel
c7f5b44e03 Add User.lastMessage, GuildMember.lastMessage and TextBasedChannel.lastMessage (#1135)
* Add User.lastMessage

* User.lastMessage and GuildMember.lastMessage

* User, GuildMember and TextBasedChannel lastMessage

* Update MessageCreate.js
2017-01-26 21:24:08 +00:00
Programmix
9a6cb6477d VoiceReceiver: multiple streams fix (#1132)
* VoiceReceiver: multiple streams fix

silly hydar... you can't have one Opus engine instance for every stream

* Better creation of opus engine
2017-01-26 21:23:00 +00:00
Gus Caplan
87b600f78f switch to os shim for safety (#1136)
* switch to os shim for safety

* Update Client.js
2017-01-26 21:21:43 +00:00
Programmix
ba11f76284 Fix patching message reactions (fixes #1071) (#1137) 2017-01-26 21:20:40 +00:00
Alex
ba7c2db364 Fix createEmoji/deleteEmoji action name. (#1110) 2017-01-24 21:56:19 +00:00
Alexander
5173583e26 Fix empty search query parameters (#1119)
The search function was sending request to stuff like:
search?author_id=&content=&channel_id=135823828352838352
2017-01-24 21:55:59 +00:00
Programmix
c1a5bee61f GuildMembersChunk packet handler hotfix (#1125)
* GuildMembersChunk packet handler hotfix

* Add limit, resolve properly if a query is used

* Document new GuildMemberChunk param
2017-01-24 21:55:36 +00:00
Gus Caplan
4b2053133d more profile stuff (#1131) 2017-01-24 21:53:26 +00:00
Programmix
c73e501243 Fix RESTMethods.removeMessageReaction (fixes #1114) (#1126) 2017-01-21 19:48:17 -05:00
Gus Caplan
306ea97f99 fix guild member fetching edge cases (#1115)
* thx4tipprogrammixluvubye

* consistancy

* make this loop for some reason

* so impatient
2017-01-21 16:37:28 +00:00
Schuyler Cebulskie
3545e731c0 Renamed webpack build script 2017-01-19 22:07:02 -05:00
Schuyler Cebulskie
f51ba3fb06 Update to Webpack 2.2 stable 2017-01-19 22:04:18 -05:00
Gus Caplan
0300601649 remove redundant editing (#1116)
* remove redundant editing

* update docs
2017-01-19 17:11:24 +00:00
Gus Caplan
1e6abe587b no more (#1117) 2017-01-19 17:10:54 +00:00
Schuyler Cebulskie
b13fdcc8d3 Merged master into indev-prism 2017-01-18 19:23:18 -05:00
Gus Caplan
3f4cbd07dd add voice region getting (#1108)
* add voice region getting

* clean up this mess

* add docstrings

* Update VoiceRegion.js

* Update RESTMethods.js
2017-01-18 19:14:44 -05:00
Gus Caplan
ff92905848 add warning about which class to use for embeds (#1107)
* Update MessageEmbed.js

* Update MessageEmbed.js
2017-01-18 10:55:06 -05:00
Peter Vu
93d8ec3e87 VoiceChannel#full fix on no limit channel for joinable (#1106)
* VoiceChannel#full fix on no limit channel for joinable

* Update VoiceChannel.js
2017-01-16 23:36:29 -05:00
Hackzzila
f8b9bf6884 Fix reaction events (#1105)
* Fix reaction events

* Made it better

* one line ftw
2017-01-16 22:52:25 +00:00
Amish Shah
ba465bc680 Merge branch 'master' into indev-prism 2017-01-15 14:20:32 +00:00
Gus Caplan
8c220e76ec Fix GuildDelete typing stopping (#1098)
* whoops

* ugh

* Update GuildDelete.js
2017-01-14 23:33:26 -05:00
Programmix
d10ca8e7ba Add VoiceChannel#full and improve joinable/join permission checks (#1100)
* Improve voice channel join permission checks

* Update ClientVoiceManager.js
2017-01-14 23:32:17 -05:00
Programmix
7cb5b22ebb @Gawdl3y dun goofed (#1099) 2017-01-14 20:03:26 -05:00
Gus Caplan
48be401330 add clientuser acceptinvite (#1081)
* add clientuser acceptinvite

* Update RESTMethods.js

* Update ClientUser.js

* Update ClientUser.js

* Update RESTMethods.js
2017-01-14 21:25:12 +00:00
Gus Caplan
7f4846c826 Add option to filter old messages in TextBasedChannel#bulkDelete (#1090)
* add filtering for messages older than two weeks

* Update RESTMethods.js

* Update RESTMethods.js

* Update RESTMethods.js

* Update TextBasedChannel.js

* Update RESTMethods.js

* Update RESTMethods.js

* Update RESTMethods.js

* Update RESTMethods.js

* Update TextBasedChannel.js
2017-01-14 16:21:23 -05:00
Gus Caplan
78bf402e8e allow users and members to not be cached (#1097) 2017-01-14 21:20:09 +00:00
Amish Shah
098ad195bd Merge branch 'master' into indev-prism 2017-01-14 21:00:13 +00:00
Gus Caplan
e216fc7a81 stop spamming api, and kill typing when a guild isn't there anymore (#1096) 2017-01-14 17:31:52 +00:00
Schuyler Cebulskie
f647eb7a91 Clean up colour resolver 2017-01-13 22:55:10 -05:00
Schuyler Cebulskie
df02eee065 Fix Guild#large not being accurate for user accounts 2017-01-13 21:47:47 -05:00
Schuyler Cebulskie
ee1c343d78 Update dependencies 2017-01-13 21:26:25 -05:00
Schuyler Cebulskie
1e76f519dc Add missing then 2017-01-13 21:13:54 -05:00
Schuyler Cebulskie
63c8b1b2f2 Add more info to build commit messages 2017-01-13 21:11:08 -05:00
Schuyler Cebulskie
af6c8fa4a4 Make Travis builds skip revert branches 2017-01-13 20:39:03 -05:00
Schuyler Cebulskie
fa85da19a8 Fix Travis builds continuing after failed lint 2017-01-13 20:23:49 -05:00
Amish Shah
7357fc2163 Update typings and increase performance when not listening for presence updates 2017-01-13 19:15:21 +00:00
Amish Shah
f7a4dee4e1 Merge branch 'master' into indev-prism 2017-01-13 18:58:37 +00:00
Gus Caplan
5ac410f352 Cleanup webhooks (#1094)
* clean up webhooks and fix sending messages with webhooks

* whoops

* fix up options

* Update Webhook.js

* Update Webhook.js

* Update Webhook.js

* fix docstring
2017-01-13 18:48:12 +00:00
Schuyler Cebulskie
74fd0421ba Add missing descriptions 2017-01-13 00:18:00 -05:00
Gus Caplan
0d4eab8d24 add color resolvable, and color constants from the client (#1080)
* add color resolvable, and color constants from the client

* fix up docs

* Update ClientDataResolver.js

* add easter eggs

* Update ClientDataResolver.js

* Update RESTMethods.js
2017-01-12 18:43:22 +00:00
Gus Caplan
a3091f5262 Handle 4011 ws event code (#1083)
* 4011

* Update WebSocketManager.js

* smh gawdl3y
2017-01-11 22:59:09 +00:00
Schuyler Cebulskie
b2822c584a Minor doc updates 2017-01-10 19:43:25 -05:00
Schuyler Cebulskie
5caa7df1d8 Add centralised reply option to message options 2017-01-10 19:25:05 -05:00
Schuyler Cebulskie
8b0e5aad38 Fix sendEmbed with array content 2017-01-10 19:22:03 -05:00
Gus Caplan
c37cd3fd91 clean up webhooks and fix sending messages with webhooks (#1078)
* clean up webhooks and fix sending messages with webhooks

* whoops

* fix up options

* Update Webhook.js

* Update Webhook.js

* Update Webhook.js
2017-01-10 16:52:12 -05:00
Amish Shah
b5026909a1 Remove DMChannel.bulkDelete and GroupDMChannel.bulkDelete 2017-01-09 18:20:05 +00:00
Enchanted13
47707d245d Changed return type of Guild.defaultChannel (#1079)
The default channel for a Guild is always the first TextChannel in the Guild, it can't be a VoiceChannel.
2017-01-09 15:35:11 +00:00
Gus Caplan
5e7ae847de switch to proper querystring parser because why not (#1077) 2017-01-08 14:49:56 -05:00
ooookai
4a7284b86e move function getRoute(url) into class APIRequest (#1065)
this.route = getRoute(this.url);
  >>>
this.route = this.getRoute(this.url);
2017-01-08 19:34:06 +00:00
Amish Shah
391b618b3f Merge branch 'indev-prism' of https://github.com/hydrabolt/discord.js into indev-prism 2017-01-08 14:12:36 +00:00
Zack Campbell
b68283e57a Make _array & _keyArray non-enumerable (#1075)
Because Map has no enumerable properties
2017-01-08 11:59:45 +00:00
Amish Shah
fde3a976aa Revert "This expands the consistency of .find and .exists to include the id property" (#1074) 2017-01-08 10:17:10 +00:00
Jacob
2a668ac997 This expands the consistency of .find and .exists to include the id property (#1072)
* provide a more consistent api for .find

* remove random warning

* make code more concise
2017-01-08 09:02:44 +00:00
Programmix
adbd95adf0 Fix VoiceBroadcaster per-dispatcher volume (#1073) 2017-01-08 08:39:48 +00:00
Zack Campbell
4717c34ff6 Update typings submodule (#1069)
Added search stuff
2017-01-07 20:00:36 -05:00
Amish Shah
3b1264ad6d Fix Buffer deprecation stuff 2017-01-07 22:30:20 +00:00
Amish Shah
9f8289e433 don't process empty sets 2017-01-07 22:09:51 +00:00
Amish Shah
de0ba9fb7c change error to debug 2017-01-07 21:48:30 +00:00
Amish Shah
0df17b1634 Add broadcast.destroy(); 2017-01-07 21:39:12 +00:00
Amish Shah
9d36be58ef Fix typo in readme (#1070) 2017-01-07 21:19:37 +00:00
Amish Shah
dc640017cd Fix some stream bugs 2017-01-07 21:10:46 +00:00
Amish Shah
fcd7cf1450 stop destructive ending of broadcasts 2017-01-07 19:44:42 +00:00
Amish Shah
bace8bcac2 make broadcast not suck as much 2017-01-07 19:38:05 +00:00
Schuyler Cebulskie
bac599b52e Merge branch 'master' into indev-prism 2017-01-07 03:42:39 -05:00
Gus Caplan
42527ea969 fix message#isMemberMentioned (#1061)
* fix this

* e

* Update Message.js
2017-01-07 03:38:23 -05:00
Schuyler Cebulskie
e5e36d9111 Rename snowflake class to prevent naming conflicts 2017-01-07 03:37:16 -05:00
Zack Campbell
f76b47184a Fix typo in MessageSearchOptions typedef (#1068) 2017-01-07 03:31:15 -05:00
Schuyler Cebulskie
add3c1a8ee Clean up docs slightly 2017-01-07 03:29:52 -05:00
Schuyler Cebulskie
8cff77726a Detardify snowflake docs/organisation 2017-01-07 03:22:55 -05:00
Gus Caplan
a66b2b7ec5 add more things to clientuser (#1066)
* add more things to clientuser

* add desc
2017-01-05 16:38:48 +00:00
HyperCoder
fdc8050188 Fix <Guild>.large (#1062)
* Fix <Guild>.large

Would either be true or undefined.

* Update Guild.js

* To make hydrabolt happy

* Update Guild.js
2017-01-05 15:43:57 +00:00
Gus Caplan
495264761c Add snowflake utils (#1064)
* snowflakes

* use proper binary for snowflake example

* fix jsdoc errors

* remove dupe
2017-01-05 15:41:42 +00:00
Gus Caplan
d47f9d202b update search to have more useful returns (#1060) 2017-01-03 23:49:19 +00:00
Gus Caplan
7cbe81e71a fix editing with an array (#1059)
* fix editing with an array

* fix build

* put this back because reasons

* i'm having one of those nights
2017-01-03 06:59:34 +00:00
Schuyler Cebulskie
2c26d79f50 Replace custom ArrayBuffer converter with Buffer.from 2017-01-02 01:51:26 -05:00
Schuyler Cebulskie
f485ec22b2 Rename deploy key 2017-01-02 01:49:06 -05:00
Michael Huang
3b9b06227e Fix _removeReaction's reaction lookup (#1045)
* Fix _removeReaction's `this.reactions` lookup

* Use emoji.identifier for reaction collection keys
2016-12-30 21:06:05 -05:00
Schuyler Cebulskie
054d4655c1 Rearrange identifier 2016-12-30 21:05:37 -05:00
Gus Caplan
2b25641270 add option for guilds per shard, and fix type (#1053) 2016-12-30 21:03:23 -05:00
Schuyler Cebulskie
2156ce1e15 Remove unnecessary branch specification 2016-12-30 18:06:08 -05:00
Schuyler Cebulskie
814c4e8617 Merge branch 'master' into indev-prism 2016-12-30 16:49:35 -05:00
Schuyler Cebulskie
8406e97e13 Add a little more info 2016-12-30 16:42:51 -05:00
Schuyler Cebulskie
90f8cbd09a Add a header 2016-12-30 16:40:24 -05:00
Schuyler Cebulskie
f72817fff5 Rewrote v11 upgrade guide 2016-12-30 16:39:37 -05:00
Schuyler Cebulskie
4447e367f6 Fix other BufferResolvables with base64 2016-12-30 16:22:29 -05:00
Schuyler Cebulskie
2ea744c9d1 Reestablish the natural order and heirarchy of all things 2016-12-30 16:19:15 -05:00
Schuyler Cebulskie
eaf2091c2f Rearrange some methods and improve search description 2016-12-30 16:17:31 -05:00
Schuyler Cebulskie
43283eeaec Clean up search examples slightly 2016-12-30 16:15:51 -05:00
Amish Shah
8d8ac78e68 start voice topics 2016-12-30 21:12:13 +00:00
Amish Shah
91e0a81d6b Add playArbitraryInput 2016-12-30 19:20:32 +00:00
Amish Shah
eacbfbd520 Add VoiceBroadcast#playArbitraryInput and VoiceConnection#playArbitraryInput 2016-12-30 19:13:25 +00:00
Amish Shah
ac62a58f47 Merge branch 'master' into indev-prism 2016-12-30 19:00:53 +00:00
Amish Shah
023ac0a7fe Add search() stubs for docs 2016-12-30 18:59:34 +00:00
Amish Shah
4c8e4fde6f Fix remove reaction endpoint 2016-12-30 18:31:48 +00:00
Amish Shah
e2753136a4 Reorganise VoiceBroadcast dispatchers and also add new events 2016-12-30 18:21:22 +00:00
Amish Shah
d13c48bafa more tiny voice docs 2016-12-30 18:10:48 +00:00
Amish Shah
56e01291e2 Merge branch 'master' into indev-prism 2016-12-30 18:05:29 +00:00
Amish Shah
69ccc75590 more voice docs 2016-12-30 17:56:58 +00:00
Amish Shah
221e7f8b21 Voice Connection docs 2016-12-30 17:44:05 +00:00
Amish Shah
50dc9addf1 Fix ESlint error, remove 'long' module import 2016-12-30 17:28:23 +00:00
Amish Shah
f31a3725fe StreamDispatcher documentation 2016-12-30 17:25:28 +00:00
Gus Caplan
bde6749d65 clean up search (#1049)
* add more search stuff

* clean up the options

* fix link hostname

* use some resolvers

* fix type

* move the trasform to a seperate file

* pass this param

* move typedef
2016-12-30 17:21:03 +00:00
Gus Caplan
da32c2ec3d add more search stuff (#1046)
* add more search stuff

* clean up the options

* fix link hostname

* use some resolvers

* fix type
2016-12-30 17:14:31 +00:00
Gus Caplan
258e4b9085 fix setting avatar to buffer (#1048) 2016-12-30 17:00:16 +00:00
Amish Shah
3109accf87 improve broadcasting performance 2016-12-30 15:25:28 +00:00
Amish Shah
fb1d0a3e74 fix eslint 2016-12-30 15:00:56 +00:00
Amish Shah
0a6d71d7e5 try this fix idk 2016-12-30 14:45:43 +00:00
Amish Shah
90ca422485 undo that 2016-12-30 14:30:57 +00:00
Amish Shah
22a6ded341 Defer some creations 2016-12-30 14:27:59 +00:00
Amish Shah
91fc6ccb5c VoiceBroadcasting much more efficient 2016-12-30 13:57:09 +00:00
Amish Shah
bf4010e89c Simplify broadcast creation 2016-12-30 12:46:34 +00:00
Amish Shah
2f630a0dbb AudioPlayer now destroys all dispatchers on closing, Broadcasts are also destroyed properly 2016-12-30 12:43:56 +00:00
Gus Caplan
beffb390e6 Add search (#1043)
* add search

* Update ClientDataResolver.js
2016-12-30 02:44:19 -05:00
Schuyler Cebulskie
f0adf8f122 Fix User#defaultAvatarURL in Node 6 2016-12-30 01:46:56 -05:00
Schuyler Cebulskie
1afb21c981 Tweak output some more 2016-12-30 01:01:16 -05:00
Schuyler Cebulskie
5fd10ef63e Tweak Travis output 2016-12-30 00:53:53 -05:00
Schuyler Cebulskie
bcbd187223 Fix test-docs script 2016-12-30 00:07:24 -05:00
Schuyler Cebulskie
e44d571671 Add PR number output to Travis build 2016-12-30 00:06:24 -05:00
Schuyler Cebulskie
ed08c24784 Add Node 7 testing and prettify output 2016-12-30 00:05:43 -05:00
Schuyler Cebulskie
55ee566fb2 Improve Travis builds 2016-12-29 23:51:56 -05:00
Schuyler Cebulskie
b5f51d612a Merge branch 'master' into indev-prism 2016-12-29 23:15:41 -05:00
Schuyler Cebulskie
be19a08575 Make Travis builds run for all but blacklisted branches 2016-12-29 23:12:44 -05:00
bdistin
9e70d6279f Fix erroneous docs examples (#1042) 2016-12-29 22:01:18 -05:00
Schuyler Cebulskie
89cea574be Add prism-media dependency 2016-12-29 20:06:48 -05:00
Schuyler Cebulskie
77548c194f Add missing type 2016-12-29 20:01:30 -05:00
Schuyler Cebulskie
863e34db19 Change branch in contributing guide 2016-12-29 19:21:19 -05:00
Amish Shah
c6f17054fc Remove unused fs import 2016-12-29 22:59:43 +00:00
Amish Shah
12605575fb Add VoiceBroadcast.pause and VoiceBroadcast.resume 2016-12-29 21:59:36 +00:00
Amish Shah
ad18b05d66 Reset what is playing 2016-12-29 21:51:23 +00:00
Amish Shah
72a99f9582 start work with broadcast streams 2016-12-29 21:22:13 +00:00
Amish Shah
e9af3f0a1f Merge branch 'indev' into indev-prism 2016-12-29 19:02:54 +00:00
Gus Caplan
22b1c425ac add ClientUser.settings (#1041)
* add user settings

* Update Ready.js
2016-12-29 18:58:39 +00:00
Amish Shah
ebd2f0e73f Update ws dependency to 1.1.1 for security 2016-12-29 17:31:49 +00:00
Amish Shah
f8440ad565 Merge branch 'indev' into indev-prism 2016-12-29 17:26:22 +00:00
Amish Shah
ab4b7ea19a update docs 2016-12-29 17:11:10 +00:00
Amish Shah
c8f6b6b059 update typings 2016-12-29 16:41:39 +00:00
Amish Shah
f613cc3c50 Version bump package.json 2016-12-29 16:37:39 +00:00
Amish Shah
dc53b8de95 Merge branch 'indev' 2016-12-29 16:37:00 +00:00
Schuyler Cebulskie
6e51a44f92 Small doc updates 2016-12-29 11:19:30 -05:00
Amish Shah
4541b3e264 Simplify check in StreamDispatcher and add test voice bot 2016-12-29 16:10:51 +00:00
Zack Campbell
665ef21c85 Update DMChannel, GroupDMChannel for docs (#1038) 2016-12-29 11:04:41 -05:00
Schuyler Cebulskie
3e3de51545 Update message sending docs 2016-12-29 11:01:27 -05:00
Schuyler Cebulskie
ba77e69edf Document boolean for code option 2016-12-29 10:51:05 -05:00
Schuyler Cebulskie
86ffc86324 Update updateMessage with the new code logic 2016-12-29 10:49:59 -05:00
Schuyler Cebulskie
650acbf662 Improve codeblock lang 2016-12-29 10:44:24 -05:00
Amish Shah
1452fa5014 Merge branch 'indev' into indev-prism 2016-12-29 14:19:39 +00:00
Amish Shah
75d45bd587 Fix sending codeblocks without a lang 2016-12-29 14:18:39 +00:00
Amish Shah
627a8870f5 change error emission logic 2016-12-29 14:14:27 +00:00
Amish Shah
e1d01ed6a2 Merge branch 'indev' into indev-prism 2016-12-29 14:04:05 +00:00
Amish Shah
6d7293e3c5 Fix sending an array of messages 2016-12-29 14:00:54 +00:00
Schuyler Cebulskie
95790dcf08 Update User#equals doc 2016-12-29 03:21:22 -05:00
Schuyler Cebulskie
1b76333b8b Add missing @typedef line 2016-12-29 03:04:11 -05:00
Schuyler Cebulskie
fe7ed523b3 Improve ClientUser presence method docs 2016-12-29 03:01:34 -05:00
Gus Caplan
ed8fcf651a Centralise message sending logic in one method, remove sendTTSMessage, add client shortcut in RESTMethods (#1031)
* start wip rewrite of sending/editing messages

* pass the build, modify the edit method to fit the new system

* simplify the applyToClass method

* change handling of file options

* add back message splitting

* i couldn't help myself

* add some smart message options

* clean up, add sexy options

* fix indentation

* fix up splitting

* add \b

* add back old methods for hydar happiness

* clean up more

* move code handling to the rest method

* clean up this.rest.client

* Update TextBasedChannel.js

* add docs back for the bad methods

* fix reply in group dms

* srsly gawdl3y

* make code better

* fix changes for gawdl3y

* fix checking

* remove getter

* make code handling more robust

* k

* fix up sendEmbed docs

* stupid

* fix up more docs because aaaaa

* no more pls
2016-12-28 23:58:30 -05:00
Schuyler Cebulskie
a014b59790 Update webpack 2016-12-28 21:35:19 -05:00
Schuyler Cebulskie
17a61731ef Update typings (test) 2016-12-28 20:40:07 -05:00
Zack Campbell
dfa6740b89 Update gitmodules (#1036)
To reflect transfer of ownership of the typings repo, in case the source forwarding does not continue indefinitely going forward
2016-12-28 19:52:15 -05:00
Amish Shah
7ede44bc00 Add CloseEvent external 2016-12-29 00:27:40 +00:00
Amish Shah
18e04d69f1 Delete stream setups after they have ended or errored 2016-12-29 00:16:13 +00:00
Amish Shah
e64d9c6057 fix odd bug 2016-12-28 23:58:01 +00:00
bdistin
ea798eaaf3 Update Missing Permission Resolvables (#1035) 2016-12-28 18:27:02 -05:00
Amish Shah
e7824d6515 Fix weird audio playback bug between subsequent streams on an AudioPlayer 2016-12-28 23:21:34 +00:00
Schuyler Cebulskie
c1b9437f0d Set up typings submodule 2016-12-28 18:20:38 -05:00
Zack Campbell
e4bae99747 Update GuildResolvable typedef (#1034)
To reflect the resolver supporting Guild ID strings
2016-12-28 16:50:32 -05:00
Amish Shah
00254f35b0 Make voice return streamdispatcher 2016-12-28 21:40:11 +00:00
Schuyler Cebulskie
bbeef44e66 Update ClientDataResolver.js 2016-12-28 16:32:14 -05:00
Schuyler Cebulskie
8e47058286 Update ClientDataResolver.js 2016-12-28 16:30:15 -05:00
Schuyler Cebulskie
289447e4c9 Update Client.js 2016-12-28 16:28:36 -05:00
Amish Shah
4294d267e7 Add playFile back to voice connection 2016-12-28 19:23:11 +00:00
Gus Caplan
3451367591 fix the everyone role mentioning (#1032) 2016-12-28 19:04:54 +00:00
Amish Shah
0a47d0e1d6 Remove old stuff 2016-12-28 18:16:26 +00:00
Amish Shah
8e75b47a7b add back seek option 2016-12-28 17:37:56 +00:00
Amish Shah
8cf520d5af update streamDispatcher 2016-12-28 17:28:14 +00:00
Amish Shah
be32bbc3a4 really really really messy implementation of prism 2016-12-28 17:04:18 +00:00
Gus Caplan
8d966932a9 funny (#1030) 2016-12-28 01:42:42 -05:00
bdistin
4d2153c7c6 Document ShardingManager#message (#1024)
* Document ShardingManager#message

* Update Shard.js
2016-12-27 22:44:17 -05:00
Zack Campbell
265021bfa5 Add sendEmbed to GuildMember for docs (#1028)
* Add sendEmbed to GuildMember for docs

* Update GuildMember.js
2016-12-27 22:35:11 -05:00
Schuyler Cebulskie
84991c767e Improve some Gus shenanigans 2016-12-27 22:30:51 -05:00
meew0
14ba0373eb Fix a small spelling mistake in a debug log 2016-12-27 23:16:30 +01:00
Gus Caplan
779681e88f "knock knock. who's there? ack lol. GET OFF MY PORCH!" (#1023) 2016-12-27 17:31:23 +00:00
Gus Caplan
bac4ccead7 "knock, knock. who's there. discord, lol" (#1021) 2016-12-27 12:13:57 +00:00
Gus Caplan
b79533e373 correctly handle invalid session (#1020)
* correctly handle invalid session

* give discord some time, use it wisely
2016-12-27 00:04:09 +00:00
Amish Shah
b0c2f818a8 Remove cached events 2016-12-26 21:56:04 +00:00
Amish Shah
f510dc5a10 Merge branch 'indev' of https://github.com/hydrabolt/discord.js into indev 2016-12-26 21:30:30 +00:00
Amish Shah
bf7767fe2c Rename emoji events 2016-12-26 21:30:27 +00:00
Schuyler Cebulskie
758c801dd5 Change to function declaration 2016-12-26 15:40:34 -05:00
Alexander
b1473b1e4c Change RichEmbed to take StringResolvables (#1010)
Changed RichEmbed to take StringResolvables for all title, name, value and
description arguments.

Also changed a few lines in setColor to make sure that the value
assigned to this.color is always a number.
2016-12-26 15:39:07 -05:00
Amish Shah
72c667b307 Fix potential ReferenceError with GuildMembersChunk 2016-12-26 20:20:58 +00:00
Amish Shah
cd657be8be Add functionality for GuildEmoji events 2016-12-26 19:21:00 +00:00
Gus Caplan
2410fdf8d2 fix heartbeats once and for all (#1016) 2016-12-25 16:28:36 +00:00
Schuyler Cebulskie
fb6a8d1637 Update webpack and clean up deps 2016-12-24 20:25:29 -05:00
Schuyler Cebulskie
218920e4f1 Fix logo on GitHub 2016-12-24 20:02:36 -05:00
Schuyler Cebulskie
74c3bae506 Teensy weensy cleanup 2016-12-24 19:54:37 -05:00
Schuyler Cebulskie
ab30715028 Fix Hydar's lint errors 2016-12-24 19:49:24 -05:00
Amish Shah
544e456302 Add ClientOptions.restTimeOffset for better performance for bots with a good network connection 2016-12-24 12:13:42 +00:00
Gus Caplan
3eca3ba95e add handler in case heartbeat is not acked (#1013)
* add handler in case heartbeat is not acked

* ffs
2016-12-24 11:04:27 +00:00
Gus Caplan
7c12fdcb56 add payload_json instead of the current iterator (#1015) 2016-12-24 02:04:18 -05:00
Schuyler Cebulskie
28ca83011c Implement missing Collection#reduce functionality 2016-12-24 01:59:14 -05:00
Gus Caplan
265ac90234 Update Constants.js (#1014) 2016-12-23 18:41:04 +00:00
Amish Shah
2ab5bae69a change let to const 2016-12-23 18:38:48 +00:00
Amish Shah
e63432c18e Fix editing role positions (fixes #864) 2016-12-23 16:45:47 +00:00
Gus Caplan
e6a041241b cleanup ws ratelimiting, and apirequest (#957)
* cleanup ws ratelimiting, and apirequest

* cleanup timestamps

* clean up timestamps
2016-12-23 14:37:43 +00:00
Amish Shah
74ef0b2e14 minor fixes 2016-12-23 14:37:35 +00:00
Amish Shah
b518437f52 Emit the close event on disconnect 2016-12-23 13:59:06 +00:00
Gus Caplan
2390e525ef Fix User#avatarURL for Nitro animated avatars (#1012)
* fix avatar url

* switch to cdn
2016-12-23 00:57:49 -05:00
bdistin
f726db2152 Revert error emit on Slow Stream Gen (#1011) 2016-12-22 22:24:31 -05:00
Gus Caplan
cecb0aee02 Update User#setEmail/setPassword/setUsername (#991)
* fix some things with user updates and tokens and such

* fix stupid

* Update ClientUser.js

* Update ClientUser.js
2016-12-22 15:12:29 -05:00
Hackzzila
84954c8860 Add notice about disabling events (#1008)
* Add notice about disabling events

* fix english

* Update Constants.js

* Update Constants.js

* Update Constants.js

* Update Constants.js
2016-12-22 15:01:04 -05:00
Zack Campbell
4580f62a1f Add RichEmbed to typings (#1009) 2016-12-22 14:50:28 -05:00
Gus Caplan
fa7d63a10a add an invite generator (#993)
* add an invite generator

* `number |= null` is safe, so we can simplify this

* Update Client.js

* aaaaaa
2016-12-20 23:37:36 +00:00
Gus Caplan
9486609ef9 Create .tern-project (#1003) 2016-12-20 23:37:19 +00:00
Gus Caplan
c483dd8239 add some useful events (#1004) 2016-12-20 23:37:06 +00:00
Gus Caplan
84503c8877 add User#dmChannel (#1005)
* add User#DMChannel

* Update User.js

* Update User.js
2016-12-20 23:36:43 +00:00
Gus Caplan
e392107369 add ClientUser#fetchMentions (#999)
* add ClientUser#fetchMentions

Signed-off-by: Gus Caplan <gus@localhost.localdomain>

* ugh

* Update ClientUser.js

* Update ClientUser.js

* Update ClientUser.js
2016-12-19 02:16:27 -05:00
Gus Caplan
a0a3989e59 fix issue with uncached channels and adding members (#1001)
* fix this thing

* fix a silly

* Update Guild.js
2016-12-19 02:11:55 -05:00
Gus Caplan
b74c1b70b6 fix 992 (#994) 2016-12-18 16:06:42 -05:00
Will Nelson
736fa7c611 friendlier notification of an invalid token (#997)
* friendlier notification of an invalid token

* fixed

* even fixeder

* no token -> invalid token

* eslint

* Update RESTMethods.js
2016-12-17 13:22:39 -05:00
Gus Caplan
6c38b83923 fix runkit/tonicdev example (#998) 2016-12-17 17:44:25 +00:00
Schuyler Cebulskie
361547a588 Fix a bunch of capitalisation issues 2016-12-15 20:10:38 -05:00
bdistin
fbe1929bde Pass Reason to the streamDispatcher end event (#985)
* Pass Reason to the streamDispatcher end event

* Update <dispatcher>.end() to bring inline with <collector>.stop()

Also changed "Stream is not generating quickly enough." from an end to an error, per Crawl...

* Fix docs Copy/Paste fail from collection end event
2016-12-15 16:32:37 +00:00
Gus Caplan
a20bac7258 update per issue 69 on the h&c github (#963)
* update per issue 69 on the h&c github

* clean up things that don't exist anymore
2016-12-15 16:32:19 +00:00
Gus Caplan
9c59b649ad get rid of user agent errors (#990) 2016-12-15 16:32:06 +00:00
Schuyler Cebulskie
36be4c47f6 Change welcome logo to reference static one on site 2016-12-14 21:05:48 -05:00
Schuyler Cebulskie
33a4388121 Switch to SVG logo 2016-12-14 20:42:51 -05:00
Gus Caplan
2e7472bb1a just webpack things (#988) 2016-12-14 19:40:47 -05:00
Alexander
264ee8e7f1 Equals updates (#987)
* Docs update

Changed the param names and param descriptions to be consistent.

* Added === comparison

Changed Presence.equals and Game.equals to first compare using ===

* Collection.equals fix

Now returns false when collection is undefined, instead of crashing
💯
2016-12-14 17:10:34 -05:00
Alexander
906bb3c5f3 Utilise Collection#equals for structures' equals (#986)
Utilizing Collection.equals in GuildChannel.equals
Utilizing Collection.equals in GroupDMChannel.equals
2016-12-14 15:35:40 -05:00
Schuyler Cebulskie
bef0523ebf Capitalise ID in Guild#applicationId 2016-12-14 13:04:40 -05:00
Schuyler Cebulskie
f1c4ef659e Fix a Hydar thing 2016-12-14 12:40:02 -05:00
Schuyler Cebulskie
4e76251aa2 Fix some Gus stuff 2016-12-14 12:37:23 -05:00
Gus Caplan
8139bef4e2 add some missing properties (#978)
* add premium to profile

* add other missing stuff
2016-12-14 17:23:22 +00:00
Pio
1c61b46660 Fix setBitrate typo in VoiceChannel.js (#984)
Fixed simple typo that prevented setBitrate method from working.
2016-12-14 09:45:09 -05:00
Zack Campbell
8596eadb25 Bring in latest typings fix (#982) 2016-12-13 20:43:49 -05:00
Perry Berman
78026df1df fix defaultAvatarURL (#983)
looks like someone forgot how to caps
2016-12-13 20:43:28 -05:00
Cole
586d652c16 Quality of life changes (#968)
* + Added function to get a user's default avatar
+ Added HOST constant to Constants
+ Added assets endpoint
+ Added quality of life function to get a user's avatar or default avatar
+ Added quality of life function to get member's nickname or username

* * Fixed invocation of a getter.

* Fixed lint issue

* Made the API constant use the HOST constant for DRY-ness
Changed DOC comment to be more descriptive

* Update GuildMember.js
2016-12-12 22:34:19 -05:00
bdistin
3193df792e Added Missing Author URL Option (#979) 2016-12-12 22:29:39 -05:00
Hackzzila
52a83b9218 Add ffmpeg-binaries as a possible source of ffmpeg (#975)
* Add ffmpeg-binaries as a possible source of ffmpeg

* Add note in faq
2016-12-11 19:02:00 +00:00
Gus Caplan
d766e727a1 add GuildChannel#clone (#973)
* add GuildChannel#clone

* e
2016-12-11 09:07:52 +00:00
bdistin
710d3db94f RichEmbed Tweaks/Improvements (#964)
* RichEmbed Tweaks/Improvements

Changed .addTimestamp() to .setTimestamp() to bring it inline with all other single value settings.
Changed Field value to StringResolveable from String to bring it inline with typical sendMessage functionality.

* Lint Fix

* Remove Default, Add check for undefined
2016-12-09 22:10:50 -05:00
Slamakans
b79a91b3a9 new errors for richembed yay (#966)
* Update faq.md (#949)

* fix docs

* Revert "fixed typo in documentation" (#950)

* new errors for richembed yay

Simplified the parsing for color arrays.

Throwing some errors on values that would result in Bad Requests.

Changed setAuthor and setFooter's icon parameter to icon_url to match
the embed object's property name.

Changed the docs for setFooter to reflect that icon_url is optional.

* changed docs instead of arg names

* capitalization
2016-12-09 22:09:55 -05:00
Gus Caplan
c5f93eb44e Add more MessageEmbed stuff (#970)
* this is why wrapping data 1:1 is a bad idea

* ffs

* whoever wrote role.hexColor is a bad, bad person

* Update MessageEmbed.js

* Update MessageEmbed.js
2016-12-09 22:07:34 -05:00
Gus Caplan
e51fed968d hydarplz (#962) 2016-12-09 20:47:56 +00:00
Amish Shah
a54a62787d simplify README 2016-12-09 17:37:48 +00:00
Will Nelson
275d9d3ce0 fix remove reactions return (#961) 2016-12-07 10:12:00 -05:00
Schuyler Cebulskie
a0de75f290 Improve ShardClientUtil warnings/errors 2016-12-07 00:30:36 -05:00
Gus Caplan
b177aefdd6 add user/member lastMessageID (#959)
* add user.lastMessageID

* stupid

* add member.lastMessageID
2016-12-06 23:46:32 -05:00
Gus Caplan
050d3f9303 fix serialize for webpack (#960)
* fix serialize for webpack

* Update WebSocketManager.js

* Update WebSocketManager.js
2016-12-06 23:45:31 -05:00
Évelyne Lachance
f9bf0ed5e6 Quick fix for error in guildMemberRole
Because Gus is a massive derp.
2016-12-06 18:35:33 -05:00
Gus Caplan
d67ecdd2af fix authenticating role updates (#956)
* Update RESTMethods.js

* Update RESTMethods.js
2016-12-06 17:23:40 +00:00
Zack Campbell
37bfdd154c Fix embed footer text length error (#955) 2016-12-05 20:50:25 -05:00
Zack Campbell
daa79b7f97 Add more errors for RichEmbed builder char limits (#954)
* Add more errors for RichEmbed builder char limits

Might as well if we're erroring on number of fields when that's the one limit that doesn't actually throw a bad request.

* Fix name.length check in previous commit

* Update RichEmbed.js

* Update number of fields error message
2016-12-05 20:33:58 -05:00
bdistin
8eff36b744 Fix reconnect when using WS (#952)
* Fix reconnect when using WS

* Add disconnect status (fix reconnect with WS)
2016-12-05 21:06:49 +00:00
Schuyler Cebulskie
977e29ceba 👏 @Programmix 2016-12-04 20:25:24 -05:00
Amish Shah
8f8e0b1e52 fix that 2016-12-04 13:08:50 +00:00
Amish Shah
d6218050ba export constants 2016-12-04 13:08:22 +00:00
Schuyler Cebulskie
bd00bc404c Make Collection#set/delete return the result of the super call, and clean up equals docs 2016-12-03 21:38:27 -05:00
Slamakans
a0b245bfe1 equals function added (#948)
Adds an equals function that checks for differing size and differing
key-value pairs, and takes into account the edge case for when there's
an entry for the key, but the value is undefined.
2016-12-03 21:34:26 -05:00
Amish Shah
a53dcd52e7 link discord-rpc 2016-12-03 23:23:36 +00:00
Amish Shah
4bb2afe7cb Revert "fixed typo in documentation" (#950) 2016-12-03 20:16:17 +00:00
Amish Shah
eb253eef45 fix docs 2016-12-03 19:50:14 +00:00
Benjamin Leuckefeld
1d9d246870 Update faq.md (#949) 2016-12-03 18:49:43 +00:00
Schuyler Cebulskie
d3687cb20d Fix typo 2016-12-03 01:11:37 -05:00
Gus Caplan
638e51a18c support new guild member role endpoints for cleaner role updates (#901)
* support new roles endpoints

* use promise chaining

* properties man

* Update RESTMethods.js

* Update RESTMethods.js

* Update RESTMethods.js

* Update RESTMethods.js
2016-12-02 23:46:55 -05:00
Programmix
8b7ef0c850 Add Message.fetchWebhook (#947)
* Add Message.fetchWebhook

* Update Message.js
2016-12-02 22:59:44 -05:00
Schuyler Cebulskie
c0aa6bd30f Work around Node's module loading 2016-12-02 22:55:37 -05:00
Schuyler Cebulskie
6adc8a9d0d Move a getter around 2016-12-02 22:47:12 -05:00
Programmix
676a895da7 Add Message - webhookID, isMemberMentioned (#946)
* Add Message - webhookID, isMemberMentioned

* Update Message.js

* Update Message.js

* Update Message.js

* Update Message.js
2016-12-02 22:35:01 -05:00
Gus Caplan
6cfbf76406 add more embed stuff (#939)
* add fun embed stuff

* add more docstrings

* fix gawdl3y

* Update RichEmbed.js
2016-12-02 21:59:38 -05:00
Schuyler Cebulskie
e141deb7ef Update installation info 2016-12-02 21:42:49 -05:00
Gus Caplan
1e5afc1608 Add etf encoding support with erlpack (#943)
* the performance from this is astounding

* help uws

* save 15 bytes in webpacks

* update readme

* why is markdown like this

* optimizations

* Update WebSocketManager.js
2016-12-02 21:35:59 -05:00
Schuyler Cebulskie
58c7c2e7b8 Add client ping stuff 2016-12-02 20:58:19 -05:00
Schuyler Cebulskie
2488e1a00f Improved the definition of structures' client properties 2016-12-02 19:52:27 -05:00
Gus Caplan
edfb27f428 switch to cdn endpoints, add guild splash url (#932) 2016-12-01 19:33:15 -05:00
Amish Shah
6043a1f83a Fix #937 (guild member presence before READY) 2016-11-30 20:31:07 +00:00
Schuyler Cebulskie
ac68e9f077 Switch Travis to Ubuntu 14.04 2016-11-28 23:35:25 -05:00
Amish Shah
1933451d2f fix reconnecting 2016-11-28 16:14:34 +00:00
Amish Shah
b335824570 potentially fix #910, guild sync no longer assumes unknown users are new to the guild 2016-11-28 15:41:57 +00:00
Schuyler Cebulskie
57af84bc95 Clean up Guild#setRolePosition slightly 2016-11-27 20:09:41 -05:00
Schuyler Cebulskie
6dc93a0184 Simplify Role#setPosition 2016-11-27 20:03:44 -05:00
Schuyler Cebulskie
769ea5b50f Add more detail to error message 2016-11-27 19:39:10 -05:00
Schuyler Cebulskie
8e7cb7fc4e Revert "Escape the backslash (#931)"
This reverts commit 5fb4e257c8.
2016-11-27 18:31:27 -05:00
Vap0r1ze
5fb4e257c8 Escape the backslash (#931) 2016-11-27 22:38:42 +00:00
Hackzzila
d9400ba289 fix readme spacing bug (#930) 2016-11-27 22:10:57 +00:00
Schuyler Cebulskie
cc9e484276 Fix a thing Gus noticed 2016-11-27 16:23:17 -05:00
Hackzzila
1aed3de647 Add note about uws in readme (#929) 2016-11-27 20:22:09 +00:00
Hackzzila
6afd80cf53 Make uws a peer dep, and readd ws (#928)
* Make uws a peer dep, and readd ws

* if -> else if
2016-11-27 19:59:50 +00:00
acdenisSK
b85a589a01 Add typings (#925) 2016-11-27 15:28:46 +00:00
Amish Shah
9323882a8d fix disabledEvents 2016-11-27 12:01:51 +00:00
Schuyler Cebulskie
dc6c1140bc Improve some JSDocs 2016-11-27 01:08:08 -05:00
Amish Shah
0d574a0678 Address #919, add WSEventType typedef 2016-11-26 23:01:47 +00:00
Amish Shah
e2932c05f2 whoops fix derp 2016-11-26 22:43:41 +00:00
Amish Shah
27e77d3839 Fix Role.setPosition not returning Role (addresses #902) 2016-11-26 22:42:33 +00:00
Will Nelson
4ae1f63a97 fix message.edits (#924) 2016-11-26 21:59:18 +00:00
Schuyler Cebulskie
85a7eab5bb Update examples URL 2016-11-26 00:47:16 -05:00
Schuyler Cebulskie
c683790de7 Remove old uws-specific code (0.11.1 has the good stuff) 2016-11-25 19:40:53 -05:00
Will Nelson
eedc097f3f fix playConvertedStream (#923) 2016-11-24 17:08:55 -05:00
Schuyler Cebulskie
ac64f8bd23 Improve rest args docs 2016-11-24 11:22:13 -05:00
Gus Caplan
945a2e370a fix voice ws (#922) 2016-11-24 02:39:01 -05:00
Gus Caplan
0008a18deb Fantastic PR #368 by Gus (#921) 2016-11-23 22:16:19 -05:00
Schuyler Cebulskie
91a69fb761 Update docgen dependency 2016-11-23 20:07:37 -05:00
Gus Caplan
c91ee7a3e7 Replace ws with uws (#918)
* change to uws (waiting for the next release tho)

* clean up, fix reconnections (maybe)

* change voice to use uws

* so messy
2016-11-23 19:30:00 -05:00
Schuyler Cebulskie
32879419e2 Fix dispatcher doc 2016-11-23 02:51:10 -05:00
Schuyler Cebulskie
c4b2077666 Rename Avatars.js to avatars.js 2016-11-22 19:54:24 -05:00
Schuyler Cebulskie
338aa58386 Set up new-new custom docs mechanism 2016-11-22 19:50:05 -05:00
Schuyler Cebulskie
c3d14636ab Missing files 2016-11-22 18:40:49 -05:00
Schuyler Cebulskie
77353e5220 Fix names of custom docs 2016-11-22 18:40:18 -05:00
Schuyler Cebulskie
a8bb20204b Fix paths 2016-11-22 18:34:08 -05:00
Schuyler Cebulskie
7c97244854 Move to new docgen 2016-11-22 18:24:29 -05:00
Schuyler Cebulskie
c8858de71e Change to zlibjs release 2016-11-22 01:05:53 -05:00
meew0
c2b5eb291a Ignore commit failures due to no changes being made (#912) 2016-11-21 12:09:49 -05:00
Schuyler Cebulskie
a4193553e2 Optimise websocket events 2016-11-20 23:39:40 -05:00
Schuyler Cebulskie
0d754d1fbb Change the way modules are excluded from webpack 2016-11-20 23:19:53 -05:00
Schuyler Cebulskie
ee4a8bb3b6 Made Client.browser a getter 2016-11-20 22:45:59 -05:00
Schuyler Cebulskie
f6a60581c4 Remove even more stuff from web dists 2016-11-20 22:40:06 -05:00
Schuyler Cebulskie
7e69475d11 Just to please Gus 2016-11-20 22:06:38 -05:00
Schuyler Cebulskie
f38944c8f6 Add ShardingManager web dist info 2016-11-20 21:50:36 -05:00
Schuyler Cebulskie
66845e2f68 Ensure ws doesn't get built 2016-11-20 21:46:35 -05:00
Schuyler Cebulskie
697fa15278 Add web dist info to readme 2016-11-20 21:42:39 -05:00
Schuyler Cebulskie
18dc95e1bd Ensure opusscript and node-opus don't get built 2016-11-20 21:17:07 -05:00
Schuyler Cebulskie
049ab42eb4 Do stuff slightly better 2016-11-20 20:54:40 -05:00
Schuyler Cebulskie
3ef16f97c4 Remove dynamic requires 2016-11-20 20:52:39 -05:00
Schuyler Cebulskie
411c9bd32c Update to Webpack 2.1 beta 27 2016-11-20 20:19:43 -05:00
Schuyler Cebulskie
6383d42eb5 Update to superagent 3 2016-11-20 20:08:59 -05:00
meew0
176859e7da Add webpack building, ESLint on PRs, and tag building to Travis (#911)
* Make Travis run ESLint before deploying

* Fix Travis never building docs for tags

* Update deploy.sh to also build the webpack

* Update deploy.sh
2016-11-20 19:57:24 -05:00
Gus Caplan
2440a4a2c8 Add webpack building (#907)
* friggin webpack tho

* probably important

* add all the stuff to the package.json

* add minify builds and a nice package.json script to run it all

* clean up

* use uglify harmony branch so we can actually run minify builds that work

* update build system

* make test better

* clean up

* fix issues with compression

* ‮

* c++ requirements in a node lib? whaaaaat?

* fix travis yml?

* put railings on voice connections

* 🖕🏻

* aaaaaa

* handle arraybuffers in the unlikely event one is sent

* support arraybuffers in resolvebuffer

* this needs to be fixed at some point

* this was fixed

* disable filename versioning if env VERSIONED is set to false

* Update ClientDataResolver.js

* Update ClientVoiceManager.js

* Update WebSocketManager.js

* Update ConvertArrayBuffer.js

* Update webpack.html

* enable compression for browser and fix ws error handler

* Update WebSocketManager.js

* everything will be okay gawdl3y

* compression is slower in browser, so rip the last three hours of my life

* Update Constants.js

* Update .gitignore
2016-11-20 19:38:16 -05:00
Schuyler Cebulskie
b3e795d0b0 Add newlines around logo 2016-11-20 18:21:23 -05:00
Schuyler Cebulskie
686cf297d2 Clean up various script things 2016-11-20 18:19:58 -05:00
Schuyler Cebulskie
2bb5aa1fda Change Collection description 2016-11-20 18:05:01 -05:00
Schuyler Cebulskie
a80a64f8ce Update Collection docs some more 2016-11-20 17:59:54 -05:00
Schuyler Cebulskie
74ab72fdea Update Collection docs 2016-11-20 17:39:55 -05:00
Schuyler Cebulskie
c29eb7ab20 Update links 2016-11-20 00:19:41 -05:00
Schuyler Cebulskie
34548e3ecc Fix webhook example 2016-11-19 21:23:16 -05:00
Schuyler Cebulskie
213c45323f Switch to a non-absurdly-sized logo 2016-11-19 21:21:49 -05:00
Crawl
3fd3588ef2 Fix reaction event names (#906) 2016-11-17 03:03:51 -05:00
Schuyler Cebulskie
93948328b4 Fix some Gus code 2016-11-17 02:51:46 -05:00
Schuyler Cebulskie
49fdc331a7 Fix formatting 2016-11-17 02:49:24 -05:00
Gus Caplan
b2bc844ed7 Add new MessageEmbed stuff (#898)
* fix

* Update MessageEmbed.js

* man

* Update MessageCreate.js

* Update MessageEmbed.js

* Update MessageEmbed.js

* clean up, add class

* my dreams are slowly becoming memes

* aghhh

* safety

* Update MessageEmbed.js

* Update MessageEmbed.js

* Update MessageEmbed.js

* dammit
2016-11-17 02:42:50 -05:00
York
1833a83664 Documented reaction events (#905) 2016-11-17 02:18:03 -05:00
Programmix
5ed8098af8 Clean up reactions, add remove all reactions (#890)
* Clean up reactions, add remove all reactions

* Reorganize reactions

* Re-add Gawdl3y's precious little inline

* Update Message.js
2016-11-13 02:29:26 -05:00
Steffen
a359f344d8 UnhandledPromiseRejectionWarning caused by resolveBuffer on empty resource body (#886)
* Fix for UnhandledPromiseRejectionWarning in resolveBuffer

* code simplification

* reject with TypeError if body is not a Buffer
2016-11-13 02:07:51 -05:00
Gus Caplan
c041b1bc23 fix these things (#895)
* fix these things

* fix enormous stupid
2016-11-13 02:05:55 -05:00
Schuyler Cebulskie
bb3b709d6e Nothing to see here 👀 2016-11-13 01:13:13 -05:00
Schuyler Cebulskie
da9d1a3daf Don't mind me 2016-11-13 01:07:48 -05:00
Gus Caplan
27270a3bad add embed support! (#894)
* add embed support!

* document message embeds

* make gawdl3y happy

* make edit great again

* make docs better

* Update Message.js

* Update TextBasedChannel.js

* Update TextBasedChannel.js
2016-11-13 01:05:13 -05:00
Schuyler Cebulskie
ee3a03f707 Make Collection.find/exists error when using with IDs 2016-11-13 00:27:56 -05:00
Schuyler Cebulskie
af5e07fb33 Change sentence structure slightly 2016-11-12 23:58:20 -05:00
Schuyler Cebulskie
5d3123d405 Add branch info to contributing guide 2016-11-12 23:50:06 -05:00
Schuyler Cebulskie
9d0fcb3936 Fix Message.reply example 2016-11-12 22:15:47 -05:00
Schuyler Cebulskie
c50de74310 Rename Message.addReaction -> Message.react 2016-11-12 22:12:26 -05:00
Schuyler Cebulskie
2c76f5437b Inline a line, woohoo 2016-11-12 22:08:43 -05:00
Schuyler Cebulskie
99b8d8f031 Clean up docgen code and some reaction stuff 2016-11-12 22:07:17 -05:00
Schuyler Cebulskie
acdf2d14c2 Undo that dummy commit 2016-11-12 21:50:17 -05:00
Schuyler Cebulskie
2b7c7bfd8f Dummy commit to force a travis build 2016-11-12 21:50:05 -05:00
Schuyler Cebulskie
8482abed7b Document generator v14 2016-11-12 21:45:05 -05:00
Schuyler Cebulskie
962cb8f8d0 Add default value support to docgen 2016-11-12 21:44:57 -05:00
Schuyler Cebulskie
7b26e70a2e Possibly change default return type for function docs 2016-11-12 21:14:36 -05:00
Schuyler Cebulskie
c65d7a10ec Fix another JSDoc type issue 2016-11-12 21:10:28 -05:00
Schuyler Cebulskie
b07a31d44e Change case of "function" 2016-11-12 21:07:22 -05:00
Schuyler Cebulskie
90304aa7d6 Fix loads of JSDoc type issues 2016-11-12 20:52:37 -05:00
Schuyler Cebulskie
318bb52c36 Clean up presence constructor 2016-11-12 17:46:11 -05:00
Schuyler Cebulskie
305070dded Remove experimental warning on sharding manager 2016-11-12 17:30:07 -05:00
Schuyler Cebulskie
3230d90a58 Remove fs-extra dependency 2016-11-12 17:23:54 -05:00
Schuyler Cebulskie
ce132d5f54 Make bot/user account warnings MOAR CONSISTENT!!one! 2016-11-12 17:15:17 -05:00
Schuyler Cebulskie
1e8392d90b Merge branch 'master' into indev 2016-11-12 00:30:25 -05:00
Marko Kajzer
c02eb2f171 Fixed unset field of VoiceConnection (#879)
* Fixed unset field of VoiceConnection

Fixed a typo

* Update VoiceConnection.js
2016-11-07 12:35:49 -05:00
Amish Shah
544540fb02 Change Role.manageable to Role.editable 2016-11-06 16:49:14 +00:00
HyperCoder
7d02e73a26 Add <Role>.manageable (#878) 2016-11-06 16:43:39 +00:00
Slamakans
5dc30d6812 Nullable permission overwrites (#869)
Made it possible to pass null to GuildChannel.overwritePermissions's
PermissionOverwriteOptions to blank the permission out.
2016-11-06 10:43:31 +00:00
Programmix
fe3914658a Grammar cleanup (#875)
This commit:
* fixes inconsistencies (primarily regarding capitalization)
* fixes non-proper nouns that were improperly capitalized
* fixes reminents from not-so-meticulous copy+paste jobs
2016-11-05 23:57:34 +00:00
Schuyler Cebulskie
93e6c69bd1 Update sync option docs 2016-11-01 02:28:23 -04:00
Schuyler Cebulskie
b91590d3a8 Fix mispositioned line in ClientOptions doc 2016-11-01 02:24:42 -04:00
Programmix
9a61de1493 Document GuildChannel.edit, add VoiceChannel.setUserLimit, fix typo (#866) 2016-11-01 01:42:05 -04:00
Schuyler Cebulskie
2a50dad852 Update docs for ezmode node-opus Windows building 2016-11-01 01:39:57 -04:00
Programmix
6dc95cd084 Add support for notes (#860)
* Add support for notes

* Ensure consistency with notes from ready payload

* Add getter method for users

* Minor tweaks

* Update warning messages

* More minor fixes
2016-10-30 23:06:09 -04:00
Schuyler Cebulskie
a673a97441 Rephrase Collection.find/exists slightly 2016-10-30 22:28:06 -04:00
Schuyler Cebulskie
d7e1e1c0c9 Add warnings for Collection.find/exists 2016-10-30 22:22:16 -04:00
Schuyler Cebulskie
73261646fc Fix ESLint warnings 2016-10-30 17:23:39 -04:00
Schuyler Cebulskie
d6f55adf52 Add missing exports for reaction stuff 2016-10-30 17:05:18 -04:00
Schuyler Cebulskie
f2496070d3 Document client timeout/interval stuff 2016-10-30 17:02:06 -04:00
Schuyler Cebulskie
85330769a7 Refactor OAuth application stuff 2016-10-30 16:55:08 -04:00
Schuyler Cebulskie
589c44327a Make bot/user account notices consistent 2016-10-30 16:41:39 -04:00
Schuyler Cebulskie
5fa9e3548b Rename ClientDataResolver.resolveFile -> resolveBuffer 2016-10-30 16:29:56 -04:00
Schuyler Cebulskie
60e0d507f0 Clean up nearly all promises to utilise chaining, other small fixes 2016-10-30 16:27:28 -04:00
Schuyler Cebulskie
8306d50bd8 Clean up a bunch of promise stuff 2016-10-30 12:47:17 -04:00
Programmix
c42e7a15aa Update documentation (add missing typedefs) (#861) 2016-10-30 00:08:32 -04:00
Amish Shah
c334bf4535 Merge branch 'master' into indev 2016-10-28 18:47:49 +01:00
Pascal Luttgens
cdf66f8011 Fixed resolveChannel when using a string (#857) 2016-10-28 14:09:40 +01:00
Schuyler Cebulskie
cf04b44454 Clean up some more 2016-10-27 21:38:48 -04:00
Schuyler Cebulskie
4e6b632d23 Fix VoiceConnection.speaking not emitting 2016-10-27 20:51:19 -04:00
Schuyler Cebulskie
83bef4ca77 Teensy weensy cleanup 2016-10-27 20:45:09 -04:00
Schuyler Cebulskie
071e287fec Merge remote-tracking branch 'refs/remotes/origin/master' into indev 2016-10-27 20:26:16 -04:00
Schuyler Cebulskie
c1926b6221 Prepare 10.0.1 release 2016-10-27 19:52:54 -04:00
Schuyler Cebulskie
1841122a8f Cherry pick commits from indev 2016-10-27 19:48:34 -04:00
Schuyler Cebulskie
3f5e7451a7 Fix linked whitespace 👀 2016-10-27 19:15:08 -04:00
isonmad
4bd19c94ba fix Client.destroy (#853)
_timeouts and _intervals were changed to Set objects in
commit 6ede7a32fd a month ago.

Like #844, this fix was reverted in 7d04863b66 (#839)
without explanation and was never included in the followup rewrite in
commit 5e2ee2398e.
2016-10-27 17:38:34 -04:00
Hackzzila
e80f06a059 3 PRs in one day! (#851) 2016-10-27 22:19:32 +01:00
Hackzzila
30105536a6 ESLint warnings (#852) 2016-10-27 22:19:20 +01:00
Hackzzila
c9dbf1f7f0 OAuth info stuff (#849)
* OAuth info stuff

* fix docs

* oops
2016-10-27 21:50:04 +01:00
Hackzzila
986b05442d Make errors great again (#850) 2016-10-27 21:49:09 +01:00
Amish Shah
b15896e0a4 Add limit param to reaction.fetchUsers 2016-10-27 21:28:03 +01:00
Amish Shah
5dd76069f8 Simplify voice channel joining 2016-10-27 19:04:24 +01:00
Amish Shah
c4da8d1009 rename file fix 2016-10-27 18:52:49 +01:00
Amish Shah
dfeafbf5fa Add the ADD_REACTIONS permission 2016-10-27 17:32:23 +01:00
Amish Shah
cd9b391e2a Hide SecretKey in documentation 2016-10-27 17:25:17 +01:00
Amish Shah
756d7fc2c1 Fix example 2016-10-27 17:22:11 +01:00
Amish Shah
21b00e1e29 Merge branch 'master' into indev 2016-10-27 17:18:27 +01:00
Amish Shah
9cba1bc6d0 remove users from message reactions 2016-10-27 17:16:40 +01:00
Amish Shah
dd9c291508 Add reaction fetching of users 2016-10-27 16:58:06 +01:00
Amish Shah
8e505ed349 Add Message Reaction me 2016-10-27 16:30:02 +01:00
Amish Shah
d129457624 Improve emoji support 2016-10-27 16:12:02 +01:00
Amish Shah
81059885a2 Start work on adding reaction support 2016-10-27 15:22:42 +01:00
Gus Caplan
96e46cbf37 Update README.md (#846) 2016-10-27 14:51:01 +01:00
Gus Caplan
2fa1e12fd5 Update welcome.md (#847) 2016-10-27 14:50:47 +01:00
isonmad
dd31ee0c5f propagate errors in ClientManager.destroy (#844)
If the promise returned by logout() rejects, previously
it would be completely uncaught, and just return an
eternally pending promise that never resolved.

Related to pull requests #828 and #839.
2016-10-27 11:33:51 +01:00
Schuyler Cebulskie
b8c11f0bed Update docs URLs to new domain 2016-10-27 04:27:28 -04:00
Schuyler Cebulskie
b54adf3869 Remove docs.jsos (whoops) 2016-10-26 23:45:20 -04:00
Schuyler Cebulskie
0863be8520 Tweak another output 2016-10-26 23:42:35 -04:00
Schuyler Cebulskie
93cc1fcb24 Tweak single output 2016-10-26 23:42:03 -04:00
Schuyler Cebulskie
4b60a6f47d Remove unused file 2016-10-26 23:33:29 -04:00
Schuyler Cebulskie
b8946d5904 Give the docgen a facelift 2016-10-26 23:30:37 -04:00
Schuyler Cebulskie
4543422e37 Remove a lot of irrelevant stuff in .gitignore 2016-10-26 23:30:08 -04:00
Schuyler Cebulskie
4e693e2e39 Fix a small VoiceReceiver doc issue 2016-10-26 21:43:28 -04:00
Schuyler Cebulskie
ab6750d06d Make docs catches use console.error 2016-10-26 21:37:19 -04:00
Schuyler Cebulskie
d6f4a4e1a0 Merge remote-tracking branch 'refs/remotes/origin/indev' 2016-10-26 21:14:21 -04:00
Schuyler Cebulskie
3727f3520e Merge remote-tracking branch 'refs/remotes/origin/master' into indev 2016-10-26 21:13:19 -04:00
Schuyler Cebulskie
4d1eb34dd6 Remove extra <br /> 2016-10-26 21:12:41 -04:00
Schuyler Cebulskie
fc20008d6d Merge remote-tracking branch 'refs/remotes/origin/indev' 2016-10-26 21:10:59 -04:00
Schuyler Cebulskie
99cea11e6d Change a word 2016-10-26 21:04:41 -04:00
Schuyler Cebulskie
e8eac4990e Add more general info about discord.js 2016-10-26 21:03:44 -04:00
Schuyler Cebulskie
c4ee802c3b Fix formatting for GitHub 2016-10-26 20:51:34 -04:00
Schuyler Cebulskie
6dfb904e6b Center the shields and NPM banner 2016-10-26 20:45:48 -04:00
Schuyler Cebulskie
801588b2d4 Add v10 details to docs 2016-10-26 20:39:11 -04:00
Amish Shah
4929aecb32 Fix logo 2016-10-26 23:01:45 +01:00
Amish Shah
1fc9676ba5 Fix presences, damn it hydra 2016-10-26 22:09:11 +01:00
Amish Shah
62cfa10ac5 v10 prep 2016-10-26 20:58:34 +01:00
Schuyler Cebulskie
ecee07655f Simplify Shard.env 2016-10-26 15:31:05 -04:00
Amish Shah
1a3ea65abd fix some shard stuff on linux 2016-10-26 20:15:56 +01:00
Amish Shah
00fe45f6b3 simplify client destruction 2016-10-26 19:52:41 +01:00
Amish Shah
5e2ee2398e Fix some destroy stuff (#828) 2016-10-26 19:42:21 +01:00
Amish Shah
a2f125e416 case sensitive 2016-10-26 19:27:52 +01:00
Amish Shah
ad90705c93 fix bug 2016-10-26 19:21:45 +01:00
Amish Shah
4e37e47e64 Merge branch 'indev' of https://github.com/hydrabolt/discord.js into indev 2016-10-26 19:18:19 +01:00
Amish Shah
996c9b45e2 Update README for new logo 2016-10-26 19:18:16 +01:00
Amish Shah
7d04863b66 Revert "fix Client.destroy bugs" (#839) 2016-10-26 17:30:18 +01:00
Amish Shah
18e9850e1e Merge branch 'indev' of https://github.com/hydrabolt/discord.js into indev 2016-10-26 17:29:26 +01:00
Amish Shah
4a5cef0ccf Rename getRecommendedShards to fetchRecommendedShards 2016-10-26 17:29:23 +01:00
Gus Caplan
c6bcf69dc3 added User#fetchProfile (#835)
* add User#fetchProfile

* fix merge conflicts?
2016-10-26 16:23:39 +01:00
Amish Shah
d231adc489 add notice to docs folder 2016-10-26 16:14:37 +01:00
Amish Shah
e12c7bf2d4 Whoops remove something 2016-10-26 16:10:02 +01:00
Amish Shah
597c3ebcbe Remove unnecessary docs.json file 2016-10-26 16:09:17 +01:00
Amish Shah
50f73bf430 Merge branch 'indev' of https://github.com/hydrabolt/discord.js into indev 2016-10-26 16:06:58 +01:00
Amish Shah
0f1e121b81 hide some voice stuff in docs 2016-10-26 16:06:56 +01:00
meew0
e85fd4482f Fix the secret Travis details
Apparently the environment variables weren't correctly stored last
time, so they had to be regenerated.
2016-10-26 17:02:01 +02:00
Gus Caplan
60a911e4a0 add clientUser#createGuild (#832)
* add clientUser#createGuild merge docs

* almost caused a memory leak!

* muh triggers
2016-10-26 15:59:15 +01:00
Amish Shah
cf45d1905e Reduce doc log size 2016-10-26 15:57:45 +01:00
meew0
0296a71793 Improve the docs building process (#834)
* Add a script to automatically build and push docs

This script will checkout the repo in the `docs` branch, then build the
docs locally, copy it to that repo, commit and push. It is designed to
be used in conjunction with Travis.

* Add unencrypted deploy keys to the gitignore

* Make Travis automatically execute the deploy script

* Add the encrypted deploy key

* Update the .travis.yml with the necessary information
2016-10-26 15:54:53 +01:00
Amish Shah
35ac80024a Rename some events (mainly guild events) 2016-10-26 15:52:40 +01:00
Amish Shah
45632b2eae fix joining voice channels without perms 2016-10-26 15:23:54 +01:00
Amish Shah
650e21e907 Merge branch 'indev' of https://github.com/hydrabolt/discord.js into indev 2016-10-26 15:14:30 +01:00
Amish Shah
e7e8a802b8 Fix docs 2016-10-26 15:14:28 +01:00
isonmad
e9fa8a438c fix Client.destroy bugs (#828)
* add test for Client.destroy()

* propagate errors in ClientManager.destroy

If the promise returned by logout() rejects, previously
it would be completely uncaught, and just return an
eternally pending promise that never resolved.

* fix RESTMethods.logout

Without a data argument, the POST that superagent sends causes
the discord server to reply with a HTTP 400 error:

text: '{"Content-Type": "Expected Content-Type to be one of set([\'application/json\'])."}',

* fix Client.destroy

_timeouts and _intervals were changed to Set objects in
commit 6ede7a32fd a month ago.

Changing them to arrays causes failures if you try to reuse
the client object again.

* always close websocket in ClientManager.destroy

Invoking logout does not implicitly cause the server to close
the websocket for you, so cleanup everything.

Otherwise the websocket being open keeps node alive and hanging
mysteriously until the connection hits a timeout.

* fix indentation for eslint
2016-10-26 14:49:45 +01:00
Amish Shah
26de908cfd some voice docs 2016-10-26 14:44:19 +01:00
Amish Shah
968883ec35 Merge branch 'indev' of https://github.com/hydrabolt/discord.js into indev 2016-10-26 14:19:39 +01:00
Amish Shah
0c4a4023ce Fix setting guild role positions (#751) 2016-10-26 14:19:36 +01:00
Schuyler Cebulskie
05f73c3edf Clean up voice channel join permissions check 2016-10-25 20:41:23 -04:00
Schuyler Cebulskie
b2a4545c16 Clean up more voice stuff 2016-10-25 20:34:57 -04:00
Schuyler Cebulskie
d1e9d15a1c Clean up a bunch of new voice stuff 2016-10-25 20:26:57 -04:00
Schuyler Cebulskie
a04094f0ff Rename VoiceConnection.disconnected event -> disconnect 2016-10-25 19:59:22 -04:00
Schuyler Cebulskie
c96d5ad30e Optimise everyone/here replacing 2016-10-25 19:01:56 -04:00
Schuyler Cebulskie
526430b51a Revert "Fix #837"
This reverts commit add52ce62d.
2016-10-25 18:49:12 -04:00
Amish Shah
add52ce62d Fix #837 2016-10-25 22:03:04 +01:00
Amish Shah
ff16c9f01f change currentDispatcher to just dispatcher 2016-10-25 21:55:38 +01:00
Amish Shah
0f8e8dddff fix presence updating 2016-10-25 21:40:53 +01:00
Amish Shah
2ee6da8d79 redo docs again 2016-10-25 19:52:10 +01:00
Amish Shah
5bd18e6051 add some documentation 2016-10-25 19:47:17 +01:00
Amish Shah
f77af72d71 Add voice receiving again \o/ 2016-10-25 19:41:54 +01:00
Amish Shah
b50bec8a44 whoops broke travis again 2016-10-25 15:02:16 +01:00
Amish Shah
2b2bbb565d don't require longjohn 2016-10-25 14:46:50 +01:00
Amish Shah
5844bbb54c Fix travis builds 2016-10-25 14:38:56 +01:00
Amish Shah
91ba59c43d Added voice disconnect 2016-10-25 14:18:20 +01:00
Amish Shah
b0921ae0ef fix econnreset! \o/ #694 2016-10-25 12:52:07 +01:00
Amish Shah
823a339c25 oh no wait i was right the first time 2016-10-24 22:27:23 +01:00
Amish Shah
8a68fea9af damn it hydar 2016-10-24 22:27:03 +01:00
Amish Shah
d73d6a7340 make some stuffs 2016-10-24 22:26:34 +01:00
Amish Shah
f96c185d92 add the functions to voice connection 2016-10-24 21:39:32 +01:00
Amish Shah
1a5ce878a1 fix some stuff 2016-10-24 20:13:44 +01:00
Amish Shah
5749eb6bb0 actually log the damn reason 2016-10-24 18:56:02 +01:00
Amish Shah
7818d37042 catch cleanup reasons 2016-10-24 18:36:52 +01:00
Amish Shah
17586f0e20 maybe fix again 2016-10-24 17:41:37 +01:00
Amish Shah
c6d0c31c84 hydra have you actually fixed voice whatttt 2016-10-24 17:10:17 +01:00
Amish Shah
b24e0b347e Merge remote-tracking branch 'origin/indev' into indev-voice 2016-10-24 16:26:41 +01:00
Amish Shah
6093dac554 Fix #776 (guildMemberAdd firing for existing members) 2016-10-24 15:57:07 +01:00
Amish Shah
d42ac98339 Fix #775 (permission overwrites not taking into account previous values) 2016-10-24 15:47:31 +01:00
Amish Shah
9d0dd665de fix something 2016-10-24 14:49:01 +01:00
Amish Shah
8dd2005ab9 stop logging 2016-10-24 14:37:08 +01:00
Amish Shah
e13e2447d4 get voice sort of working 2016-10-24 14:26:24 +01:00
Amish Shah
9b3dd540ef Merge remote-tracking branch 'origin/indev' into indev-voice 2016-10-24 12:50:40 +01:00
Schuyler Cebulskie
c5c9d0265c Evie 😒 2016-10-24 01:10:52 -04:00
Gus Caplan
44bae385c2 update clientUser#setAvatar (#819)
* WHO DID THIS

* e

* some people have base64 fetishes i guess

Signed-off-by: Gus Caplan <fluffyrobotcheese@gmail.com>
2016-10-24 01:09:38 -04:00
Évelyne Lachance
478377ac52 Merge pull request #830 from eslachance/indev
Version bump for indev+troubleshooting
2016-10-24 01:05:07 -04:00
Evelyne Lachance
a7d16e66b7 Version bump for indev+troubleshooting 2016-10-24 00:50:15 -04:00
Amish Shah
c86ff6ad1a Merge branch 'indev' of https://github.com/hydrabolt/discord.js into indev 2016-10-23 20:51:07 +01:00
Amish Shah
21533eec5b fix banning probably hopefully 2016-10-23 20:51:04 +01:00
Amish Shah
b2eb796cfc remove console.log and fix endless loop connecting 2016-10-23 19:59:19 +01:00
Schuyler Cebulskie
c9c6e8a357 Added note about bot accounts to fetchMessage 2016-10-23 14:59:04 -04:00
Gus Caplan
3e1425af04 allow TextBasedChannel#bulkDelete to take a number (#821)
* useful

* update docs

* Update TextBasedChannel.js

* update docs

* fix docs

* Update TextBasedChannel.js
2016-10-23 14:51:54 -04:00
Amish Shah
38ff53c3a1 woah is hydra actually working on voice?! 2016-10-23 19:51:44 +01:00
Amish Shah
f3439dcf6d Merge remote-tracking branch 'origin/indev' into indev-voice 2016-10-23 14:46:41 +01:00
Gus Caplan
b020fae258 fix emoji updates (#826) 2016-10-22 23:43:07 -04:00
Gus Caplan
422b90c711 add way more friend shit (#815) 2016-10-22 16:25:55 -04:00
Schuyler Cebulskie
c7c5e5e8b4 Build docs 2016-10-22 15:12:15 -04:00
Schuyler Cebulskie
562b62a5b6 Revert "Cache array and keyArray in Collection (#771)"
This reverts commit 53f5c2cb52.
2016-10-22 15:11:42 -04:00
Schuyler Cebulskie
8308493618 Bump version for NPM readme fix 2016-10-22 15:07:47 -04:00
Gus Caplan
9f7c630796 lel (#824) 2016-10-22 14:51:21 -04:00
Schuyler Cebulskie
aa4cb97a1c Removed production flag from installs 2016-10-22 14:48:07 -04:00
Schuyler Cebulskie
caec3648c0 Added onlyInlineCode to escapeMarkdown 2016-10-21 02:35:36 -04:00
Schuyler Cebulskie
d0463926c4 Add maxMatches CollectorOption 2016-10-18 21:23:39 -04:00
Gus Caplan
9c8eb2dfc3 lets all be friendly! (#809)
* lets all be friendly!

* fix doc

* Update ClientUser.js

* Update ClientUser.js
2016-10-18 01:36:25 -04:00
Évelyne Lachance
2f2188fe60 Merge pull request #810 from GusCaplan/message#type
add message#type
GUS promises that this was thoroughly tested. I wanna believe him. Hydra don't kill me for merging.
2016-10-17 22:32:46 -04:00
Gus Caplan
bd5540314b add message@#type 2016-10-17 21:24:16 -05:00
Schuyler Cebulskie
62b93659e6 Clean up and simplify some code 2016-10-17 00:02:54 -04:00
Gus Caplan
e04dbbdb82 add clientuser#friends (#807)
* add client#friends

* Update Ready.js

* Update Client.js

* move friends to client.user

* Update ClientUser.js

* Update ClientUser.js
2016-10-16 21:28:17 -04:00
Schuyler Cebulskie
fc307fab8a Remove unnecessary array conversions 2016-10-16 21:14:59 -04:00
Schuyler Cebulskie
13aae621b8 Fix Hyper's error and make it more useful 2016-10-16 20:58:03 -04:00
Schuyler Cebulskie
0b5ef296cb Fix split messages resolving with multiple of the same message 2016-10-15 20:23:32 -04:00
Schuyler Cebulskie
7e0f98ec68 MOAR SIMPLIFICATION 2016-10-15 01:45:13 -04:00
Schuyler Cebulskie
f2555132fe Simplify sendCode lang 2016-10-15 01:29:46 -04:00
Schuyler Cebulskie
6baf43dc24 Add Collection.filterArray 2016-10-15 01:20:31 -04:00
Schuyler Cebulskie
fe2192d544 Thanks for overriding the MessageOptions typedef, Gus 😒 2016-10-15 00:12:37 -04:00
Gus Caplan
50a1d1cbef Add VoiceChannel.joinable/speakable (#802)
* add some getters to voice channels

* Update VoiceChannel.js

* Update VoiceChannel.js

* Update VoiceChannel.js
2016-10-14 18:58:48 -04:00
Schuyler Cebulskie
8f0e2e0c56 Make token "Bot" removal more lenient
In case of heavy user error. :)
2016-10-14 02:14:00 -04:00
Schuyler Cebulskie
e4636243b2 Improve token "Bot" removal 2016-10-14 02:11:31 -04:00
Schuyler Cebulskie
6e76df2656 Update legacy docs link 2016-10-14 01:45:02 -04:00
Schuyler Cebulskie
a6ca05b379 Change a word in help 2016-10-14 01:27:54 -04:00
Schuyler Cebulskie
84bca168b6 Update docs 2016-10-14 01:26:54 -04:00
Schuyler Cebulskie
ca4e9549a0 Add link to Yeoman generator 2016-10-14 01:13:50 -04:00
Schuyler Cebulskie
1ef00d0fe7 Change node-opus and opusscript to peer deps 2016-10-14 00:52:25 -04:00
Schuyler Cebulskie
485ffd267e Remove auto shard spawn interval (Discord doesn't support such a great idea 👀) 2016-10-14 00:21:08 -04:00
Schuyler Cebulskie
915a4cbe37 Rename spawnArgs -> shardArgs 2016-10-14 00:00:15 -04:00
Schuyler Cebulskie
3293f9a8de Add automatic shard spawning, and document options 2016-10-13 23:58:32 -04:00
Schuyler Cebulskie
aad06c1116 Teensy cleanup 2016-10-13 23:32:52 -04:00
Gus Caplan
853a3dfa04 Add getRecommendedShards and automatic shard count in ShardingManager (#796)
* draft stuff

fix docstring for Client#token

Reorganise resolver

make env better for shards, clean up docs

Fix Gus' log messages

7

meh just gateway/bot not v7 :(

final changes, ready for mergin!

build docs

make default totalShards 'auto', fix docs for totalShards type

clean up docs more

run docs

* make consistancy real

* Update and rename getRecommendedShards.js to GetRecommendedShards.js

* Update GetRecommendedShards.js

* Update index.js

* Update RESTMethods.js

* Update Shard.js

* Update GetRecommendedShards.js

* Update ShardingManager.js

* run docs
2016-10-13 23:26:10 -04:00
Schuyler Cebulskie
492f706035 Fix Gus' log messages 2016-10-13 20:05:07 -04:00
Schuyler Cebulskie
26804f3673 Reorganise resolver 2016-10-12 02:26:56 -04:00
Gus Caplan
299484ff68 allow overwritePermissions to take a role id (#792)
* allow overwritePermissions to take a role id

* Fix typo
2016-10-11 20:29:29 -04:00
Gus Caplan
0de3d1bfc4 make sharding manager constructor better (#794)
* add color stuff to support popular color libraries

* make this better

* fix docs
2016-10-11 20:20:59 -04:00
Gus Caplan
96355a4968 add constants, some debug stuff (#791)
* add constants, some debug stuff

* i can't believe i did this
2016-10-10 20:53:54 +01:00
Gus Caplan
32eeb8ad5e Fix feature/login (#790)
* eeeeeeee

* too tired

* ok gawdl3y

Signed-off-by: Gus Caplan <fluffyrobotcheese@gmail.com>
2016-10-10 02:55:09 -04:00
Gus Caplan
5ddefc3682 fix webhook#edit (#789)
* fix webhook#edit

* hehe
2016-10-10 02:54:46 -04:00
Gus Caplan
e48d7d52f1 add webhook#sendSlackMessage (#788) 2016-10-10 01:56:18 -04:00
Schuyler Cebulskie
9230b8866b Merge branch 'master' into indev 2016-10-10 02:45:10 -04:00
comp500
f292e7002f fix proxyURL (#783) 2016-10-09 22:44:38 -04:00
Schuyler Cebulskie
29b33bffaa Rearrange and clean up more webhook stuff 2016-10-09 15:50:50 -04:00
Schuyler Cebulskie
e7745a0af5 Clean up some webhook stuff 2016-10-09 15:30:46 -04:00
Schuyler Cebulskie
bd7ff36b66 Allow infinite messageCacheMaxSize 2016-10-09 15:22:14 -04:00
Schuyler Cebulskie
7a53f70978 Rename maxMessageCache -> messageCacheMaxSize 2016-10-09 15:16:54 -04:00
Schuyler Cebulskie
a717b60417 Add validation for all non-ws client options 2016-10-09 15:11:15 -04:00
Schuyler Cebulskie
e3b2f1f3da Fix require path 2016-10-09 15:08:21 -04:00
Schuyler Cebulskie
dabe51fc8d Reorganise disabledEvents stuff 2016-10-09 14:41:57 -04:00
Schuyler Cebulskie
7b571f9729 Add escapeMarkdown util function 2016-10-09 14:32:48 -04:00
Programmix
3e2d6ccc48 Convert disabledEvents Array to Object (#786)
* Convert disabledEvents Array to Object

Increased performance

* Commit to please Lord Gawdl3y

* Nitpick with chopsticks
2016-10-09 14:22:52 -04:00
Programmix
4653f88555 Add disabledEvents option to Client (#784) 2016-10-09 18:27:31 +01:00
Schuyler Cebulskie
da5183a5d5 Expose splitMessage 2016-10-08 00:12:03 -04:00
Gus Caplan
1c4ed4547f adds new WebhookClient and allows you to fetch channel webhooks and such without being "over the top" (#768)
* start blocking out client

* proto webhookclient

* wee working webhooks

* it's all working

* run docs

* fix jsdoc issues

* add example for webhookClient

* add example in the examples place

* fix docs
2016-10-07 19:09:41 +01:00
Schuyler Cebulskie
f9b7f9c27e Add readonly 2016-10-06 21:49:08 -04:00
Schuyler Cebulskie
79b0d3f2a5 Client.readyTime -> readyAt (consistency) 2016-10-06 21:48:25 -04:00
Schuyler Cebulskie
93425c3979 Expand collection array caching 2016-10-04 19:10:29 -04:00
Schuyler Cebulskie
2c3c91fe41 Merge branch 'master' into indev 2016-10-04 19:02:09 -04:00
Slamakans
53f5c2cb52 Cache array and keyArray in Collection (#771)
* Cache array and keyArray in Collection

Cache array and keyArray in the Collection class to improve consecutive
calls of collection.random() by around 400,000%, I think lel.

The speed decrease (I assume) compared to the previous version when
calling after it has changed is most likely negligible.

* Fix for ESLint

I think this fixes it.
2016-10-04 18:53:26 -04:00
Schuyler Cebulskie
8d777db1d1 Clean up status type error 2016-10-03 20:27:41 -04:00
Schuyler Cebulskie
e24c9c271e Quite possibly fix annoying bug Evie was complaining about 2016-10-03 20:25:39 -04:00
Programmix
c4e1e4f50f Add InviteResolvable (#766)
* Add InviteResolvable

Add InviteResolvable

* Return data as fallback instead

* Rename resolver method
2016-10-02 19:21:08 -04:00
Amish Shah
57a418399b start some stuff on UDP 2016-10-02 17:28:48 +01:00
Amish Shah
c75782781b finish up voice websocket for now 2016-10-02 16:51:40 +01:00
Schuyler Cebulskie
77e37b62ef Fix sendMessage with no content and split/disableEveryone 2016-10-02 11:14:32 -04:00
Amish Shah
2bb6ecdc28 documentation 2016-10-02 15:16:54 +01:00
Amish Shah
ed8b79aa46 Add session description and speaking listeners 2016-10-02 15:12:43 +01:00
Amish Shah
e201e9080f start rewriting voice websocket 2016-10-02 14:59:05 +01:00
Schuyler Cebulskie
51f30d6e4c Add nickname mention format to GuildMember.toString 2016-10-02 01:51:14 -04:00
Programmix
d35372d3e9 Fix MessageCollector.next edge case (#765) 2016-10-02 00:23:35 -04:00
Amish Shah
c286c1443f voice rewrite part 1 2016-10-01 22:23:00 +01:00
Programmix
1fcc618532 Fix removeListener call (#762) 2016-10-01 16:22:32 -04:00
Programmix
34168eb832 Create MessageCollector.next (#761)
Allows using await with message collectors (ES7)
Hydrabolt approved™
2016-10-01 20:29:15 +01:00
Amish Shah
530035e14b Fix stacked heartbeats on reconnect and fix documentation 2016-10-01 20:21:38 +01:00
Amish Shah
7c26603773 Fix presences probably ¯\_(ツ)_/¯ 2016-10-01 15:27:56 +01:00
Amish Shah
ab15c45d96 fixed role stuff 2016-10-01 11:21:35 +01:00
Schuyler Cebulskie
9063aa8abf Merge master 2016-10-01 03:44:43 -04:00
Schuyler Cebulskie
2acfb16cb8 Fix Guild.emojis doc 2016-10-01 03:41:49 -04:00
Schuyler Cebulskie
66beeb9535 Add role position comparison methods 2016-10-01 03:32:08 -04:00
Schuyler Cebulskie
93cf34a814 I found some more. 2016-10-01 02:58:32 -04:00
Schuyler Cebulskie
d1e07674b8 Make GuildMember.kickable/bannable take role IDs into account 2016-10-01 02:54:25 -04:00
Schuyler Cebulskie
db815d4d9f I'm gonna need more derps to fix. 2016-10-01 02:47:17 -04:00
Schuyler Cebulskie
d246982a61 Fix another derp wooo 2016-10-01 01:42:13 -04:00
Schuyler Cebulskie
a441aaf546 Fix derp in GuildMember.kickable/bannable 2016-10-01 01:27:11 -04:00
Schuyler Cebulskie
8945344a3b Improve role position updating (allows for <=0) 2016-09-30 22:51:37 -04:00
Schuyler Cebulskie
c2c477834f Add Role.setMentionable 2016-09-30 22:48:25 -04:00
bdistin
428ee2f718 Added .missingPermissions() (#756)
* Added .missingPermissions()

* Added .missingPermissions()

* Fixed docs for .missingPermissions()

* Fixed Travis CI trailing spaces?

* Fixed Travis CI trailing spaces?
2016-09-30 22:08:19 +01:00
Schuyler Cebulskie
b1322cbc69 Initialise and document StreamDispatcher.paused 2016-09-30 03:12:01 -04:00
Schuyler Cebulskie
f157bcf5e8 Rearrange StreamDispatcher code 2016-09-30 03:09:08 -04:00
Schuyler Cebulskie
4934874613 Inline a line 2016-09-30 03:05:37 -04:00
Schuyler Cebulskie
b396d15b37 Remove usage of path.join for version export 2016-09-30 02:58:18 -04:00
Schuyler Cebulskie
5997aecc22 Rearrange events some more 2016-09-30 02:53:57 -04:00
Schuyler Cebulskie
1473f8c462 Rearrange event constants 2016-09-30 02:50:20 -04:00
Schuyler Cebulskie
543e814f8e Move protocol version to a constant, and reorganise constants a bit 2016-09-30 02:45:16 -04:00
Amish Shah
cda31dd224 Fix a potential bug some people have in retrieving endpoints 2016-09-28 18:03:30 +01:00
Schuyler Cebulskie
155b4383d2 No, Hydra! Bad! 2016-09-27 22:13:04 -04:00
Schuyler Cebulskie
f0741f2288 Add ShardClientUtil export 2016-09-27 21:18:22 -04:00
Schuyler Cebulskie
0bcca7bb55 Add Collection.concat 2016-09-27 20:47:12 -04:00
Gus Caplan
aed75e1f9a Add full guild emoji functionality (#749)
* all the emoji stuff

* fix things for hydra 😘

* feck i need to stop committing on github

* update docs again

* Butts
2016-09-27 20:44:09 -04:00
Schuyler Cebulskie
682e33cad9 Whoopsies 2016-09-27 20:21:52 -04:00
Schuyler Cebulskie
b8e659d544 Make Client.emojis suck less 2016-09-27 20:11:22 -04:00
Schuyler Cebulskie
973dbe8266 Add more @readonly and clean up some stuff 2016-09-27 20:07:33 -04:00
Schuyler Cebulskie
1a3f5ca6a9 Add Invite.expiresAt/expiresTimestamp 2016-09-27 19:50:03 -04:00
Schuyler Cebulskie
1e57c968dd Made date/timestamps consistent and less shitty 2016-09-27 19:46:53 -04:00
Schuyler Cebulskie
b6c26cc2ae Replace console.log in catches with console.error 2016-09-27 18:50:01 -04:00
Schuyler Cebulskie
8d18ed42f6 Update tests 2016-09-27 18:48:54 -04:00
Schuyler Cebulskie
ba8dd3467a Switch config back to camelCase 2016-09-27 18:42:32 -04:00
Schuyler Cebulskie
4fceae02d6 Fix ShardClientUtil.fetchClientValues example 2016-09-27 17:25:17 -04:00
Schuyler Cebulskie
49d905a7b1 Reorganise some shard logic 2016-09-27 17:23:03 -04:00
Amish Shah
0ee3d6bb8a fix sequences not being reset on new ws sessions 2016-09-27 20:10:42 +01:00
Amish Shah
045153584a redo the client user presence stuff 2016-09-27 17:57:47 +01:00
Schuyler Cebulskie
38366f627d Fix transmitting errors through IPC 2016-09-27 02:40:29 -04:00
Schuyler Cebulskie
9d3b7b49dd Cleanup and reorganise some shard stuff 2016-09-27 02:25:38 -04:00
Schuyler Cebulskie
e5a987e0ef Add client shard eval/client property fetching, and improve existing shard stuff 2016-09-27 02:19:53 -04:00
Schuyler Cebulskie
c26fc49caf Fix property fetching 2016-09-26 23:34:47 -04:00
Schuyler Cebulskie
4fe30aa4d3 Rip out client sharding logic into its own class 2016-09-26 23:23:56 -04:00
Schuyler Cebulskie
d240fe4182 Improve prepend/append descriptions 2016-09-26 23:21:44 -04:00
Schuyler Cebulskie
36f4df2931 Capitalise two letters 2016-09-26 23:18:39 -04:00
Schuyler Cebulskie
ecbc591c95 Update setStatus docs for DND, other docs - setStatus code needs updating 2016-09-26 23:16:29 -04:00
Schuyler Cebulskie
9ebe5e64b7 Fix Hydra's disregard of the alphabet 2016-09-26 22:58:23 -04:00
Schuyler Cebulskie
ef63f0ee8b Merge branch 'indev' of https://github.com/hydrabolt/discord.js into indev 2016-09-26 22:56:11 -04:00
Schuyler Cebulskie
e5f4823bd4 Document do not disturb 2016-09-26 22:56:07 -04:00
Schuyler Cebulskie
0c0c1da0d5 Fix Presence/Game.equals with null/undefined 2016-09-26 22:53:35 -04:00
Schuyler Cebulskie
909af2084f Clean up Presence 2016-09-26 22:53:08 -04:00
Schuyler Cebulskie
f2cd48d94b Reorganise Presence 2016-09-26 22:50:26 -04:00
Gus Caplan
3e9253827f add manage emojis constant (#744)
* add manage emojis constant

* this is why you don't commit on github i guess
2016-09-26 21:07:16 -04:00
Gus Caplan
c8761d72de add guild emoji methods (#742)
* add guild emoji methods

* run docs

* crawl pointed out some things about the docs, so i fixed

* actually run the docs on the changes 🤦
2016-09-26 21:39:07 +01:00
Gus Caplan
b4f3575335 i am facepalming so hard right now (#740) 2016-09-26 03:55:54 -07:00
Amish Shah
f1cb39a319 Expose Presence and Game structures 2016-09-25 20:17:35 +01:00
Amish Shah
534d7af8c3 Fix resuming sessions (fixes #699) 2016-09-25 15:03:54 +01:00
Amish Shah
761b8cfb8d fix docs 2016-09-25 14:28:51 +01:00
Amish Shah
03651fd6e3 Change how presences are handled 2016-09-25 14:16:03 +01:00
Amish Shah
0e8f1bef97 Stop comparing for equality on update events and just emit for performance 2016-09-25 11:24:02 +01:00
Gus Caplan
c8636fd277 fix heartbeat (#737) 2016-09-24 23:56:18 -07:00
Amish Shah
124965425a Version bump to 9.3.0 \o/ 2016-09-24 19:54:29 +01:00
Amish Shah
656bb52d15 Merge branch 'hkwu-bugfix/docs' into indev 2016-09-24 19:53:34 +01:00
Amish Shah
725da8d8a5 Merge branch 'bugfix/docs' of https://github.com/hkwu/discord.js into hkwu-bugfix/docs 2016-09-24 19:53:23 +01:00
Amish Shah
14b8360453 fix doc issue with role 2016-09-24 19:47:50 +01:00
Kelvin Wu
a38f34899d Merge remote-tracking branch 'upstream/indev' into bugfix/docs 2016-09-24 14:10:04 -04:00
Amish Shah
aef0b83c34 comply to the latest rate limit stuff (hammerandchisel/discord-api-docs#108) 2016-09-24 18:19:18 +01:00
Gus Caplan
bd1449bc5a make login sane (#735) 2016-09-24 17:55:31 +01:00
Kelvin Wu
bd465108a7 Fix return type in docs. 2016-09-24 11:58:51 -04:00
Schuyler Cebulskie
116e6bb4c8 Clean up totalShards default 2016-09-24 02:46:55 -04:00
Schuyler Cebulskie
d9bc5cea1e Small cleanups 2016-09-24 02:43:27 -04:00
Schuyler Cebulskie
13e2b923e8 Return existing promise instead of failing, mark 2 2016-09-24 02:29:15 -04:00
Schuyler Cebulskie
f1bfd55233 Fix Guild.createChannel example 2016-09-24 02:21:06 -04:00
Schuyler Cebulskie
d62551bea2 Remove old code 2016-09-24 02:20:48 -04:00
Schuyler Cebulskie
1008f601f4 Add shard client prop fetching, remove guild count fetching, improve eval 2016-09-24 02:12:45 -04:00
Schuyler Cebulskie
e4f416ae6c Add shard eval, broadcastEval, and fix fetchGuildCount response 2016-09-24 01:21:41 -04:00
Schuyler Cebulskie
65b93532ce Add additional shard count checks 2016-09-24 00:51:31 -04:00
Schuyler Cebulskie
5ea62e63ab Improve sharding some more 2016-09-24 00:44:47 -04:00
Kelvin Wu
fa18b0c6c9 Handle DM messages in cleanContent getter. (#726)
* Handle DM messages in cleanContent getter. Closes #725.

* Fix build error, improve handling for user IDs.

* Update docblock to be more specific about behaviour.

* Handle group DMs in cleanContent.

* Regen docs.
2016-09-24 00:23:12 -04:00
Gus Caplan
063be5cee2 smarter sharding™ (#732) 2016-09-23 21:43:16 +01:00
Gus Caplan
fc9d049cc1 make shardmanager better (#731)
* add respawn thing for shards, and make it easier to recieve messages from shards

* run docs
2016-09-23 18:36:14 +01:00
Schuyler Cebulskie
4bf6ad30f3 Remove a line 2016-09-22 23:10:00 -04:00
Schuyler Cebulskie
90f05a34cb Return the existing promise instead of erroring 2016-09-22 23:01:37 -04:00
Schuyler Cebulskie
7f652f7df8 Add delay param to ShardingManager.spawn 2016-09-22 22:51:58 -04:00
Schuyler Cebulskie
3fa4ff13e3 Add ShardingManager.fetchGuildCount 2016-09-22 22:48:21 -04:00
Schuyler Cebulskie
9d94fbfbcb Document and change launch event params 2016-09-22 22:06:56 -04:00
Schuyler Cebulskie
b795ed8109 Overhaul sharding broadcast/send 2016-09-22 22:03:10 -04:00
Schuyler Cebulskie
737ad8e92b Slightly improve some Collection docs 2016-09-22 21:36:06 -04:00
Gus Caplan
edd174a5eb Add ShardingManager#send and ShardingManager#broadcast (#730)
* add ShardingManager#send and ShardingManager#broadcast

* make gawdl3y happy

* Fix a thing
2016-09-22 21:35:08 -04:00
Gus Caplan
e86b93b34f fix docs because gawdl3y forgot >:( (#724) 2016-09-22 02:25:08 -07:00
Schuyler Cebulskie
8af96810dd Rename Guild.prune to pruneMembers 2016-09-21 16:05:33 -04:00
Schuyler Cebulskie
6ba0dd26a6 Reorganise Guild methods 2016-09-21 16:04:33 -04:00
Schuyler Cebulskie
e9a7a06d52 Improve docs for voiceConnection/connection 2016-09-21 16:03:05 -04:00
Schuyler Cebulskie
a27f6c96bb Fix & clean up Guild.voiceConnection and VoiceChannel.connection 2016-09-21 16:01:08 -04:00
Gus Caplan
15d7f8e2fe Add Guild#prune (#723)
* make all changes neat

* run docs build
2016-09-21 15:57:14 -04:00
Schuyler Cebulskie
529d7207da Add Role.mentionable 2016-09-21 15:15:47 -04:00
Jacob
126865384e Compensate for API's stupid-ass positions in highestRole (#721)
* fix edge cases of highestRole not returning the highest role

* fix line length

* move space

* Fix formatting
2016-09-21 01:31:33 -04:00
Schuyler Cebulskie
46c28c0d05 Add Role.members 2016-09-20 23:27:56 -04:00
Schuyler Cebulskie
aa9fdf2e26 Small cleanups 2016-09-20 23:09:02 -04:00
Schuyler Cebulskie
468077ce96 Merge branch 'master' into indev 2016-09-20 23:02:56 -04:00
Matteo Rizzo
f383c78414 Fix VoiceConnection.playConvertedStream not playing anything (#708) 2016-09-20 23:01:02 -04:00
Schuyler Cebulskie
e5bac1339d Improve Client.sweepMessages 2016-09-20 10:57:39 -04:00
Schuyler Cebulskie
6075ec0e19 Add more detail to debug message 2016-09-20 01:25:19 -04:00
Schuyler Cebulskie
8f1bc5edab Add swept messages counter and debug message 2016-09-20 01:14:15 -04:00
Schuyler Cebulskie
5a9753e461 Double-fix my double-derp 2016-09-19 20:07:30 -04:00
Schuyler Cebulskie
0559aaf00b Fix my derp 2016-09-19 20:01:20 -04:00
Schuyler Cebulskie
718f61a732 Fix various Guild properties getting unset 2016-09-19 19:36:14 -04:00
Schuyler Cebulskie
c72d350b30 More FAQ work 2016-09-19 18:58:18 -04:00
Schuyler Cebulskie
f3d4755b6b Small FAQ format changes 2016-09-19 18:44:32 -04:00
Schuyler Cebulskie
45a74e790f Add FAQ 2016-09-19 18:42:48 -04:00
Schuyler Cebulskie
9ad4e27ce5 Add note about bot accounts to bulkDelete 2016-09-19 18:12:21 -04:00
Schuyler Cebulskie
9503990a86 Rename max_message_lifetime to message_cache_lifetime 2016-09-19 17:52:11 -04:00
Schuyler Cebulskie
6362c94f11 Build docs 2016-09-19 17:07:14 -04:00
Schuyler Cebulskie
a2778d4a96 Fix resolveFile on nonexistent paths (#717) 2016-09-19 16:58:15 -04:00
Schuyler Cebulskie
afc8e5bee0 Add message sweeping 2016-09-19 16:52:46 -04:00
Schuyler Cebulskie
46d7dedc85 Add Message.editCode 2016-09-19 15:14:51 -04:00
Gus Caplan
e0b614c3b2 weee add clyde because we all love clyde (#716)
* update to work with clyde's avatar image ;)

* add clyde to user cache on ready

* Update Ready.js

* Update Ready.js
2016-09-19 14:56:52 -04:00
Schuyler Cebulskie
7957bc82cd Fix member nicknames being unset (#703) 2016-09-19 14:45:30 -04:00
Schuyler Cebulskie
3441e2384f Fix tiny-ass typo 2016-09-19 14:42:22 -04:00
Schuyler Cebulskie
3e114b9af7 Normalise some GuildMember values 2016-09-19 14:41:36 -04:00
Schuyler Cebulskie
f3bab30cce Add missing MessageCollector export 2016-09-19 13:52:59 -04:00
Schuyler Cebulskie
c5982b0b90 Made MessageEmbedThumbnail/Provider/Author accessible 2016-09-19 13:46:37 -04:00
Schuyler Cebulskie
cb80d69649 Move MessageCollector into its own file 2016-09-19 13:41:17 -04:00
Schuyler Cebulskie
221fc7a103 Exposed all structures 2016-09-19 13:31:44 -04:00
Schuyler Cebulskie
47d873a8ca Move and improve debug/warn docs 2016-09-19 05:11:35 -04:00
Schuyler Cebulskie
6a94658dd7 Clean up some stuff 2016-09-19 04:32:24 -04:00
Schuyler Cebulskie
6ede7a32fd Switch timeouts/intervals to Sets 2016-09-19 04:16:32 -04:00
Schuyler Cebulskie
7d8667694d Fix massive timeout/interval memory leaks 2016-09-19 03:49:42 -04:00
Schuyler Cebulskie
6f7deba4b3 Fix VoiceConnection client#voiceStateUpdate leak 2016-09-19 02:49:30 -04:00
Schuyler Cebulskie
039315a9a3 Replace local usages of GuildMember.id with user.id 2016-09-19 01:44:46 -04:00
Schuyler Cebulskie
9288cd8563 Replace usages of owner.id with ownerID, and fix GroupDMChannel.equals 2016-09-19 01:43:24 -04:00
Schuyler Cebulskie
77e171e599 Document Guild.ownerID 2016-09-19 01:38:18 -04:00
Schuyler Cebulskie
3fcc5183dc Made GroupDMChannel.owner a getter and add ownerID 2016-09-19 01:36:01 -04:00
Schuyler Cebulskie
b8e3094b14 Add GuildMember.highestRole/kickable/bannable 2016-09-19 01:31:53 -04:00
Schuyler Cebulskie
d8542b3365 Made Message.guild a getter 2016-09-19 00:47:42 -04:00
Schuyler Cebulskie
8603759b5e Add Message.editable/deletable/pinnable 2016-09-19 00:42:58 -04:00
Schuyler Cebulskie
5f9204f57c Improve resolvePermission failure check 2016-09-19 00:19:15 -04:00
Schuyler Cebulskie
336366d653 Bad Hydra. 2016-09-18 23:46:59 -04:00
Schuyler Cebulskie
6c6da43da3 Fix ban/unban with IDs 2016-09-18 23:07:30 -04:00
Schuyler Cebulskie
bbddfef7f6 Add resolveUserID and improve other resolutions 2016-09-18 22:59:38 -04:00
Schuyler Cebulskie
ab7682f921 Tiny text changes 2016-09-17 23:22:15 -04:00
meew0
74b9e5d643 Update default permissions (#706)
During the nickname update the default value was changed from
36953089 to 104324097 to include some of the new nickname permissions.
2016-09-15 17:09:57 -07:00
Amish Shah
420f2ecdd4 Add Guild.voiceConnection and VoiceChannel.connection 2016-09-15 15:38:32 +01:00
Schuyler Cebulskie
0405b1a59f Make TextBasedChannel.sendCode escape codeblocks 2016-09-14 21:20:58 -04:00
Amish Shah
9308d2ead3 Address #700 2016-09-14 16:35:38 +01:00
Amish Shah
69f947dfcb Fix #701 2016-09-14 16:24:18 +01:00
Gus Caplan
7cb2e8eef7 add disconnect event, document warn and debug events (#702)
* add documentation for events, and add a disconnect event, because i know people use that

* generate docs, and fix a hastily copied docstring

* fix permissions freak out
2016-09-14 00:12:10 -04:00
Schuyler Cebulskie
25531170ec Fix catch in _sendMessageRequest 2016-09-13 21:29:45 -04:00
Schuyler Cebulskie
bb0ca11776 De-stupify RESTMethods.getExistingDM 2016-09-13 20:50:18 -04:00
Amish Shah
b0adc881f3 Maybe fix #694? 2016-09-13 20:30:44 +01:00
Amish Shah
fbcea236c5 Fix avatars not being set on selfbots - fixes #697 2016-09-13 20:21:12 +01:00
Amish Shah
f7e89f61e6 Fix channelCreate being emitted twice - fixes #698 2016-09-13 20:00:00 +01:00
Schuyler Cebulskie
cdf3136cde Make version a regular property instead of getter 2016-09-13 01:34:45 -04:00
Schuyler Cebulskie
ec6453a191 Add version export, and cleanup 2016-09-13 01:32:54 -04:00
Schuyler Cebulskie
136cf66eb0 Fix split prefix with undefined/null lang 2016-09-13 01:18:51 -04:00
Schuyler Cebulskie
862ec6a5be Allow null/undefined TextBasedChannel.sendCode lang 2016-09-13 01:01:11 -04:00
Schuyler Cebulskie
9cd249342b Teensy reorganisation 2016-09-12 21:40:15 -04:00
Schuyler Cebulskie
ac85ffce4b Add Collection.keyArray/firstKey/lastKey/randomKey 2016-09-12 21:39:41 -04:00
Schuyler Cebulskie
84b33f9b66 Add Collection.reduce 2016-09-12 21:33:29 -04:00
Schuyler Cebulskie
0bd00b12b7 Add Invite.url and toString 2016-09-12 21:07:05 -04:00
Schuyler Cebulskie
8bcb670920 Spit-polishing ClientOptions docs 2016-09-12 17:50:24 -04:00
Schuyler Cebulskie
6aa9bfd7f9 More ClientOptions docs cleanup 2016-09-12 17:17:16 -04:00
Schuyler Cebulskie
168ecdf8a9 Reorganise client options and use typedef properties 2016-09-12 17:04:19 -04:00
Schuyler Cebulskie
5464ee7e64 Clean up MessageOptions JSDoc 2016-09-12 16:23:15 -04:00
Amish Shah
92775abb49 Version bump to 9.2.0 2016-09-12 18:35:47 +01:00
Amish Shah
02b257e1fc Fix audio playing stupidly fast - fixes #689 2016-09-12 18:23:38 +01:00
Schuyler Cebulskie
5dd25ac1f1 Rename User typing methods 2016-09-12 13:08:11 -04:00
Schuyler Cebulskie
6fb0691a2b Add label for permission strings docs 2016-09-12 13:06:11 -04:00
Schuyler Cebulskie
961346dcaa Inline a line 2016-09-12 13:04:09 -04:00
Schuyler Cebulskie
8984bf332c Capitalised some letters 2016-09-12 13:02:56 -04:00
Amish Shah
ac2ad0dd23 Document PermissionResolvables 2016-09-12 17:58:57 +01:00
Amish Shah
ea55b0efbd Fix receiver.recreate() 2016-09-12 17:43:45 +01:00
Amish Shah
36435934c7 documentation v13 2016-09-12 17:36:38 +01:00
Amish Shah
75b01e0a4a add /play to test file 2016-09-12 17:08:56 +01:00
Amish Shah
95369b0a89 Add VoiceReceiver.destroy()/recreate(), addresses #693 2016-09-12 17:01:15 +01:00
Amish Shah
b39d959cdf Maybe fix voice and #650? 2016-09-12 16:39:18 +01:00
Schuyler Cebulskie
fba3508079 Add a little more detail about value 2016-09-12 02:52:32 -04:00
Schuyler Cebulskie
2aae20085b Key -> Property 2016-09-12 02:20:53 -04:00
Schuyler Cebulskie
516e6556a0 Update main docs page server links 2016-09-12 02:07:57 -04:00
Schuyler Cebulskie
e24c1e55a0 Remove wholly unnecessary example 2016-09-12 00:33:24 -04:00
Schuyler Cebulskie
7457985e60 Fix Collection.findKey doc link 2016-09-12 00:28:27 -04:00
Schuyler Cebulskie
95605863c7 Add Collection.findKey 2016-09-12 00:26:02 -04:00
Schuyler Cebulskie
ac1f5f32e2 Add Collection.find with function 2016-09-12 00:18:21 -04:00
Schuyler Cebulskie
774b4d4694 Fix GuildMember.hasPermission(s) explicit for owner 2016-09-12 00:08:12 -04:00
Schuyler Cebulskie
38c85dc076 Add Role.hasPermissions 2016-09-12 00:06:21 -04:00
Schuyler Cebulskie
46b7628d59 Made hasPermission(s) docs a bit more consistent 2016-09-12 00:04:07 -04:00
Schuyler Cebulskie
ebaaa65741 Make GuildMember.hasPermissions check owner 2016-09-11 23:58:01 -04:00
Schuyler Cebulskie
b88498271c Fix Message.isMentioned(null/undefined) 2016-09-11 23:56:31 -04:00
Schuyler Cebulskie
95de09f389 Reorganised a bunch of methods 2016-09-11 23:55:50 -04:00
Schuyler Cebulskie
ce6cb626dc Add Message.toString 2016-09-11 23:36:24 -04:00
Schuyler Cebulskie
d7bcf9564f Clean up recent User changes a bit 2016-09-11 23:34:09 -04:00
Gus Caplan
032d6613f7 add a message, because WHY THE HELL DID NO ONE EVER DO THIS (#690)
* add a message, because WHY THE HELL DID NO ONE EVER DO THIS

!!!

* make message better

* make linter happy

* disable max-len rule for line 37

* make gawdl3y be happy

* gawdl3y triggers me

* Update FfmpegConverterEngine.js
2016-09-11 21:28:17 -04:00
Amish Shah
9059eb13a2 Add passes to streaming voice 2016-09-11 18:49:18 +01:00
Amish Shah
d365eb95e2 document game data #687 2016-09-11 18:23:58 +01:00
Amish Shah
3dab19a3bc Add Client.fetchInvite 2016-09-11 18:19:55 +01:00
Amish Shah
07f4a20f77 Add link to Discord API in README 2016-09-11 17:53:49 +01:00
Amish Shah
b476473a2c Make npm test harder to pass (includes jsdoc now) 2016-09-11 17:50:28 +01:00
Amish Shah
8f1216d9a5 Add StreamDispatcher#start event 2016-09-11 17:39:07 +01:00
Amish Shah
aa5df43c50 Force user.bot to be a boolean 2016-09-11 17:25:16 +01:00
Amish Shah
f0a9a1353f prevent further user inaccuracies 2016-09-11 16:57:09 +01:00
Amish Shah
77e83fb85a Fix voice 😄 2016-09-11 16:41:05 +01:00
Schuyler Cebulskie
a52beaa78d Improve GuildMember.permissionsIn failure 2016-09-11 11:08:54 -04:00
Schuyler Cebulskie
21ad5668ba Build docs 2016-09-11 11:01:28 -04:00
Schuyler Cebulskie
e7eee3410a This is unnecessary. 2016-09-11 10:59:34 -04:00
Schuyler Cebulskie
7ff9ac2bcc Add TextBasedChannel.sendCode and make User/GuildMember partial implementations 2016-09-11 10:55:41 -04:00
Amish Shah
9e05caec0d Add GuildMember.hasPermissions 2016-09-11 12:58:56 +01:00
Amish Shah
3fba72107b Add GuildMember.permissionsIn and make ChannelResolvables more lenient 2016-09-11 12:51:32 +01:00
Amish Shah
7933d755be Fix docs generator and add EvaluatedPermissions.hasPermissions() 2016-09-11 12:44:31 +01:00
Amish Shah
af33b2b5bb fix #684 2016-09-11 12:38:57 +01:00
Amish Shah
5b8f882a0f fix avatars being set to undefined 2016-09-11 11:50:19 +01:00
Schuyler Cebulskie
272555d9ae Better. 2016-09-11 02:18:22 -04:00
Schuyler Cebulskie
350c893ead Add GuildMember.toString 2016-09-11 02:13:49 -04:00
Schuyler Cebulskie
47d71d32f3 Make grammer gooder 2016-09-11 01:40:37 -04:00
Schuyler Cebulskie
0833500d60 Made most object typedefs specify their properties 2016-09-11 01:21:49 -04:00
Schuyler Cebulskie
7da00cf0fe Add long message splitting 2016-09-11 01:01:36 -04:00
Schuyler Cebulskie
68879777d8 Rename EvaluatedPermissions.permission to .raw 2016-09-10 22:37:38 -04:00
Amish Shah
e75dd2638c Add Burst requests - addresses #656 2016-09-10 22:12:10 +01:00
Amish Shah
48f84c6178 Fix nicknames not changing 2016-09-10 21:39:09 +01:00
Amish Shah
de6042a4d7 Merge branch 'master' into indev 2016-09-10 19:30:47 +01:00
Schuyler Cebulskie
3e39861534 Fix #677 2016-09-10 14:22:09 -04:00
Yannick Linke
6a53255ed5 Fixes typo in GuildRoleUpdate's documentation (#679)
See https://github.com/hydrabolt/discord.js/blob/7fe032c785/src/util/Constants.js#L156
2016-09-10 14:20:43 -04:00
Amish Shah
8f645267a9 Merge branch 'indev' of https://github.com/hydrabolt/discord.js into indev 2016-09-10 18:05:21 +01:00
Amish Shah
00627ecde4 Change maximum age of images on README 2016-09-10 17:46:49 +01:00
Schuyler Cebulskie
537b372b42 Fix another ESLint failure 2016-09-10 12:46:22 -04:00
Schuyler Cebulskie
a5a269b940 Fix Hydra's ESLint failure 2016-09-10 12:42:04 -04:00
Schuyler Cebulskie
91a7d4f80e Move channel type to constructors 2016-09-10 12:39:28 -04:00
Amish Shah
3f52ba27c9 DMChannel now uses data manager to instantiate users 2016-09-10 17:31:56 +01:00
Amish Shah
78673139ca Move _typing to constructor 2016-09-10 17:30:20 +01:00
Amish Shah
fd564176ff Have block in place for rare weird typing in voice channel bug 2016-09-10 17:28:51 +01:00
Amish Shah
d7bf40cab0 Simplify APIRequest endpoint 2016-09-10 17:21:15 +01:00
Amish Shah
894115758c Stricter rate-limiting to avoid unlikely 429s 2016-09-10 17:21:04 +01:00
Amish Shah
c6aa16277a Add TextChannel.members 2016-09-10 17:06:10 +01:00
Amish Shah
8c0685fa9a Add StreamDispatcher.time and totalStreamTime, addresses #674 2016-09-10 14:44:52 +01:00
Amish Shah
9d1d7c5162 Version bump to 9.1.1 2016-09-10 14:27:29 +01:00
Amish Shah
0d417b6432 Fix voice speed issues, fixes #672 2016-09-10 14:22:14 +01:00
Amish Shah
4255dcd3ca Fix multipart for requests, fixes #675 2016-09-10 12:40:51 +01:00
Amish Shah
84fe65ec78 Fix members being recreated after leaving - fixes #667 2016-09-10 11:38:48 +01:00
Amish Shah
cd404fc7d3 Merge branch 'master' into indev 2016-09-10 11:35:36 +01:00
bdistin
9b45294814 Update Guild.js (#673) 2016-09-10 07:31:37 +01:00
Schuyler Cebulskie
c405d67e09 Add User typing methods 2016-09-09 14:11:30 -04:00
Amish Shah
4278a37e3c maybe fix voice idk 2016-09-09 18:45:33 +01:00
Amish Shah
b7204f33b9 some voice fixes 2016-09-09 18:35:27 +01:00
Amish Shah
f192d16b5b Fix delays inbetween audio streams (#632) 2016-09-09 18:28:21 +01:00
Amish Shah
e57fe71387 version bump to 9.1.0 2016-09-09 17:34:27 +01:00
Amish Shah
dd623891e2 websocket should silently error if there are no listeners for error 2016-09-09 17:05:38 +01:00
Amish Shah
e44853ee6d Fix weird bot bug #612 2016-09-09 16:41:57 +01:00
Schuyler Cebulskie
8f9923976f Fix stuff 2016-09-09 11:35:59 -04:00
Amish Shah
dbaaa8dc93 Fix null game objects being defaulted to current game - fixes #666 2016-09-09 16:28:40 +01:00
Amish Shah
85fae72b7b Fix #657 2016-09-09 16:23:07 +01:00
Schuyler Cebulskie
8d3018e190 Nice. 2016-09-09 01:08:17 -04:00
Schuyler Cebulskie
01d032abee Merge remote-tracking branch 'refs/remotes/origin/master' into indev
# Conflicts:
#	src/structures/Guild.js
2016-09-09 00:45:35 -04:00
Schuyler Cebulskie
9682adb9fe Clean up PR a bit 2016-09-08 22:59:10 -04:00
Perry Berman
f7a542f12b Add optional streamOptions to playStream() functions (#663)
* Adding playStream options

Added optional volume and seek properties

* fixed code formatting

Edited my code styling to match with the rest of d.js

* Added Default Variable

* Added Documentation

Added documentation for the streamOptions parameter
Added a default value for seek in FFmpegConverterEngine
Removed redundantcy

* Fixed docs for voiceConnection

* Change _updateMember's notSame check from && to || (#665)

* Fixed git merge fail

* Built Docs. Again.........

* Hopefully finally fixed
2016-09-08 22:49:52 -04:00
Schuyler Cebulskie
4be7a1bfd1 My ESLint is broken 2016-09-08 22:30:27 -04:00
Schuyler Cebulskie
d42b589528 Rename emailOrToken -> tokenOrEmail 2016-09-08 22:27:38 -04:00
Schuyler Cebulskie
9309b702eb Remove unnecessary default in docs 2016-09-08 22:06:53 -04:00
Schuyler Cebulskie
bbc9df0b0d Improve cleanContent code 2016-09-08 22:05:30 -04:00
Tim Hwang
8f04fae4c0 Change _updateMember's notSame check from && to || (#665) 2016-09-08 21:55:50 -04:00
Kelvin Wu
9888cef486 Add content parameter to sendFile() (#664)
* Add content arg to sendFile(). Closes #658.

* Shorten this a bit.
2016-09-08 21:55:18 -04:00
Brian Tanner
47a164bd36 fix epipe when skipping songs, probably fixes econnreset (#662) 2016-09-08 21:53:49 -04:00
Schuyler Cebulskie
a5dfa08777 Revert "Hopefully fix type showing in GuildChannel docs"
This reverts commit 5563af0da5.
2016-09-08 19:56:21 -04:00
Schuyler Cebulskie
5563af0da5 Hopefully fix type showing in GuildChannel docs 2016-09-08 19:54:55 -04:00
LewisHogan
9bef99c75c Added cleanContent getter (#644)
* Added cleanContent getter which replaces mentions with the equivalent
text.

(Majority of code implemented by Gus).

* Fixed bug where invalid mentions would cause crash

* Fixed not cleaning @everyone and @here

* Fixed only detecting first @here or @everyone, resolved to test software (and learn regular expressions) in the future
2016-09-08 16:38:17 -04:00
Schuyler Cebulskie
7fe032c785 Make default max_message_cache match docs 2016-09-08 03:01:49 -04:00
Schuyler Cebulskie
a6ae66e184 Build docs 2016-09-08 02:35:46 -04:00
Schuyler Cebulskie
57acd4f41a Add GuildMember.permissions/hasPermission 2016-09-08 02:29:51 -04:00
Schuyler Cebulskie
594836b1bf Rewrite Collection.map/filter, and add some/every 2016-09-08 02:26:28 -04:00
Schuyler Cebulskie
978cf9d87f Fix permission overwrites for @everyone 2016-09-07 23:42:14 -04:00
Schuyler Cebulskie
465ff074e1 Prevent Guild.fetchMember from messing with fetchMembers 2016-09-07 23:12:36 -04:00
Kelvin Wu
9bdf670a14 Add Guild.defaultChannel. (#646)
* Add Guild.defaultChannel. Closes #643.

* Change defaultChannel to a getter.
2016-09-07 15:58:18 -04:00
Schuyler Cebulskie
31bdc4fb1e Probably fix GitHub's lacklustre rendering 2016-09-07 02:37:43 -04:00
Schuyler Cebulskie
580550e5e2 Add basic contributor's guide 2016-09-07 02:30:57 -04:00
Schuyler Cebulskie
bc09da9a35 Update documentation 2016-09-07 02:24:25 -04:00
Schuyler Cebulskie
818649b94f Organise structure methods 2016-09-07 02:07:39 -04:00
Schuyler Cebulskie
73cb34ed37 Move _typing to text-based channels 2016-09-07 01:34:46 -04:00
Schuyler Cebulskie
f185d892c7 Fix two more lines to use new typing map
And a tiny text fix
2016-09-07 00:58:19 -04:00
Gus Caplan
b9caa2ee5d when fetch_all_members is enabled, new guilds should also do that (#623)
* when fetch_all_members is enabled, new guilds should also do that

* Fix Gus' derp (#1)

* Fix my derp (#2)

* Fix another of Gus' derps (#3)
2016-09-07 00:43:06 -04:00
Programmix
ab4707f9b4 Fix crash on role update (#648) 2016-09-07 00:26:34 -04:00
Schuyler Cebulskie
b7f582b7f0 Clean up a bunch of stuff
- Channel typing data is now a Map
- Client properties on structures are now non-enumerable and
non-configurable
2016-09-07 00:24:45 -04:00
Schuyler Cebulskie
3a790e74f4 Build docs 2016-09-06 20:39:39 -04:00
Schuyler Cebulskie
c7b4cf3d3f Add Guild.fetchMember 2016-09-06 20:36:58 -04:00
Kelvin Wu
f3286402fb Make Message.edit() accept arrays. (#630)
* Make Message.edit() accept arrays. Update corresponding parameters in docs (#624).

* Tweak parameter types in docs.

* Update docs.
2016-09-06 20:32:24 -04:00
Programmix
17bee8084e Add Message.edits (#636)
* Add Message.edits

* Make travis happy

* Change @type for consistency
2016-09-06 19:20:35 -04:00
Schuyler Cebulskie
e4cac2d575 Rebuild docs 2016-09-06 18:09:33 -04:00
Schuyler Cebulskie
752e12116e Move topic to TextChannel (Fixes #642) 2016-09-06 18:05:14 -04:00
Schuyler Cebulskie
9d694d2b67 Add ability to ban non-members from guilds (#638) 2016-09-06 16:55:42 -04:00
Schuyler Cebulskie
e1bda864f7 Add createRole with data (#637) 2016-09-06 16:54:06 -04:00
Kelvin Wu
bfc9de438a Fix typo in readme. (#631) 2016-09-06 16:53:00 -04:00
Schuyler Cebulskie
7fea0a3937 Rename createdAt -> creationDate (#628)
* Rename createdAt -> creationDate

Also make it return a Date like it says, and small cleanup

* Build docs
2016-09-06 16:52:10 -04:00
Schuyler Cebulskie
6bfad00229 Small docs changes for consistency (#617) 2016-09-06 16:45:29 -04:00
Schuyler Cebulskie
910f47240d Move and document GuildChannel.guild (#613) 2016-09-06 16:45:09 -04:00
HyperCoder
943767dc83 Add <User/Guild/Role/Channel>.createdAt (#620)
* Add Role.createdAt

* Add Channel.createdAt

* Add Guild.createdAt

* Add User.createdAt

* Change createdAt to Unix Timestamp

* Add createdAt to Emojis

* Change createdAt to Unix Timestamp
2016-09-05 15:59:27 +01:00
Tyler
6dfe160c52 Add get status() for Client (#622)
* Add get status() for Client

* Fix trailing space
2016-09-05 07:52:15 +01:00
Snazzah
bd113eef06 MessageEmbedAuthor (#619) 2016-09-05 07:22:51 +01:00
Schuyler Cebulskie
dc7b07022c Add GuildMember.addRole/addRoles (#615)
* Add GuildMember.addRole/addRoles

* Add GuildMember.removeRole/removeRoles
2016-09-05 07:18:51 +01:00
Schuyler Cebulskie
e87c9bb9a0 Update readme and docs welcome (#616) 2016-09-05 07:18:10 +01:00
Schuyler Cebulskie
799054df00 Add more exports (#610) 2016-09-05 07:16:31 +01:00
Schuyler Cebulskie
7a8c8f7453 Fix example (#609)
* Fix example

* Build docs
2016-09-04 22:12:31 +01:00
Schuyler Cebulskie
2c6b804fc9 Improve sharding stuff (#608)
* Improve sharding stuff

* Build docs
2016-09-04 22:02:52 +01:00
Amish Shah
7b870d13de Fix collection.find/findAll docs 2016-09-04 21:41:19 +01:00
Schuyler Cebulskie
28169c0f55 Clean up sentence structure, add more details, etc (#606)
* Clean up sentence structure, add more details, etc

* Build docs
2016-09-04 21:33:44 +01:00
Schuyler Cebulskie
5bd258a557 Allow sendMessage disableEveryone to override client option (#605) 2016-09-04 21:05:38 +01:00
Hackzzila
3b7d5e869b Added disable_everyone (#603)
* Added disable_everyone

* Fixed docs
2016-09-04 19:03:59 +01:00
Manuel Kraus
48e7fad1c9 Expose TextBasedChannel#fetchMessage() (#602) 2016-09-04 18:46:29 +01:00
Amish Shah
4a252380d9 Remove redundant .jscsrc file 2016-09-04 18:04:42 +01:00
Amish Shah
bcab8805af Add client.emojis and fix eslint 2016-09-04 17:54:31 +01:00
Amish Shah
db9d5b8110 Make setStatus take a streaming URL param 2016-09-04 17:48:02 +01:00
Amish Shah
bf3c283998 Add Message.isMentioned 2016-09-04 17:21:50 +01:00
Amish Shah
9f0db9d0d8 join arrays with new lines when sending as messages 2016-09-04 17:16:01 +01:00
Amish Shah
600541b476 Add guides 2016-09-04 17:10:17 +01:00
Amish Shah
bc8924b255 Add badges to the documentation README 2016-09-04 16:15:16 +01:00
Amish Shah
7db345942f Build docs for PR 2016-09-04 16:13:55 +01:00
Tyler
027f95b7b2 Update installation command in welcome (#597) 2016-09-04 16:12:42 +01:00
Amish Shah
0741be6a95 Fix invalid link to README 2016-09-04 15:55:24 +01:00
Amish Shah
cb22f8efea Update dependencies 2016-09-04 14:59:52 +01:00
Amish Shah
69900f3652 Add legacy docs 2016-09-04 14:22:26 +01:00
Amish Shah
302b1da9df fix updating docs 2016-09-04 14:12:25 +01:00
Évelyne Lachance
4022c8167f initial "more information" about updating (#596)
Still some work to be done.
2016-09-04 14:09:49 +01:00
Amish Shah
ab6c99f155 9.0.2 2016-09-04 13:48:39 +01:00
Amish Shah
cda16105f3 fix README 2016-09-04 13:47:49 +01:00
Amish Shah
9ce3b93827 9.0.1 2016-09-04 13:41:08 +01:00
Amish Shah
2762c1d439 Merge branch 'indev' 2016-09-04 13:27:23 +01:00
Amish Shah
28c9f94e11 Update README 2016-09-04 13:25:43 +01:00
Amish Shah
4598f90183 bump to 8.0.0 2016-09-04 12:46:02 +01:00
Amish Shah
e666c4edf7 Merge branch 'indev-rewrite' into indev 2016-09-04 12:42:31 +01:00
Amish Shah
3f7244da8d reset indev 2016-09-04 12:42:09 +01:00
Amish Shah
0454674ceb document shard 2016-09-04 12:37:42 +01:00
Amish Shah
7475f734ac Add debug stuff 2016-09-04 12:31:16 +01:00
Amish Shah
f23c07a08e document sharding stuff 2016-09-04 12:27:06 +01:00
Amish Shah
b1a25bd176 Add sharding manager 2016-09-04 12:21:07 +01:00
Amish Shah
906672e538 Merge branch 'indev-rewrite-sharding' into indev-rewrite 2016-09-04 12:17:42 +01:00
Amish Shah
89145b121d add info to Guild 2016-09-04 12:15:39 +01:00
Amish Shah
1155c482f1 make client.readyTime a date 2016-09-04 11:55:23 +01:00
Amish Shah
9c915d1e0a Fix constants errors not giving a stacktrace 2016-09-04 11:53:48 +01:00
Amish Shah
4d2bb891a9 Fix doc gen 2016-09-04 11:39:40 +01:00
Amish Shah
0c32e590a8 fix constants reference 2016-09-04 11:35:21 +01:00
Schuyler Cebulskie
0b908f5bce Cleanup Part 2: Electric Boogaloo (Reloaded) (#594)
* Cleanup Part 2: Electric Boogaloo (Reloaded)

* Moar cleanup

* Tweak NOT_A_PERMISSION error
2016-09-04 10:08:09 +01:00
Amish Shah
5a9c42061f Fix permissionsFor 2016-09-03 23:46:39 +01:00
Amish Shah
16fbbde35c Make syncGuilds off limits to bot accounts 2016-09-03 23:25:26 +01:00
Schuyler Cebulskie
5af09d335c Switch to maps for action deleted + more cleaning (#592) 2016-09-03 23:21:31 +01:00
Amish Shah
a3b9b0f1b4 Fix VC docs 2016-09-03 23:11:55 +01:00
Amish Shah
efd1d0c738 rewrite some docs and refactor some names 2016-09-03 23:06:58 +01:00
Amish Shah
7f9ea762ed Add Collection.map(); 2016-09-03 23:00:14 +01:00
Amish Shah
fced6983d9 GuildMember.roles is now a collection instead of an array 2016-09-03 22:56:33 +01:00
Schuyler Cebulskie
59a5862f2d Clean up Actions code (#591) 2016-09-03 22:48:51 +01:00
Amish Shah
432c5ccc82 Add volume modification to dispatcher 2016-09-03 22:27:43 +01:00
Amish Shah
b6abe7dbab actually register avatar example 2016-09-03 21:51:24 +01:00
Amish Shah
5d067d505c Add avatar example 2016-09-03 21:51:05 +01:00
Schuyler Cebulskie
64d89b3748 Replace a few rejections with throw (#590) 2016-09-03 21:36:54 +01:00
Amish Shah
44b34154e8 guarantee promise resolution for voice connections 2016-09-03 21:32:11 +01:00
Amish Shah
1be0270796 Fix documentation generator 2016-09-03 21:26:02 +01:00
Amish Shah
7ff2568cfc Fix collectors and make guild sync add previously unknown members 2016-09-03 21:21:15 +01:00
Amish Shah
09dee3d46a Fix ready never firing for truly unavailable guilds 2016-09-03 21:10:10 +01:00
Schuyler Cebulskie
68acf37fd4 Add stricter/better ESLint config (#589)
* Add stricter/better ESLint config

* Remove more unnecessary @returns
2016-09-03 20:45:23 +01:00
Schuyler Cebulskie
2682c07bd8 Add dev dependencies and cleanup ESLint file (#588) 2016-09-03 19:32:04 +01:00
Amish Shah
a172fffd76 Actually add GUILD_SYNC 2016-09-03 17:59:16 +01:00
Amish Shah
513fdabd19 Add GUILD_SYNC support (user accounts are fixed now) 2016-09-03 17:58:59 +01:00
Schuyler Cebulskie
02324fbecb Add string guild resolving (#587) 2016-09-03 17:01:50 +01:00
Schuyler Cebulskie
d97ce2e181 Remove all string object references (#586) 2016-09-03 16:58:28 +01:00
FrankenMan
ec0a5cdfbc Reworded third sentence to be more grammatically correct (#584) 2016-09-03 14:00:01 +01:00
Schuyler Cebulskie
27652b94af Make JSDocs follow general conventions (#582)
* Make JSDocs follow usual conventions

* Fix StringResolvable name

* Make function lowercase
2016-09-03 09:57:25 +01:00
Schuyler Cebulskie
44efcf3f52 Lower Node version requirement to 6.0.0 (#583) 2016-09-03 09:56:33 +01:00
Amish Shah
1cbd1bda46 fix the bug in a better way 2016-09-02 16:57:14 +01:00
Amish Shah
7d27667afc Fix weird guild ug 2016-09-02 16:56:13 +01:00
Amish Shah
ae17a89191 Reduce memory usage by dynamically creating Dates 2016-09-02 13:18:27 +01:00
Schuyler Cebulskie
b8a5669fda Overhaul channel typing system (#576)
* Overhaul channel typing system

* Fix ESLint error

* Add channel.isTyping()

* Add count argument to startTyping

* Add range checking to startTyping count

* Better range checking for count

* Add channel.getTypingCount()

* Change getTypingCount() to typingCount getter

* Switch isTyping() to typing getter

* Fix new methods and switch to Map

* Fix applyProp so getters/setters will work

* Add default value to force
2016-09-02 13:00:33 +01:00
Hyper-Coder
168256469e Re add <Client>.uptime (#579) 2016-09-02 00:03:33 +01:00
Amish Shah
43f1c952c3 do more docs 2016-09-01 17:18:05 +01:00
Amish Shah
df9cab3864 whoops fix docs 2016-09-01 15:55:14 +01:00
Amish Shah
8d9a778320 fix guild owner 2016-09-01 15:54:58 +01:00
Amish Shah
552d603782 Try and fix author bug? 2016-09-01 14:50:45 +01:00
Amish Shah
aee547d28e fix docs 2016-09-01 13:10:51 +01:00
Amish Shah
a725147f17 Document EvaluatedPermissions 2016-09-01 13:08:55 +01:00
Amish Shah
28ad224207 Add GuildMember as user resolvable 2016-09-01 12:05:29 +01:00
Amish Shah
1298fefa2f Fix message docs 2016-09-01 10:08:46 +01:00
Amish Shah
5f5ee18543 Move message.mentionEveryone to message.mentions.everyone 2016-08-31 21:42:14 +01:00
Amish Shah
e8c1c228d0 Refactor getMessages to fetchMessages 2016-08-31 21:34:49 +01:00
Amish Shah
ff3148ddd4 Add awaitMessages 2016-08-31 21:13:38 +01:00
Amish Shah
91b1fa8359 Add CollectorOptions.max 2016-08-31 20:48:51 +01:00
Amish Shah
a638b6369a Stop multiple end events 2016-08-31 20:44:35 +01:00
Amish Shah
e42f6b1024 Fix documentation 2016-08-31 20:40:13 +01:00
Amish Shah
1da8ec7ddd Create TextBasedChannel MessageCollector 2016-08-31 20:39:02 +01:00
Amish Shah
892e162229 fix setTyping and many other timeout/interval based methods 2016-08-31 19:28:00 +01:00
Amish Shah
7f09da5d35 more shard stuff 2016-08-31 14:04:25 +01:00
Amish Shah
631626a3f9 Merge remote-tracking branch 'origin/indev-rewrite' into indev-rewrite-sharding 2016-08-31 13:43:18 +01:00
Amish Shah
b18aaa8711 Fix channel permission overwrites not being accounted for (#574) 2016-08-31 13:41:13 +01:00
Amish Shah
8c3ae2fd90 work on sharding 2016-08-31 13:36:05 +01:00
Schuyler Cebulskie
dbda589088 Massively improve performance of message caching (#573) 2016-08-31 10:05:15 +01:00
Tain101
0adfc0fe95 Fixed manageRoles bug in lib. Fixes #507 (#570)
* ChannelPermissions changed manageRoles to administrator. fixes #507

* fixed manageRoles bug inside lib/ChannelPermissions. fixes #507
fixed related comments inside Role.
2016-08-30 16:40:29 -07:00
Schuyler Cebulskie
f02cc27735 Fix ClientDataManager.killUser (#572) 2016-08-30 19:31:14 +01:00
Amish Shah
cde3bcb3bd Tidy up shards a bit 2016-08-30 19:07:13 +01:00
Schuyler Cebulskie
bce3cd2b8b Add key/value validation to Collection.find/findAll (#569)
* Add key/value validation to Collection.find/findAll

* Fix ESLint errors
2016-08-30 18:20:20 +01:00
Amish Shah
c70dfa83fb Add ShardManager 2016-08-30 17:26:32 +01:00
Amish Shah
4df7968630 Add updating file 2016-08-30 15:06:24 +01:00
Amish Shah
39f969c777 Update docs 2016-08-30 14:56:39 +01:00
Amish Shah
4f41a86dd3 Clear timeout IDs from array after execution 2016-08-30 14:20:33 +01:00
Amish Shah
680ac48e3d Emit error instead of console.log 2016-08-30 14:06:16 +01:00
Amish Shah
49d525109f Fix ESLint 2016-08-30 13:55:55 +01:00
Amish Shah
907c1ed9f9 Add message.system 2016-08-30 13:47:52 +01:00
Amish Shah
0860d5210b Add message.member if available 2016-08-30 13:40:44 +01:00
Amish Shah
d249aa10cc Add client.destroy(); 2016-08-30 13:05:57 +01:00
Schuyler Cebulskie
56352220af Make Collection.find and findAll use .values() (#567)
* Make Collection.find and findAll use .values()

* Make Collection.deleteAll use .values()
2016-08-30 09:47:11 +01:00
Schuyler Cebulskie
60a1ba3088 Fix Collection.exists (#566) 2016-08-30 09:46:40 +01:00
Hyper-Coder
4f130a1a58 Fixed sendFile (#565)
https://images.typicalbot.com/i/57c4dcc5d74b7.png
2016-08-30 09:43:03 +01:00
Tain101
ee64253f0b ChannelPermissions changed manageRoles to administrator. fixes #507 (#561) 2016-08-29 20:39:05 -07:00
Programmix
6d7e989e3b Users are not servers (#556) 2016-08-29 20:38:23 -07:00
Amish Shah
c6688b94e6 add guildmember.nickname to docs 2016-08-29 22:55:01 +01:00
Amish Shah
090234cef2 Fix guild.owner doc 2016-08-29 22:53:52 +01:00
Manuel Kraus
817bea5a70 Add timeout to Message#delete() (#563) 2016-08-29 20:15:41 +01:00
Amish Shah
52adb3d8b2 undo fix whoops ¯\_(ツ)_/¯ 2016-08-29 19:13:47 +01:00
Amish Shah
1e2e940b98 File resolving can use http too now 2016-08-29 19:10:05 +01:00
Amish Shah
78e0d88f55 Make file resolving non-blocking for local paths 2016-08-29 19:08:36 +01:00
Amish Shah
897cbfec77 Fix leaving guilds if you are the owner 2016-08-29 19:03:50 +01:00
Manuel Kraus
d9ae732bfd Add sendFile function (#562)
* sendFile

* Add default value to filename

* eslint

* (╯°□°)╯︵ ┻━┻
2016-08-29 19:01:05 +01:00
Amish Shah
df934eccaf Fix voice losing count 2016-08-29 16:41:33 +01:00
Amish Shah
3541b0a88f Add MessageEmbed and subclasses 2016-08-29 15:53:57 +01:00
Amish Shah
f6c95de85d Create MessageAttachment class 2016-08-29 15:35:44 +01:00
Amish Shah
5d06be6333 Add Emoji class 2016-08-29 15:18:41 +01:00
Amish Shah
144638e746 Experimental ClientOptions.fetch_all_members 2016-08-29 13:54:35 +01:00
Amish Shah
001460acc0 Add guild.fetchMembers() 🎉🎉 2016-08-29 13:20:06 +01:00
Amish Shah
727f3de45b Merge branch 'indev-rewrite' of https://github.com/hydrabolt/discord.js into indev-rewrite 2016-08-29 12:44:37 +01:00
Amish Shah
fe58105d04 Fix memberCount inaccuracy 2016-08-29 12:44:29 +01:00
Schuyler Cebulskie
0b4f4a559c Make existence checks use .has(id) (#559) 2016-08-28 22:54:10 -07:00
Amish Shah
b44a3770d9 Added guild.fetchInvites() 2016-08-28 21:00:01 +01:00
Amish Shah
1dba048d2e Add invite.delete() 2016-08-28 20:51:27 +01:00
Amish Shah
ba3d104619 Added guildChannel.createInvite(); 2016-08-28 20:32:37 +01:00
Amish Shah
9f1475f358 Add TextBasedChanel.fetchPinnedMessages() 2016-08-28 19:42:40 +01:00
Amish Shah
a57d6b723a Add message.pin() and .unpin(); 2016-08-28 19:03:08 +01:00
Amish Shah
6ea2a523d6 Update node engine requirements 2016-08-28 18:56:12 +01:00
Amish Shah
3462bbc8d4 Remove opusscript from optionals whoops 2016-08-28 18:55:46 +01:00
Amish Shah
93771ce6d0 Make opusscript a dependency 2016-08-28 18:55:26 +01:00
Amish Shah
a91fcd5cab Add ChannelPinsUpdate event 2016-08-28 18:50:55 +01:00
Amish Shah
309bc5da1f document guildMemberAdd 2016-08-28 18:12:52 +01:00
Amish Shah
6bc7220ded Merge branch 'indev-rewrite' of https://github.com/hydrabolt/discord.js into indev-rewrite 2016-08-28 17:41:19 +01:00
Amish Shah
ae862c38ff Remove guild.kick for consistency 2016-08-28 17:40:45 +01:00
abal
ac7e1a052c Add opusscript as a possible opus encoder (#558)
* Add opusscript as a possible opus encoder

* Make weird eslint rule happy
2016-08-28 17:35:59 +01:00
Amish Shah
a959cd339c Fix inaccuracy in VoiceReceiver docs 2016-08-27 23:15:21 +01:00
Hackzzila
83b33c5046 Added MessageOptions to the docs and added an options param to sendTTSMessage (#555)
* Added MessageOptions to the docs and added an options param to sendTTSMessage

* Docs
2016-08-27 23:06:14 +01:00
Amish Shah
948a18dfe2 Fix docs.json 2016-08-27 22:52:21 +01:00
Amish Shah
ef0f38930f Added Guild.fetchBans() 2016-08-27 22:48:48 +01:00
Amish Shah
22062f1f86 Added guild.unban 2016-08-27 22:31:21 +01:00
Hackzzila
2c056b6418 Added nonce support to sendMessage (#553) 2016-08-27 22:01:51 +01:00
Amish Shah
4d6c604322 Added GuildMember.ban() 2016-08-27 21:59:35 +01:00
Amish Shah
6a1a36813f Add TextBasedChannel.setTyping(bool) 2016-08-27 21:44:08 +01:00
Schuyler Cebulskie
6faa409e96 Add note about requiring bot accounts (#552) 2016-08-27 20:22:08 +01:00
Amish Shah
b356ccf1e5 Merge branch 'indev-rewrite' of https://github.com/hydrabolt/discord.js into indev-rewrite 2016-08-27 19:40:18 +01:00
Amish Shah
9ea9623de0 Add Permission Overwrites deletion 2016-08-27 19:40:14 +01:00
Schuyler Cebulskie
7ae12ab325 Rename client.cacheUser to client.fetchUser (#551) 2016-08-27 19:28:18 +01:00
Amish Shah
135ab02104 fix eslint 2016-08-27 18:55:20 +01:00
Amish Shah
6293f28ad9 Add guild member nickname setting n stuff 2016-08-27 18:55:08 +01:00
Amish Shah
8a1bfe559d Add guildmember nickname tracking 2016-08-27 17:54:58 +01:00
Amish Shah
50c6fa3433 Role hex stuff 2016-08-27 17:46:13 +01:00
Amish Shah
f2708dd26f Add playPCMStream 2016-08-27 15:48:10 +01:00
Amish Shah
3718841c7c Merge branch 'indev-rewrite' of https://github.com/hydrabolt/discord.js into indev-rewrite 2016-08-27 15:41:42 +01:00
Amish Shah
19d976748c VoiceReadable stream now ends when a member leaves a VoiceChannel 2016-08-27 15:35:55 +01:00
Schuyler Cebulskie
f944dce5c7 Add client.cacheUser method (#548)
* Add client.cacheUser method

* Fixed ESLint issues

* Added existence check first
2016-08-27 15:22:07 +01:00
Amish Shah
e47f3dda94 Merge branch 'indev-rewrite' of https://github.com/hydrabolt/discord.js into indev-rewrite 2016-08-26 23:27:43 +01:00
Amish Shah
947f61e436 Actually fix message.mentions.channels 2016-08-26 23:27:37 +01:00
Schuyler Cebulskie
b1772089d1 Made GuildChannel.toString return a mention (#543) 2016-08-26 22:57:08 +01:00
Amish Shah
642d768cdc Add textBasedChannel.bulkDelete() 2016-08-26 22:13:27 +01:00
Amish Shah
b22bda74b8 Fix ESLint 2016-08-26 21:17:37 +01:00
Amish Shah
e5057a5b6a Add iconURL/avatarURL and fix object.values reference 2016-08-26 19:00:55 +01:00
Amish Shah
0988b47fcd fix the derp 2016-08-26 18:49:19 +01:00
Amish Shah
ee6ccc5e17 Fix fs-extra dependencies 2016-08-26 18:05:36 +01:00
Amish Shah
870f3590fe Merge branch 'indev-rewrite-voice' into indev-rewrite 2016-08-26 17:35:10 +01:00
Amish Shah
6ddc7a813c Add VoiceReceiver streams 2016-08-26 17:34:28 +01:00
Gus Caplan
3a031c65e7 fix issues with line length being greater than 120 (#544) 2016-08-26 16:17:04 +01:00
Hackzzila
d215e283e6 Fixed fs-extra again, hydrapls (#547) 2016-08-26 16:16:39 +01:00
Hackzzila
8507e34995 Added fs-extra to the NON devDependencies (cmon hydra) (#545) 2016-08-26 01:43:15 +01:00
Schuyler Cebulskie
0a005cbd16 Fix other .equals(null) (#541) 2016-08-26 00:14:19 +01:00
Amish Shah
48762c642c Make voice receiving better 2016-08-25 23:12:03 +01:00
Amish Shah
2d6068010b Create basic voice receiving 2016-08-25 22:40:22 +01:00
Schuyler Cebulskie
8038903c3e Fixed user.equals(null) (#540)
This fixes `user.equals` when passing `null` or `undefined`.
2016-08-25 22:06:32 +01:00
Amish Shah
7ba37a3511 fix eslint for opus 2016-08-25 22:02:41 +01:00
Amish Shah
ccf513a2fc Fix DMs breaking 2016-08-25 21:38:50 +01:00
Amish Shah
8d094cdfb1 Add channel.type 2016-08-25 19:41:27 +01:00
Amish Shah
64b0e6bc84 guildMemberSpeaking docs 2016-08-25 19:13:38 +01:00
Amish Shah
fe3fdb7d6a document voice 2016-08-25 19:12:23 +01:00
Amish Shah
6d7e649bb1 fix some voice stuff 2016-08-25 14:49:18 +01:00
Amish Shah
7b2d76429f remove console.log 2016-08-25 14:28:27 +01:00
Amish Shah
baff7a094c Merge remote-tracking branch 'origin/indev-rewrite' into indev-rewrite-voice 2016-08-25 14:26:38 +01:00
Amish Shah
d6f5df39fc voice stuff 2016-08-25 14:24:19 +01:00
LewisHogan
cdb74a75f2 Indev rewrite - Changed GuildChannel type (#536)
* Altered GuildChannel.type to return a string containing either "text",
"voice" or the id of the channel type.

* Fixed typo

* Altered code to pass ESLint test (Functionality Unchanged).

* Third times the charm.
2016-08-24 23:38:07 +01:00
Amish Shah
253789f398 PLS WORK 2016-08-24 22:26:32 +01:00
Katherine McAuliffe
5500b87968 Fix two typos (#535) 2016-08-24 14:08:20 -07:00
Amish Shah
8683f45816 errory voice 2016-08-24 21:38:52 +01:00
Hyper-Coder
7892e62604 Added Client.uptime (#533)
* Added Client.uptime

* Added Client.uptime

* Update Client.js
2016-08-24 17:16:22 +01:00
Amish Shah
48444a5444 Fix voice channel members 2016-08-23 22:34:51 +01:00
Amish Shah
328f3c4ae8 Add VoiceConnection.disconnect([reason]); 2016-08-23 21:47:41 +01:00
Amish Shah
f9a553a7f0 Documentation 2016-08-23 21:16:52 +01:00
Amish Shah
d0a76f3f38 Promisify 2016-08-23 21:04:19 +01:00
Amish Shah
e370ccf806 Complete voice connection 2016-08-23 20:59:08 +01:00
Amish Shah
f713f52841 Add voice websocket handling 2016-08-23 19:13:23 +01:00
Amish Shah
d8b1ef47cd voice setup waits for all data 2016-08-23 18:29:53 +01:00
Amish Shah
fa085c18cd Handle Voice Server Update events 2016-08-23 17:52:40 +01:00
Amish Shah
dfbe44143a merge 2016-08-23 17:12:37 +01:00
Amish Shah
d029227a8e rebuild docs 2016-08-23 17:08:04 +01:00
Amish Shah
b065bf799c Fix getMessages bug 2016-08-23 17:03:49 +01:00
Amish Shah
0edf838474 more voice stuff 2016-08-23 16:59:38 +01:00
Amish Shah
f38aff7523 start work on voice manager 2016-08-23 15:49:04 +01:00
Amish Shah
c8be80abd7 Add support to recognise 4004 codes and throw an error 2016-08-23 15:09:03 +01:00
Amish Shah
84a4755f53 Fix typo in docs 2016-08-23 14:44:22 +01:00
Amish Shah
2ed4ff7a55 Add caching to travis build script 2016-08-23 14:25:15 +01:00
Amish Shah
1ff7bce01d Fix travis build script 2016-08-23 14:24:10 +01:00
Amish Shah
ebfe3e2e62 Add travis yml 2016-08-23 14:17:03 +01:00
Amish Shah
355dd462d3 Update .travis.yml 2016-08-23 14:09:04 +01:00
Amish Shah
0916cd71a5 Change test script to ESLint 2016-08-23 14:06:10 +01:00
Amish Shah
576a7f2488 Add TextBasedChannel{full}.getMessages() 2016-08-23 13:52:01 +01:00
Amish Shah
d710713c09 Add GroupDMChannel support 2016-08-23 13:27:25 +01:00
Hyper-Coder
3a16f5147d Added message.reply (#529) 2016-08-23 02:12:46 +01:00
Amish Shah
50dcececfb Create example docs 2016-08-23 00:34:46 +01:00
Amish Shah
51a399d558 fix docs 2016-08-23 00:18:43 +01:00
Amish Shah
1deefbd8cd change maps to Collections 2016-08-23 00:17:44 +01:00
Amish Shah
725e0a8cfe Rebuild docs 2016-08-22 23:37:41 +01:00
Amish Shah
ce0d9a7272 Add message.mentions.channels 2016-08-22 23:37:17 +01:00
Amish Shah
2a1799f20f Move around mentions and stuff 2016-08-22 23:09:45 +01:00
Amish Shah
ddd3ea9727 Fixed Guild Role Delete Handling 2016-08-22 22:45:02 +01:00
Amish Shah
c96ecec24c Fix recipient resolution 2016-08-22 22:31:22 +01:00
Amish Shah
c308a2a01c Update docs for Client 2016-08-22 21:44:01 +01:00
Amish Shah
3fded1d7af Add Sharding Support! 2016-08-22 21:31:43 +01:00
Amish Shah
fb2392a1ed minor fixes to ClientUser.setStatus 2016-08-22 21:00:03 +01:00
Hyper-Coder
8fed1b1d80 Add setStatus function 2016-08-22 20:48:19 +01:00
Amish Shah
dd40b870d5 Add message.pinned 2016-08-22 20:46:56 +01:00
Amish Shah
357502e520 Fix user.status 2016-08-22 19:52:55 +01:00
Amish Shah
cf34f253cb Change message.mentions to a Map 2016-08-22 19:45:27 +01:00
Amish Shah
59cc02de89 Remove lastMessageID from voiceChannel 2016-08-22 19:29:02 +01:00
Amish Shah
6ad970e311 Removed unused dependencies 2016-08-22 19:25:19 +01:00
Amish Shah
df456589ab Fix requests getting locked up in queues 2016-08-22 19:15:08 +01:00
Amish Shah
89569d9249 fix docs yet again 2016-08-22 18:54:33 +01:00
Amish Shah
6986752578 Build docs 2016-08-22 18:49:13 +01:00
Amish Shah
c294a0fac4 Move example to right place 2016-08-22 18:48:31 +01:00
Amish Shah
85fd82818f Pass ESlint 2016-08-22 18:47:38 +01:00
Amish Shah
6f2caffd32 Add setting channel overwrites 2016-08-22 18:47:21 +01:00
Amish Shah
00505d099a change type of Client.options 2016-08-22 18:07:10 +01:00
Amish Shah
115850ad04 Fix channelMessage endpoint 2016-08-22 18:04:22 +01:00
Amish Shah
be7ed4077a Add custom file support to new docs 2016-08-22 17:03:36 +01:00
Amish Shah
601987ed01 Merged branch indev-rewrite-docs into indev-rewrite 2016-08-22 16:44:09 +01:00
Amish Shah
cbb74e11d1 version bump gen version 2016-08-22 14:57:13 +01:00
Amish Shah
196fdfc31b fix event docs 2016-08-22 14:55:04 +01:00
Amish Shah
f255094760 add params to events 2016-08-22 14:53:23 +01:00
Amish Shah
d66ac3fc39 Add param optional to docs 2016-08-22 10:53:53 +01:00
Amish Shah
4e53aa4a23 remove private from docs 2016-08-21 19:53:05 +01:00
Amish Shah
73b61b6b4e uncompress docs 2016-08-21 18:05:54 +01:00
Amish Shah
ac7c543dfe Fix doc gen 2016-08-21 17:47:16 +01:00
Amish Shah
985681f1f6 change doc gen 2016-08-21 17:26:38 +01:00
Amish Shah
30e6bbd7a4 docs 2016-08-20 16:19:37 +01:00
Amish Shah
c7df7a4744 build docs 2016-08-20 16:14:38 +01:00
Amish Shah
c5ab580562 fix docs 2016-08-20 16:09:06 +01:00
Amish Shah
24f3a36701 update doc gen 2016-08-20 16:06:00 +01:00
Amish Shah
2007ed7cef Allow the doc gen to understand events 2016-08-20 00:20:55 +01:00
Amish Shah
65350348a8 Document all the events 2016-08-20 00:15:09 +01:00
Amish Shah
f8b2629b18 Update doc gen version 2016-08-19 23:00:25 +01:00
Amish Shah
3051ae7061 Add constructor documentation 2016-08-19 22:59:52 +01:00
Amish Shah
d2cba74c13 Remove unused variable to pass ESLint test 2016-08-19 22:35:46 +01:00
Amish Shah
8d5d90e222 Remove all data stores! Move to maps 2016-08-19 22:35:03 +01:00
Amish Shah
82ab92ca2a Migrate most of the Client Data Store to Clien 2016-08-19 22:21:34 +01:00
Amish Shah
ad8b4c7698 Remove WebSocket datastore - move directly to WebSocketManager 2016-08-19 21:37:27 +01:00
Amish Shah
bd50e3c0a5 Remove VoiceChannel store and add members map 2016-08-19 21:29:07 +01:00
Amish Shah
4400eb1b5c Moved _cacheMessage to TextBasedChannel to avoid repeating code 2016-08-19 21:20:00 +01:00
Amish Shah
4f4ec3146b Store Channel Messages in Maps 2016-08-19 21:12:01 +01:00
Amish Shah
97e16e6eed Make SequentialRequestHandler private 2016-08-19 20:11:46 +01:00
Amish Shah
fb55b6dc60 Rebuild docs 2016-08-19 20:10:32 +01:00
Amish Shah
ed818d6e7f Remove GuildDataStore and move towards storing data in Maps 2016-08-19 19:58:37 +01:00
Amish Shah
75ff9fb096 Comply to the new Rate Limit Headers hammerandchisel/discord-api-docs#108 2016-08-19 19:03:10 +01:00
Amish Shah
c2e3d2b8ca Fix time differences (add 1 second) 2016-08-19 18:47:59 +01:00
Amish Shah
f012655e53 Add 429 handling back into Sequential Handler 2016-08-19 18:47:41 +01:00
Amish Shah
fd64fb0a82 Use Date headers to offset time differences to fix rate limiting 2016-08-19 18:28:47 +01:00
Amish Shah
00be14b5d1 Add options.api_request_method 2016-08-19 18:15:16 +01:00
Amish Shah
dcba580d89 Implement Sequential Rate Limiting 2016-08-19 18:01:28 +01:00
Amish Shah
392133f927 document websocketmanager 2016-08-19 14:14:30 +01:00
Amish Shah
dbe978d926 Finish DataResolver docs 2016-08-19 13:59:22 +01:00
Amish Shah
871c60c8dd fix client manager docs oops 2016-08-19 00:33:53 +01:00
Amish Shah
e0c987c1b2 add docs for ClientManager 2016-08-19 00:33:15 +01:00
Amish Shah
24df1bc621 test private methods 2016-08-19 00:17:14 +01:00
Amish Shah
a52b46fab4 Document private props in Client 2016-08-18 23:51:09 +01:00
Amish Shah
3c5a227ea0 Restructure typedef placement 2016-08-18 23:01:55 +01:00
Amish Shah
cc563f77c5 rename some stuff ¯\_(ツ)_/¯ 2016-08-18 22:02:32 +01:00
Amish Shah
2dfd01d56e Add new typedef parsing (for resolvables) 2016-08-18 21:44:12 +01:00
Amish Shah
863495cda0 add DMChannel docs 2016-08-18 18:57:24 +01:00
Amish Shah
3e3a411a42 fix docs 2016-08-18 18:51:35 +01:00
Amish Shah
976584a5bc New docs 2016-08-18 17:12:37 +01:00
Amish Shah
6f9f103821 Fix the URL link god damn it hydra 2016-08-18 16:09:23 +01:00
Amish Shah
21c4654705 Update getting started to include evie's tutorial 2016-08-18 16:07:56 +01:00
Amish Shah
839ff5ce43 Docs for permissionoverwrites 2016-08-18 13:33:06 +01:00
Amish Shah
3ac191a812 add (incomplete) docs for guildmember 2016-08-18 13:30:25 +01:00
Amish Shah
3d3766f129 do more docs 2016-08-18 13:22:36 +01:00
Amish Shah
0ac66287d7 Fix logo in README 2016-08-18 13:16:49 +01:00
Amish Shah
329839318d Fix logo in README.md 2016-08-18 13:16:00 +01:00
Amish Shah
be7b0fb5ca Fix blank methods for user and textchannel 2016-08-18 13:13:35 +01:00
Amish Shah
18299970bd Updated to docs format v3, adds support for interfaces 2016-08-18 13:07:45 +01:00
Amish Shah
4d4258b4e2 modify text/voice channels to show extensio from GuildChannel 2016-08-18 12:19:00 +01:00
Amish Shah
a5fd46d306 write MORE docs 2016-08-18 10:48:12 +01:00
Amish Shah
45f897fbe7 write some docs 2016-08-18 10:46:02 +01:00
Amish Shah
159233059e Make ServerChannel GuildChannel 2016-08-18 10:27:31 +01:00
Amish Shah
46e89f56c7 work on docs 2016-08-18 10:13:00 +01:00
Amish Shah
55630a38ac work on docs 2016-08-18 10:11:40 +01:00
Amish Shah
bca3cc7915 work on getting started 2016-08-18 00:16:51 +01:00
Amish Shah
22cdf0b258 fix docs 2016-08-18 00:12:16 +01:00
Amish Shah
c37191b582 Write some more docs 2016-08-17 23:46:58 +01:00
Amish Shah
562e3b119e Fix user docs 2016-08-17 20:33:17 +01:00
Amish Shah
19f8f8e122 Fix role.hasPermission docs 2016-08-17 20:08:41 +01:00
Amish Shah
238a6824ef Add documentation for Roles 2016-08-17 19:40:12 +01:00
Amish Shah
ab92be4209 Add a type to Message.id in docs 2016-08-17 19:22:18 +01:00
Amish Shah
79ea663afe Fix guild.createChannel docs 2016-08-17 19:18:39 +01:00
Amish Shah
614c488f96 work on docs 2016-08-17 19:15:33 +01:00
Amish Shah
9dc8265a93 work on guild docs 2016-08-17 17:06:37 +01:00
Amish Shah
2b7dd39f3e work on guild docs 2016-08-17 16:57:22 +01:00
Amish Shah
e7ef73ffdc work on guild docs 2016-08-17 16:33:53 +01:00
Amish Shah
e7e6355cfe work on guild docs 2016-08-17 16:28:31 +01:00
Amish Shah
13db0db298 updated client docs 2016-08-17 15:50:27 +01:00
Amish Shah
4fff20d66e update some docs 2016-08-16 23:22:52 +01:00
Amish Shah
eba3bd0291 Update documentation generator 2016-08-15 22:07:01 +01:00
Amish Shah
1ea53c18ac fix meta data for docs 2016-08-14 18:13:41 +01:00
Amish Shah
62856ff57a start work on documentation generator 2016-08-14 18:12:59 +01:00
Amish Shah
0224138dc9 crappy ratelimiting it doesnt work but its here ok 2016-08-13 22:22:24 +01:00
Amish Shah
0d44a801f2 add support for Bot auth in REST 2016-08-13 17:23:23 +01:00
Amish Shah
603e231494 Fix implicit permissions in roles 2016-08-13 17:04:49 +01:00
Amish Shah
b2950b2997 Fix DM Channels 2016-08-13 16:51:01 +01:00
Amish Shah
7ada70f856 update back to v6 (again) and start work patching the lib 2016-08-13 16:41:06 +01:00
Amish Shah
75e3ee86fb Add userLimit param to voice channel 2016-08-13 16:29:19 +01:00
Amish Shah
a2f8680514 Fix protocol versions 2016-08-13 16:23:24 +01:00
Amish Shah
c02d7808c1 go back to protocol 5 because the docs aren't ready for v6 ¯\_(ツ)_/¯ 2016-08-13 16:01:01 +01:00
Amish Shah
50af835774 Move to v6 protocol 2016-08-13 14:53:04 +01:00
Amish Shah
f2ccef1ce5 remove console.log in rest 2016-08-13 14:45:22 +01:00
Amish Shah
b8db4c4f4b ESLint stuff... 2016-08-13 14:44:49 +01:00
Amish Shah
53d767ec04 some doc stuff idk 2016-08-13 12:25:01 +01:00
Amish Shah
0d53afe3ce Added ability to edit a role 2016-07-03 16:27:04 +01:00
Amish Shah
3cd91a19aa Added role.delete() 2016-07-03 13:04:39 +01:00
Amish Shah
849b8df2da Added guild.createRole() 2016-07-02 21:28:49 +01:00
Amish Shah
bbf0b0683a Added guild.kick(member) and member.kick() 2016-07-02 17:50:44 +01:00
hydrabolt
fb49ad7d93 Fix Message Sending and Support New Features. The library now supports
all the game streaming and URL stuff and is fixed for roles #328

src/client/websocket/packets/handlers/PresenceUpdate.js
2016-05-07 15:35:42 +01:00
hydrabolt
bc443df11d Added DM support, DM Creation and DM Deletion 2016-05-03 17:50:33 +01:00
hydrabolt
ab17375248 Added GuildUpdate handling, and setting guilds details 2016-05-03 16:42:38 +01:00
hydrabolt
82ac3d1c44 Remove TODO list, now tracked by issue #313 2016-05-02 13:07:55 +01:00
hydrabolt
a0418a2551 update TODO list whoops 2016-05-01 21:14:23 +01:00
hydrabolt
ebfc2169d5 Added ClientUser modification support 2016-05-01 21:12:42 +01:00
hydrabolt
f95c588d87 Added Guild Deletion 2016-05-01 14:51:46 +01:00
hydrabolt
3a0426482e update TODO list 2016-04-30 18:27:34 +01:00
hydrabolt
90cf787759 I think I got ChannelUpdate working?? 2016-04-30 18:22:09 +01:00
hydrabolt
2341c83638 Added channel.delete() 2016-04-27 16:25:57 +01:00
hydrabolt
b436fac5c4 Fix presence update bug (#297) 2016-04-26 17:46:34 +01:00
hydrabolt
2d3116d505 Added guild.createChannel(name, type) 2016-04-26 17:44:42 +01:00
hydrabolt
e9d7dfaee3 Added message.edit(content) 2016-04-24 17:30:58 +01:00
hydrabolt
618d8bb957 Simplified client.rest.methods.DeleteMessage, now only takes a message instead of a channel and a message. 2016-04-24 16:41:23 +01:00
hydrabolt
1676a5e73f Bridged WebSocket Events and REST Requests. Now REST Requests will respond exactly like WS Events to data 2016-04-24 16:30:58 +01:00
hydrabolt
c42e303b7b Add Message Deletion via message.delete() 2016-04-21 18:50:46 +01:00
hydrabolt
a2841f285c Add TODO list 2016-04-21 18:40:26 +01:00
hydrabolt
03caddb4b5 Add Rate Limiting, see hammerandchisel/discord-api-docs#20 2016-04-21 18:24:08 +01:00
hydrabolt
f3e1760538 add channel.sendMessage and channel.sendTTSMessage 2016-04-21 17:42:52 +01:00
hydrabolt
b8283a8f29 src/client/websocket/packets/WebSocketPacketManager.js
Unify ready and reconnecting properties into a single status property
and future-proof Message class
The state of the WebSocketManager is now represented by a single
status property, removing emittedReady
and reconnecting as representations of state.
Message class will now also cache users it isn't aware of that appear
in mentions and authors.
2016-04-20 17:45:20 +01:00
hydrabolt
acc9c9bf12 src/client/websocket/packets/WebSocketPacketManager.js
src/structures/datastore/WebSocketManagerDataStore.js
Added "rough" reconnection attempting
The following however still needs to be done:
1) stop trying after a certain amount of time
2) increasing timeout between each timeout
3) re-evaluate the current method of how reconnecting is handled
internally
2016-04-19 20:24:23 +01:00
hydrabolt
da42b422f0 Added Permission evaluation for channels and EvaluatedPermissions class. 2016-04-18 19:31:36 +01:00
hydrabolt
00327a5776 Add MessageUpdate handling 2016-04-18 18:12:57 +01:00
hydrabolt
d437fd31cf MessageDelete handling 2016-04-18 18:06:31 +01:00
hydrabolt
c947e172d6 Add MessageCreate handler, set up Message class and add ability to Cache messages 2016-04-18 17:55:21 +01:00
hydrabolt
7f4751e7c4 add PermissionOverwrites class in preparation for permission evaluation 2016-04-18 17:23:37 +01:00
hydrabolt
c36cc3b551 Added GuildMembersChunk handler; untested 2016-04-18 16:54:14 +01:00
hydrabolt
ce2cf382b3 TypingStart handler 2016-04-18 16:39:57 +01:00
hydrabolt
d1d13f5c85 Added VoiceStateUpdate handler and DataStore for VoiceChannels. Also added toString methods to Guilds, DMChannels, ServerChannels and Users. 2016-04-17 19:12:29 +01:00
hydrabolt
685d7b622c Fix READY bug when logging in with email/password, add UserUpdate packet handler 2016-04-17 18:37:15 +01:00
hydrabolt
abc3f9e2fa Presence tracking 2016-04-17 18:20:57 +01:00
hydrabolt
71a4cd6a93 Added full Role tracking 2016-04-17 15:43:12 +01:00
hydrabolt
bbf7be7dfa Tracking of GUILD_ROLE_CREATE/UPDATE/DELETE events 2016-04-17 15:17:18 +01:00
hydrabolt
4de1f4ce99 Created Role class and permission evaluation within Roles 2016-04-17 15:03:23 +01:00
hydrabolt
30f5e2943a Create Member class, stop storing member data separately and merge into one class with a User 2016-04-16 23:24:52 +01:00
hydrabolt
ccffe09bca remove unused shim object.entries 2016-04-16 23:01:58 +01:00
hydrabolt
9956e43c8e initial 2016-04-16 22:58:49 +01:00
352 changed files with 21023 additions and 542387 deletions

View File

@@ -1 +0,0 @@
{}

View File

@@ -1,9 +0,0 @@
{
"env": {
"es6": true,
"node": true
},
"ecmaFeatures": {
"modules": true
}
}

150
.eslintrc.json Normal file
View File

@@ -0,0 +1,150 @@
{
"extends": "eslint:recommended",
"parserOptions": {
"ecmaVersion": 6
},
"env": {
"es6": true,
"node": true
},
"rules": {
"no-await-in-loop": "warn",
"no-compare-neg-zero": "error",
"no-extra-parens": ["warn", "all", {
"nestedBinaryExpressions": false
}],
"no-template-curly-in-string": "error",
"no-unsafe-negation": "error",
"valid-jsdoc": ["error", {
"requireReturn": false,
"requireReturnDescription": false,
"prefer": {
"return": "returns",
"arg": "param"
},
"preferType": {
"String": "string",
"Number": "number",
"Boolean": "boolean",
"Symbol": "symbol",
"object": "Object",
"function": "Function",
"array": "Array",
"date": "Date",
"error": "Error",
"null": "void"
}
}],
"accessor-pairs": "warn",
"array-callback-return": "error",
"complexity": "warn",
"consistent-return": "error",
"curly": ["error", "multi-line", "consistent"],
"dot-location": ["error", "property"],
"dot-notation": "error",
"eqeqeq": "error",
"no-empty-function": "error",
"no-floating-decimal": "error",
"no-implied-eval": "error",
"no-invalid-this": "error",
"no-lone-blocks": "error",
"no-multi-spaces": "error",
"no-new-func": "error",
"no-new-wrappers": "error",
"no-new": "error",
"no-octal-escape": "error",
"no-return-assign": "error",
"no-return-await": "error",
"no-self-compare": "error",
"no-sequences": "error",
"no-throw-literal": "error",
"no-unmodified-loop-condition": "error",
"no-unused-expressions": "error",
"no-useless-call": "error",
"no-useless-concat": "error",
"no-useless-escape": "error",
"no-useless-return": "error",
"no-void": "error",
"no-warning-comments": "warn",
"prefer-promise-reject-errors": "error",
"require-await": "warn",
"wrap-iife": "error",
"yoda": "error",
"no-label-var": "error",
"no-shadow": "error",
"no-undef-init": "error",
"callback-return": "error",
"handle-callback-err": "error",
"no-mixed-requires": "error",
"no-new-require": "error",
"no-path-concat": "error",
"array-bracket-spacing": "error",
"block-spacing": "error",
"brace-style": ["error", "1tbs", { "allowSingleLine": true }],
"capitalized-comments": ["error", "always", { "ignoreConsecutiveComments": true }],
"comma-dangle": ["error", "always-multiline"],
"comma-spacing": "error",
"comma-style": "error",
"computed-property-spacing": "error",
"consistent-this": ["error", "$this"],
"eol-last": "error",
"func-names": "error",
"func-name-matching": "error",
"func-style": ["error", "declaration", { "allowArrowFunctions": true }],
"indent": ["error", 2, { "SwitchCase": 1 }],
"key-spacing": "error",
"keyword-spacing": "error",
"max-depth": "error",
"max-len": ["error", 120, 2],
"max-nested-callbacks": ["error", { "max": 4 }],
"max-statements-per-line": ["error", { "max": 2 }],
"new-cap": "off",
"newline-per-chained-call": ["error", { "ignoreChainWithDepth": 3 }],
"no-array-constructor": "error",
"no-inline-comments": "error",
"no-lonely-if": "error",
"no-mixed-operators": "error",
"no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 1, "maxBOF": 0 }],
"no-new-object": "error",
"no-spaced-func": "error",
"no-trailing-spaces": "error",
"no-unneeded-ternary": "error",
"no-whitespace-before-property": "error",
"nonblock-statement-body-position": "error",
"object-curly-spacing": ["error", "always"],
"operator-assignment": "error",
"operator-linebreak": ["error", "after"],
"padded-blocks": ["error", "never"],
"quote-props": ["error", "as-needed"],
"quotes": ["error", "single", { "avoidEscape": true, "allowTemplateLiterals": true }],
"semi-spacing": "error",
"semi": "error",
"space-before-blocks": "error",
"space-before-function-paren": ["error", "never"],
"space-in-parens": "error",
"space-infix-ops": "error",
"space-unary-ops": "error",
"spaced-comment": "error",
"template-tag-spacing": "error",
"unicode-bom": "error",
"arrow-body-style": "error",
"arrow-parens": ["error", "as-needed"],
"arrow-spacing": "error",
"no-duplicate-imports": "error",
"no-useless-computed-key": "error",
"no-useless-constructor": "error",
"prefer-arrow-callback": "error",
"prefer-numeric-literals": "error",
"prefer-rest-params": "error",
"prefer-spread": "error",
"prefer-template": "error",
"rest-spread-spacing": "error",
"template-curly-spacing": "error",
"yield-star-spacing": "error"
}
}

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
* text=auto eol=lf

17
.github/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1,17 @@
# Contributing
**The issue tracker is only for bug reports and enhancement suggestions. If you have a question, please ask it in the [Discord server](https://discord.gg/bRCvFy9) instead of opening an issue you will get redirected there anyway.**
If you wish to contribute to the discord.js codebase or documentation, feel free to fork the repository and submit a
pull request. We use ESLint to enforce a consistent coding style, so having that set up in your editor of choice
is a great boon to your development process.
## Setup
To get ready to work on the codebase, please do the following:
1. Fork & clone the repository, and make sure you're on the **master** branch
2. Run `npm install`
3. If you're working on voice, also run `npm install node-opus` or `npm install opusscript`
4. Code your heart out!
5. Run `npm test` to run ESLint and ensure any JSDoc changes are valid
6. [Submit a pull request](https://github.com/discordjs/discord.js/compare)

26
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,26 @@
<!--
If you need help with discord.js installation or usage, please go to the discord.js Discord server instead:
https://discord.gg/bRCvFy9
This issue tracker is only for bug reports and enhancement suggestions. You won't receive any basic help here.
-->
**Please describe the problem you are having in as much detail as possible:**
**Include a reproducible code sample here, if possible:**
```js
```
**Further details:**
- discord.js version:
- node.js version:
- Operating system:
- Priority this issue should have please be realistic and elaborate if possible:
<!--
Ideally you would also test whether the issue occurs on the latest master branch commit.
If you have, please check the following box and insert the hash of the commit you tested:
-->
- [ ] I have also tested the issue on latest master, commit hash:

7
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,7 @@
**Please describe the changes this PR makes and why it should be merged:**
**Semantic versioning classification:**
- [ ] This PR changes the library's interface (methods or parameters added)
- [ ] This PR includes breaking changes (methods removed or renamed, parameters moved or removed)
- [ ] This PR **only** includes non-code changes, like changes to documentation, README, etc.

53
.gitignore vendored
View File

@@ -1,40 +1,21 @@
# Created by https://www.gitignore.io
# Packages
node_modules/
yarn.lock
hydrabot/config.json
hydrabot/authority.json
hydrabot/tokencache.json
esdoc/
.tmp/
### Node ###
# Logs
logs
# Log files
logs/
*.log
# Runtime data
pids
*.pid
*.seed
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directory
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
node_modules
# Authentication
test/auth.json
examples/auth.json
docs/_build
test/auth.js
docs/deploy/deploy_key
docs/deploy/deploy_key.pub
deploy/deploy_key
deploy/deploy_key.pub
# Miscellaneous
.tmp/
.vscode/
docs/docs.json
webpack/

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "typings"]
path = typings
url = https://github.com/discordjs/discord.js-typings

View File

@@ -1,7 +1,26 @@
# Packages
node_modules/
yarn.lock
# Log files
logs/
*.log
# Authentication
deploy/
# Miscellaneous
.tmp/
.vscode/
docs/
examples/
web-dist/
src/
webpack/
# NPM ignore
.eslintrc.json
.gitattributes
.gitignore
.travis.yml
TODO.md
webpack.config.js
.github/
test/

1
.npmrc Normal file
View File

@@ -0,0 +1 @@
package-json=false

21
.tern-project Normal file
View File

@@ -0,0 +1,21 @@
{
"ecmaVersion": 7,
"libs": [],
"loadEagerly": [
"./src/*.js"
],
"dontLoad": [
"node_modules/**"
],
"plugins": {
"es_modules": {},
"node": {},
"doc_comment": {
"fullDocs": true,
"strong": true
},
"webpack": {
"configPath": "./webpack.config.js",
}
}
}

View File

@@ -1,13 +1,20 @@
language: node_js
node_js:
- stable
- "6"
- "7"
cache:
directories:
- node_modules
branches:
only:
- master
- indev
before_install: npm install -g grunt-cli eslint
install: npm install
before_script: grunt --dev
script: bash ./deploy/test.sh
jobs:
include:
- stage: build
node_js: "6"
script: bash ./deploy/deploy.sh
env:
global:
- ENCRYPTION_LABEL: "af862fa96d3e"
- COMMIT_AUTHOR_EMAIL: "amishshah.2k@gmail.com"
dist: trusty
sudo: false

30
.vscode/launch.json vendored
View File

@@ -1,30 +0,0 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "node",
"request": "launch",
"program": "./entrypoint.js",
"stopOnEntry": false,
"args": [],
"cwd": ".",
"runtimeExecutable": null,
"runtimeArgs": [
"--nolazy"
],
"env": {
"NODE_ENV": "development"
},
"externalConsole": false,
"sourceMaps": false,
"outDir": null
},
{
"name": "Attach",
"type": "node",
"request": "attach",
"port": 5858
}
]
}

View File

@@ -1,6 +0,0 @@
// Place your settings in this file to overwrite default and user settings.
{
"editor.wrappingColumn": 0,
"editor.formatOnType": true,
"files.trimTrailingWhitespace": true
}

220
.vscode/tasks.json vendored
View File

@@ -1,220 +0,0 @@
// Available variables which can be used inside of strings.
// ${workspaceRoot}: the root folder of the team
// ${file}: the current opened file
// ${fileBasename}: the current opened file's basename
// ${fileDirname}: the current opened file's dirname
// ${fileExtname}: the current opened file's extension
// ${cwd}: the current working directory of the spawned process
// A task runner that calls the Typescript compiler (tsc) and
// Compiles a HelloWorld.ts program
{
"version": "0.1.0",
"command" : "babel",
"isShellCommand": true,
"tasks": [
{
"taskName": "watch",
"suppressTaskName": true,
"isBuildCommand": true,
"isWatching": true,
"args": [
"src", "--out-dir", "lib", "-w", "--loose=all"
]
}
]
}
// A task runner that calls the Typescript compiler (tsc) and
// compiles based on a tsconfig.json file that is present in
// the root of the folder open in VSCode
/*
{
"version": "0.1.0",
// The command is tsc. Assumes that tsc has been installed using npm install -g typescript
"command": "tsc",
// The command is a shell script
"isShellCommand": true,
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Tell the tsc compiler to use the tsconfig.json from the open folder.
"args": ["-p", "."],
// use the standard tsc problem matcher to find compile problems
// in the output.
"problemMatcher": "$tsc"
}
*/
// A task runner configuration for gulp. Gulp provides a less task
// which compiles less to css.
/*
{
"version": "0.1.0",
"command": "gulp",
"isShellCommand": true,
"tasks": [
{
"taskName": "less",
// Make this the default build command.
"isBuildCommand": true,
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Use the standard less compilation problem matcher.
"problemMatcher": "$lessCompile"
}
]
}
*/
// Uncomment the following section to use gulp in a watching mode that compiles a
// less file. The gulp task prints "[hh:mm:ss] Starting 'clean-styles'" to the console
// when existing css files get deleted and "[hh:mm:ss] Finished 'styles'" when the
// overall less compilation has finished. When the clean pattern is detect internal less
// problems are cleaned. When the finshed pattern is detected in the output less
// problems are published.
/*
{
"version": "0.1.0",
"command": "gulp",
"isShellCommand": true,
"tasks": [
{
"taskName": "watch-less",
// Make this the default build command.
"isBuildCommand": true,
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Task is running in watching mode.
"isWatching": true,
"problemMatcher": {
// Use the standard less compilation problem matcher as the base.
"base": "$lessCompile",
// A regular expression signalling that a watched task begins executing (usually triggered through file watching).
"watchedTaskBeginsRegExp": "^\\[\\d+:\\d+:\\d+\\] Starting 'clean-styles'\\.\\.\\.$",
// A regular expression signalling that a watched tasks ends executing.
"watchedTaskEndsRegExp": "^\\[\\d+:\\d+:\\d+\\] Finished 'styles' after \\d+"
}
}
]
}
*/
// Uncomment the following section to use jake to build a workspace
// cloned from https://github.com/Microsoft/TypeScript.git
/*
{
"version": "0.1.0",
// Task runner is jake
"command": "jake",
// Need to be executed in shell / cmd
"isShellCommand": true,
"showOutput": "silent",
"tasks": [
{
// TS build command is local.
"taskName": "local",
// Make this the default build command.
"isBuildCommand": true,
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Use the redefined Typescript output problem matcher.
"problemMatcher": [
"$tsc"
]
}
]
}
*/
// Uncomment the section below to use msbuild and generate problems
// for csc, cpp, tsc and vb. The configuration assumes that msbuild
// is available on the path and a solution file exists in the
// workspace folder root.
/*
{
"version": "0.1.0",
"command": "msbuild",
"args": [
// Ask msbuild to generate full paths for file names.
"/property:GenerateFullPaths=true"
],
"taskSelector": "/t:",
"showOutput": "silent",
"tasks": [
{
"taskName": "build",
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Use the standard MS compiler pattern to detect errors, warnings
// and infos in the output.
"problemMatcher": "$msCompile"
}
]
}
*/
// Uncomment the following section to use msbuild which compiles Typescript
// and less files.
/*
{
"version": "0.1.0",
"command": "msbuild",
"args": [
// Ask msbuild to generate full paths for file names.
"/property:GenerateFullPaths=true"
],
"taskSelector": "/t:",
"showOutput": "silent",
"tasks": [
{
"taskName": "build",
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Use the standard MS compiler pattern to detect errors, warnings
// and infos in the output.
"problemMatcher": [
"$msCompile",
"$lessCompile"
]
}
]
}
*/
// A task runner example that defines a problemMatcher inline instead of using
// a predfined one.
/*
{
"version": "0.1.0",
"command": "tsc",
"isShellCommand": true,
"args": ["HelloWorld.ts"],
"showOutput": "silent",
"problemMatcher": {
// The problem is owned by the typescript language service. Ensure that the problems
// are merged with problems produced by Visual Studio's language service.
"owner": "typescript",
// The file name for reported problems is relative to the current working directory.
"fileLocation": ["relative", "${cwd}"],
// The actual pattern to match problems in the output.
"pattern": {
// The regular expression. Matches HelloWorld.ts(2,10): error TS2339: Property 'logg' does not exist on type 'Console'.
"regexp": "^([^\\s].*)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\):\\s+(error|warning|info)\\s+(TS\\d+)\\s*:\\s*(.*)$",
// The match group that denotes the file containing the problem.
"file": 1,
// The match group that denotes the problem location.
"location": 2,
// The match group that denotes the problem's severity. Can be omitted.
"severity": 3,
// The match group that denotes the problem code. Can be omitted.
"code": 4,
// The match group that denotes the problem's message.
"message": 5
}
}
}
*/

View File

@@ -1,7 +0,0 @@
### Contributing
We welcome contributions, but we ask that you follow a few simple guidelines
1. Please check the indev branch to make sure the issue hasn't already been patched.
2. If the issue hasn't been patched, edit the files in the **src folder**
3. Prior to making the PR, build the lib files by running `grunt --dev`

14
LICENSE
View File

@@ -175,18 +175,7 @@
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Copyright 2017 Amish Shah
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -199,4 +188,3 @@
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

132
README.md
View File

@@ -1,77 +1,87 @@
<p align="center">
<a href="https://hydrabolt.github.io/discord.js">
<img alt="discord.js" src="http://hydrabolt.github.io/discord.js/res/logo.png" width="546">
</a>
</p>
<div align="center">
<br />
<p>
<a href="https://discord.js.org"><img src="https://discord.js.org/static/logo.svg" width="546" alt="discord.js" /></a>
</p>
<br />
<p>
<a href="https://discord.gg/bRCvFy9"><img src="https://discordapp.com/api/guilds/222078108977594368/embed.png" alt="Discord server" /></a>
<a href="https://www.npmjs.com/package/discord.js"><img src="https://img.shields.io/npm/v/discord.js.svg?maxAge=3600" alt="NPM version" /></a>
<a href="https://www.npmjs.com/package/discord.js"><img src="https://img.shields.io/npm/dt/discord.js.svg?maxAge=3600" alt="NPM downloads" /></a>
<a href="https://travis-ci.org/discordjs/discord.js"><img src="https://travis-ci.org/discordjs/discord.js.svg" alt="Build status" /></a>
<a href="https://david-dm.org/discordjs/discord.js"><img src="https://img.shields.io/david/discordjs/discord.js.svg?maxAge=3600" alt="Dependencies" /></a>
</p>
<p>
<a href="https://nodei.co/npm/discord.js/"><img src="https://nodei.co/npm/discord.js.png?downloads=true&stars=true" alt="NPM info" /></a>
</p>
</div>
[![Build Status](https://travis-ci.org/hydrabolt/discord.js.svg)](https://travis-ci.org/hydrabolt/discord.js) [![Documentation Status](https://readthedocs.org/projects/discordjs/badge/?version=latest)](http://discordjs.readthedocs.org/en/latest/?badge=latest)
## About
discord.js is a powerful [node.js](https://nodejs.org) module that allows you to interact with the
[Discord API](https://discordapp.com/developers/docs/intro) very easily.
[![NPM](https://nodei.co/npm/discord.js.png?downloads=true&stars=true)](https://nodei.co/npm/discord.js/)
- Object-oriented
- Predictable abstractions
- Performant
- 100% coverage of the Discord API
## Installation
**Node.js 6.0.0 or newer is required.**
Ignore any warnings about unmet peer dependencies, as they're all optional.
discord.js is a node module used as a way of interfacing with [Discord](https://discordapp.com/). It is a very useful module for creating bots.
Without voice support: `npm install discord.js`
With voice support ([node-opus](https://www.npmjs.com/package/node-opus)): `npm install discord.js node-opus`
With voice support ([opusscript](https://www.npmjs.com/package/opusscript)): `npm install discord.js opusscript`
### Installation
### Audio engines
The preferred audio engine is node-opus, as it performs significantly better than opusscript. When both are available, discord.js will automatically choose node-opus.
Using opusscript is only recommended for development environments where node-opus is tough to get working.
For production bots, using node-opus should be considered a necessity, especially if they're going to be running on multiple servers.
**Requires node 0.12+**
### Optional packages
- [bufferutil](https://www.npmjs.com/package/bufferutil) to greatly speed up the WebSocket when *not* using uws (`npm install bufferutil`)
- [erlpack](https://github.com/hammerandchisel/erlpack) for significantly faster WebSocket data (de)serialisation (`npm install hammerandchisel/erlpack`)
- One of the following packages can be installed for faster voice packet encryption and decryption:
- [sodium](https://www.npmjs.com/package/sodium) (`npm install sodium`)
- [libsodium.js](https://www.npmjs.com/package/libsodium-wrappers) (`npm install libsodium-wrappers`)
- [uws](https://www.npmjs.com/package/uws) for a much faster WebSocket connection (`npm install uws`)
`npm install --save discord.js`
If you don't need voice support:
`npm install --save --no-optional discord.js`
---
### Example: ping-pong
## Example usage
```js
var Discord = require("discord.js");
const Discord = require('discord.js');
const client = new Discord.Client();
var mybot = new Discord.Client();
mybot.on("message", function(message) {
if(message.content === "ping") {
mybot.reply(message, "pong");
}
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
mybot.loginWithToken("token");
// If you still need to login with email and password, use mybot.login("email", "password");
client.on('message', msg => {
if (msg.content === 'ping') {
msg.reply('pong');
}
});
client.login('token');
```
---
### Contributing
## Links
* [Website](https://discord.js.org/) ([source](https://github.com/discordjs/website))
* [Documentation](https://discord.js.org/#/docs)
* [Guide](https://discordjs.guide/) ([source](https://github.com/discordjs/guide))
* [Discord.js Discord server](https://discord.gg/bRCvFy9)
* [Discord API Discord server](https://discord.gg/discord-api)
* [GitHub](https://github.com/discordjs/discord.js)
* [NPM](https://www.npmjs.com/package/discord.js)
* [Related libraries](https://discordapi.com/unofficial/libs.html)
Feel free to contribute! Just clone the repo and edit the files in the **src folder, not the lib folder.**
### Extensions
* [RPC](https://www.npmjs.com/package/discord-rpc) ([source](https://github.com/discordjs/RPC))
Whenever you come to making a pull request, make sure it's to the *indev* branch and that you have built the lib files by running `grunt --dev`
## Contributing
Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the
[documentation](https://discord.js.org/#/docs).
See [the contribution guide](https://github.com/discordjs/discord.js/blob/master/.github/CONTRIBUTING.md) if you'd like to submit a PR.
---
### Related Projects
A list of other Discord API libraries [can be found here](https://discordapi.com/unofficial/libs.html)
---
### Links
**[Documentation](http://discordjs.readthedocs.org/en/latest/)**
**[GitHub](https://github.com/discord-js/discord.js)**
**[Wiki](https://github.com/discord-js/discord.js/wiki)**
**[Website](http://hydrabolt.github.io/discord.js/)**
**[NPM](http://npmjs.com/package/discord.js)**
---
### Contact
If you have an issue or want to know if a feature exists, [read the documentation](http://discordjs.readthedocs.org/en/latest/) before contacting me about any issues! If it's badly/wrongly implemented, let me know!
If you would like to contact me, you can create an issue on the GitHub repo, e-mail me via the one available on my NPM profile.
Alternatively, you could just send a DM to **hydrabolt** in [**Discord API**](https://discord.gg/0SBTUU1wZTYd2XyW).
## Help
If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle
nudge in the right direction, please don't hesitate to join our official [Discord.js Server](https://discord.gg/bRCvFy9).

View File

@@ -1,8 +0,0 @@
# Things yet to be implemented:
* Unbanning
* Re-ordering of roles (no effect, just aesthetics)
* Normalising attachments and embeds of messages
* Normalising parameter types
* More Documentation
* Voice Chat

9
browser.js Normal file
View File

@@ -0,0 +1,9 @@
const browser = typeof window !== 'undefined';
const webpack = !!process.env.__DISCORD_WEBPACK__;
const Discord = require('./');
module.exports = Discord;
if (browser && webpack) window.Discord = Discord; // eslint-disable-line no-undef
// eslint-disable-next-line no-console
else if (!browser) console.warn('Warning: Attempting to use browser version of Discord.js in a non-browser environment!');

BIN
deploy/deploy-key.enc Normal file

Binary file not shown.

90
deploy/deploy.sh Normal file
View File

@@ -0,0 +1,90 @@
#!/bin/bash
# Adapted from https://gist.github.com/domenic/ec8b0fc8ab45f39403dd.
set -e
function build {
npm run docs
VERSIONED=false npm run webpack
}
# For revert branches, do nothing
if [[ "$TRAVIS_BRANCH" == revert-* ]]; then
echo -e "\e[36m\e[1mBuild triggered for reversion branch \"${TRAVIS_BRANCH}\" - doing nothing."
exit 0
fi
# For PRs, do nothing
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
echo -e "\e[36m\e[1mBuild triggered for PR #${TRAVIS_PULL_REQUEST} to branch \"${TRAVIS_BRANCH}\" - doing nothing."
exit 0
fi
# Figure out the source of the build
if [ -n "$TRAVIS_TAG" ]; then
echo -e "\e[36m\e[1mBuild triggered for tag \"${TRAVIS_TAG}\"."
SOURCE=$TRAVIS_TAG
SOURCE_TYPE="tag"
else
echo -e "\e[36m\e[1mBuild triggered for branch \"${TRAVIS_BRANCH}\"."
SOURCE=$TRAVIS_BRANCH
SOURCE_TYPE="branch"
fi
# For Node != 6, do nothing
if [ "$TRAVIS_NODE_VERSION" != "6" ]; then
echo -e "\e[36m\e[1mBuild triggered with Node v${TRAVIS_NODE_VERSION} - doing nothing."
exit 0
fi
build
# Initialise some useful variables
REPO=`git config remote.origin.url`
SSH_REPO=${REPO/https:\/\/github.com\//git@github.com:}
SHA=`git rev-parse --verify HEAD`
# Decrypt and add the ssh key
ENCRYPTED_KEY_VAR="encrypted_${ENCRYPTION_LABEL}_key"
ENCRYPTED_IV_VAR="encrypted_${ENCRYPTION_LABEL}_iv"
ENCRYPTED_KEY=${!ENCRYPTED_KEY_VAR}
ENCRYPTED_IV=${!ENCRYPTED_IV_VAR}
openssl aes-256-cbc -K $ENCRYPTED_KEY -iv $ENCRYPTED_IV -in deploy/deploy-key.enc -out deploy-key -d
chmod 600 deploy-key
eval `ssh-agent -s`
ssh-add deploy-key
# Checkout the repo in the target branch so we can build docs and push to it
TARGET_BRANCH="docs"
git clone $REPO out -b $TARGET_BRANCH
# Move the generated JSON file to the newly-checked-out repo, to be committed and pushed
mv docs/docs.json out/$SOURCE.json
# Commit and push
cd out
git add .
git config user.name "Travis CI"
git config user.email "$COMMIT_AUTHOR_EMAIL"
git commit -m "Docs build for ${SOURCE_TYPE} ${SOURCE}: ${SHA}" || true
git push $SSH_REPO $TARGET_BRANCH
# Clean up...
cd ..
rm -rf out
# ...then do the same once more for the webpack
TARGET_BRANCH="webpack"
git clone $REPO out -b $TARGET_BRANCH
# Move the generated webpack over
mv webpack/discord.js out/discord.$SOURCE.js
mv webpack/discord.min.js out/discord.$SOURCE.min.js
# Commit and push
cd out
git add .
git config user.name "Travis CI"
git config user.email "$COMMIT_AUTHOR_EMAIL"
git commit -m "Webpack build for ${SOURCE_TYPE} ${SOURCE}: ${SHA}" || true
git push $SSH_REPO $TARGET_BRANCH

34
deploy/test.sh Normal file
View File

@@ -0,0 +1,34 @@
#!/bin/bash
set -e
function tests {
npm run lint
npm run docs:test
exit 0
}
# For revert branches, do nothing
if [[ "$TRAVIS_BRANCH" == revert-* ]]; then
echo -e "\e[36m\e[1mTest triggered for reversion branch \"${TRAVIS_BRANCH}\" - doing nothing."
exit 0
fi
# For PRs
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
echo -e "\e[36m\e[1mTest triggered for PR #${TRAVIS_PULL_REQUEST} to branch \"${TRAVIS_BRANCH}\" - only running tests."
tests
fi
# Figure out the source of the test
if [ -n "$TRAVIS_TAG" ]; then
echo -e "\e[36m\e[1mTest triggered for tag \"${TRAVIS_TAG}\"."
else
echo -e "\e[36m\e[1mTest triggered for branch \"${TRAVIS_BRANCH}\"."
fi
# For Node != 6
if [ "$TRAVIS_NODE_VERSION" != "6" ]; then
echo -e "\e[36m\e[1mTest triggered with Node v${TRAVIS_NODE_VERSION} - only running tests."
tests
fi

View File

@@ -1,192 +0,0 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = _build
# User-friendly check for sphinx-build
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
endif
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " applehelp to make an Apple Help Book"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " coverage to run coverage check of the documentation (if enabled)"
clean:
rm -rf $(BUILDDIR)/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/discordjs.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/discordjs.qhc"
applehelp:
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
@echo
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
@echo "N.B. You won't be able to view it unless you put it in" \
"~/Library/Documentation/Help or install it in your application" \
"bundle."
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/discordjs"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/discordjs"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
coverage:
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
@echo "Testing of coverage in the sources finished, look at the " \
"results in $(BUILDDIR)/coverage/python.txt."
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."

1
docs/README.md Normal file
View File

@@ -0,0 +1 @@
## [View the documentation here.](https://discord.js.org/#/docs)

View File

@@ -1,292 +0,0 @@
# -*- coding: utf-8 -*-
#
# discord.js documentation build configuration file, created by
# sphinx-quickstart on Fri Sep 25 17:25:49 2015.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys
import os
import shlex
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = []
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
# source_suffix = ['.rst', '.md']
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'discord.js'
copyright = u'2015-2016, hydrabolt'
author = u'hydrabolt'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '8.0.0'
# The full version, including alpha/beta/rc tags.
release = '8.0.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ['_build']
# The reST default role (used for this markup: `text`) to use for all
# documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# If true, keep warnings as "system message" paragraphs in the built documents.
#keep_warnings = False
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = False
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'default'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
#html_static_path = ['_static']
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
#html_extra_path = []
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Language to be used for generating the HTML full-text search index.
# Sphinx supports the following languages:
# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr'
#html_search_language = 'en'
# A dictionary with options for the search language support, empty by default.
# Now only 'ja' uses this config value
#html_search_options = {'type': 'default'}
# The name of a javascript file (relative to the configuration directory) that
# implements a search results scorer. If empty, the default will be used.
#html_search_scorer = 'scorer.js'
# Output file base name for HTML help builder.
htmlhelp_basename = 'discordjsdoc'
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#'preamble': '',
# Latex figure (float) alignment
#'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'discordjs.tex', u'discord.js Documentation',
u'hydrabolt', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'discordjs', u'discord.js Documentation',
[author], 1)
]
# If true, show URL addresses after external links.
#man_show_urls = False
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'discordjs', u'discord.js Documentation',
author, 'discordjs', 'One line description of project.',
'Miscellaneous'),
]
# Documents to append as an appendix to all manuals.
#texinfo_appendices = []
# If false, no module index is generated.
#texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'
# If true, do not generate a @detailmenu in the "Top" node's menu.
#texinfo_no_detailmenu = False
if not os.environ.get('READTHEDOCS', None) == 'True':
try:
import sphinx_rtd_theme
html_theme = 'sphinx_rtd_theme'
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
except ImportError:
print("sphinx_rtd_theme not found! Do 'pip install sphinx_rtd_theme' to make local builds use the RTD theme.")

View File

@@ -1,61 +0,0 @@
.. include:: ./vars.rst
Cache
=====
**extends Array**
A Cache object extends an Array (so it can be used like a regular array) but introduces helper functions to make it more useful when developing with discord.js. Unlike a regular array, it doesn't care about the instance or prototype of an object, it works purely on properties.
**Examples:**
.. code-block:: js
client.users.get("id", 11238414);
client.channels.getAll("name", "general");
--------
Functions
---------
get(key, value)
~~~~~~~~~~~~~~~
Returns a contained object where ``object[key] == value``. Also works if value is a regex or a function. Returns the first object found that matches the criteria.
get(value)
~~~~~~~~~~
Returns a contained object where ``object["id"] == value``. Shorthand for ``get("id", value)``. Returns ``null`` if ID is not found.
getAll(key, value)
~~~~~~~~~~~~~~~~~~
Similar to ``cache.get(key, value)``, but returns a Cache of any objects that meet the criteria.
has(key, value)
~~~~~~~~~~~~~~~
Returns `true` if there is an object that meets the condition ``object[key] == value`` in the cache
add(data)
~~~~~~~~~
Adds an object to the Cache as long as all the other objects in the cache don't have the same ID as it.
update(old, data)
~~~~~~~~~~~~~~~~~
Updates an old object in the Cache (if it exists) with the new one.
remove(data)
~~~~~~~~~~~~
Removes an object from the cache if it exists.
random()
~~~~~~~~~~~~
Get a random object from the cache.

View File

@@ -1,43 +0,0 @@
.. include:: ./vars.rst
Channel
=======
**extends** Equality_
The Channel class is the base class for all types of channel.
--------
Attributes
----------
id
~~
The ID of the channel, a `String`.
client
~~~~~~
The Client_ that cached the channel.
isPrivate
~~~~~~~~~
Indicates whether the channel is PM channel, is `Boolean`.
createdAt
~~~~~~~~~
A `Date` referring to when the channel was created.
--------
Functions
---------
delete()
~~~~~~~~~~~~~~~
Deletes the channel.

View File

@@ -1,42 +0,0 @@
.. include:: ./vars.rst
ChannelPermissions
==================
ChannelPermissions is used to represent the final permissions of a user in a channel, to see exactly what they are and aren't allowed to do.
**Examples:**
.. code-block:: js
var user_permissions = channel.permissionsOf(user);
var can_mention_everyone = user_permissions.hasPermission("mentionEveryone");
--------
Functions
---------
serialize()
~~~~~~~~~~~
**Aliases:** `serialise`
Returns an object containing permission names and values. E.g:
.. code-block:: js
{
createInstantInvite : true,
kickMembers : false
}
For more on valid permission names, see `Permission Constants`_.
hasPermission(permission)
~~~~~~~~~~~~~~~~~~~~~~~~~
Sees whether the user has the permission given.
- **permission** - See `Permission Constants`_ for valid permission names.

File diff suppressed because it is too large Load Diff

View File

@@ -1,26 +0,0 @@
.. include:: ./vars.rst
Equality
========
The Equality class is used to see if two objects are equal, based on ``object_1.id === object_2.id``.
If any class in Discord extends equality, it means you should never the default equality operands (``==`` & ``===``) as they could potentially be different instances and therefore appear not to be equal. Instead, use ``equalityObject.equals()`` as shown below.
.. code-block:: js
object1.equals(object2); // GOOD ✓
object1 == object2; // BAD ✖
--------
Functions
---------
equals(object)
~~~~~~~~~~~~~~
Returns true if the specified object is the same as this one.
- **object** - Any `object` with an ``id`` property.

View File

@@ -1,91 +0,0 @@
.. include:: ./vars.rst
Invite
======
Used to represent data of an invite.
--------
Attributes
----------
maxAge
~~~~~~
`Number`, how long (in seconds) the invite has since creation before expiring.
code
~~~~
`String`, the invite code.
server
~~~~~~
The Server_ the invite is for.
channel
~~~~~~~
The ServerChannel_ the invite is for.
revoked
~~~~~~~
`Boolean`, whether the invite has been revoked or not.
createdAt
~~~~~~~~~
`Number`, timestamp of when the invite was created.
temporary
~~~~~~~~~
`Boolean`, whether the invite is temporary or not.
uses
~~~~
`Number`, uses of the invite remaining.
maxUses
~~~~~~~
`Number`, maximum uses of the invite.
inviter
~~~~~~~
User_ who sent/created the invite.
xkcd
~~~~
`Boolean`, whether the invite is intended to be easy to read and remember by a human.
--------
Functions
---------
toString()
~~~~~~~~~~
Returns the invite URL.
delete(`callback`)
~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.deleteInvite(invite, callback)``
| **See** client.deleteInvite_
join(`callback`)
~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.joinServer(invite, callback)``
| **See** client.joinServer_
.. _client.deleteInvite : ./docs_client.html#deleteinvite-invite-callback
.. _client.joinServer : ./docs_client.html#joinserver-invite-callback

View File

@@ -1,149 +0,0 @@
.. include:: ./vars.rst
Message
=======
**extends** Equality_
A Message object is used to represent the data of a message.
--------
Attributes
----------
channel
~~~~~~~
The channel the message was sent in, either a TextChannel_ or PMChannel_.
server
~~~~~~~
The Server_ the message was sent in. Will be undefined if the message was sent in a PMChannel_.
client
~~~~~~
The Client_ that cached the message.
attachments
~~~~~~~~~~~
A raw array of attachment objects.
tts
~~~
`Boolean`, true if the message was text-to-speech.
embeds
~~~~~~
A raw array of embed objects.
timestamp
~~~~~~~~~
`Number`, timestamp of when the message was sent.
everyoneMentioned
~~~~~~~~~~~~~~~~~
`Boolean`, true if ``@everyone`` was mentioned.
id
~~
`String`, ID of the message.
editedTimestamp
~~~~~~~~~~~~~~~
Timestamp on when the message was last edited, `Number`. Potentially null.
author
~~~~~~
**Alias:** `sender`
The User_ that sent the message.
content
~~~~~~~
`String`, content of the message.
cleanContent
~~~~~~~
`String`, content of the message with valid user mentions (<@123>) replaced with "@username".
mentions
~~~~~~~~
A array of User_ objects that were mentioned in the message.
pinned
~~~~~~
`Boolean`, true if the message is pinned to its channel.
Functions
---------
isMentioned(user)
~~~~~~~~~~~~~~~~~
Returns true if the given user was mentioned in the message.
- **user** - A `User Resolvable`_
toString()
~~~~~~~~~~
Returns the content of the Message.
delete(`options`, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.deleteMessage(message, options, callback)``
| **See** client.deleteMessage_
update(content, `options`, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.updateMessage(message, content, options, callback)``
| **Aliases** `edit`
| **See** client.updateMessage_
reply(content, `options`, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.reply(message, content, options, callback)``
| **See** client.reply_
replyTTS(content, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.replyTTS(message, content, callback)``
| **See** client.replyTTS_
pin(`callback`)
~~~~~~~~~~~~~~~
| **Shortcut of** ``client.pinMessage(message, callback)``
| **See** client.pinMessage_
unpin(`callback`)
~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.unpinMessage(message, callback)``
| **See** client.unpinMessage_
.. _client.deleteMessage : ./docs_client.html#deletemessage-message-options-callback
.. _client.updateMessage : ./docs_client.html#updatemessage-message-content-options-callback
.. _client.reply : ./docs_client.html#reply-message-content-options-callback
.. _client.replyTTS : ./docs_client.html#replytts-message-content-callback
.. _client.pinMessage : ./docs_client.html#pinmessage-message-callback
.. _client.unpinMessage : ./docs_client.html#unpinmessage-message-callback

View File

@@ -1,58 +0,0 @@
.. include:: ./vars.rst
Permission Constants
====================
In discord.js, you can handle permissions in two ways. The preferred way is to just use the string name of the permission, alternatively you can use ``Discord.Constants.Permissions["permission name"]``.
--------
Valid Permission Names
----------------------
.. code-block:: js
{
// general
administrator,
createInstantInvite,
kickMembers,
banMembers,
manageRoles,
managePermissions,
manageChannels,
manageChannel,
manageServer,
changeNickname,
manageNicknames,
// text
readMessages,
sendMessages,
sendTTSMessages,
manageMessages,
embedLinks,
attachFiles,
readMessageHistory,
mentionEveryone,
// voice
voiceConnect,
voiceSpeak,
voiceMuteMembers,
voiceDeafenMembers,
voiceMoveMembers,
voiceUseVAD
};
Preferred Way
-------------
The preferred way of using permissions in discord.js is to just use the name. E.g:
``role.hasPermission("voiceUseVAD")``
Alternative
-----------
You can also go the long way round and use the numerical permission like so:
``role.hasPermission( Discord.Constants.Permissions.voiceUseVAD )``

View File

@@ -1,31 +0,0 @@
.. include:: ./vars.rst
PermissionOverwrite
===================
PermissionOverwrite is used to represent data about permission overwrites for roles or users in channels.
--------
Attributes
----------
id
~~
`String`, the ID of the PermissionOverwrite. If ``overwrite.type`` is ``role``, this is the role's ID. Otherwise, it is a User_ overwrite.
type
~~~~
`String`, type of the overwrite. Either ``member`` or ``role``.
allowed
~~~~~~~
Returns the permissions explicitly allowed by the overwrite. An `Array` of Strings, which are names of permissions. More can be found at `Permission Constants`_
denied
~~~~~~
Returns the permissions explicitly denied by the overwrite. An `Array` of Strings, which are names of permissions. More can be found at `Permission Constants`_

View File

@@ -1,90 +0,0 @@
.. include:: ./vars.rst
PMChannel
=========
**extends** Channel_
A PMChannel is a Private/Direct channel between the Client and another user.
--------
Attributes
----------
messages
~~~~~~~~
A Cache_ of Message_ objects.
recipient
~~~~~~~~~
The User_ that is the recipient of the Channel.
lastMessage
~~~~~~~~~~~
The last Message_ sent in the channel, may be null if no messages have been sent during the time the bound Client_ has been online.
--------
Functions
---------
toString()
~~~~~~~~~~
Returns a mention of the recipient.
sendMessage(content, `options`, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.sendMessage(channel, content, options, callback)``
| **Aliases** `send`
| **See** client.sendMessage_
sendTTSMessage(content, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.sendTTSMessage(channel, content, callback)``
| **Aliases** `sendTTS`
| **See** client.sendTTSMessage_
sendFile(attachment, name, content, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.sendFile(channel, attachment, name, content, callbasck)``
| **See** client.sendFile_
startTyping(`callback`)
~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.startTyping(channel, callback)``
| **See** client.startTyping_
stopTyping(`callback`)
~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.stopTyping(channel, callback)``
| **See** client.stopTyping_
getLogs(`limit`, `options`, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.getChannelLogs(channel, limit, options, callback)``
| **See** client.getChannelLogs_
getMessage(messageID, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.getMessage(channel, messageID, callback)``
| **See** client.getMessage_
.. _client.sendMessage : ./docs_client.html#sendmessage-channel-content-options-callback
.. _client.sendTTSMessage : ./docs_client.html#sendttsmessage-channel-content-callback
.. _client.sendFile : ./docs_client.html#sendfile-channel-attachment-name-content-callback
.. _client.startTyping : ./docs_client.html#starttyping-channel-callback
.. _client.stopTyping : ./docs_client.html#stoptyping-channel-callback
.. _client.getChannelLogs : ./docs_client.html#getchannellogs-channel-limit-options-callback
.. _client.getMessage : ./docs_client.html#getmessage-channel-messageid-callback

View File

@@ -1,100 +0,0 @@
.. include:: ./vars.rst
Resolvables
===========
In discord.js, the aim is to allow the end developer to have freedom in what sort of data types they supply. References to any sort of resolvable basically mean what types of data you can provide. The different resolvables are shown before:
--------
Channel Resolvable
------------------
A Channel Resolvable allows:
- Channel_
- Server_
- Message_
- User_ (in some instances)
- String of Channel ID
- String of User ID
File Resolvable
---------------
A File Resolvable allows:
- URL
- Local file path
- Readable stream
Role Resolvable
---------------
A Role Resolvable allows:
- Role ID
- Role_
Voice Channel Resolvable
------------------------
A Voice Channel Resolvable allows:
- VoiceChannel_
- Voice Channel ID
Message Resolvable
------------------
A Message Resolvable allows:
- Message_
- TextChannel_
- PMChannel_
User Resolvable
---------------
A User Resolvable allows:
- User_
- Message_
- TextChannel_
- PMChannel_
- Server_
- String of User ID
String Resolvable
-----------------
A String Resolvable allows:
- Array
- String
Server Resolvable
-----------------
A Server Resolvable allows:
- Server_
- ServerChannel_
- Message_ (only for messages from server channels)
- String of Server ID
Invite ID Resolvable
--------------------
An Invite ID Resolvable allows:
- Invite_
- String containing either a http link to the invite or the invite code on its own.
Base64 Resolvable
-----------------
A Base64 Resolvable allows:
- Buffer
- String

View File

@@ -1,115 +0,0 @@
.. include:: ./vars.rst
Role
====
Represents data for a Server Role.
--------
Attributes
----------
position
~~~~~~~~
`Number`, position of the role when viewing the roles of a server.
name
~~~~
`String`, name of the role.
managed
~~~~~~~
`Boolean`, whether Discord has created the role itself. Currently only used for Twitch integration.
id
~~
`String`, ID of the role.
hoist
~~~~~
`Boolean`, whether the role should be displayed as a separate category in the users section.
color
~~~~~
`Number`, a base 10 colour. Use ``role.colorAsHex()`` to get a hex colour instead.
server
~~~~~~
The Server_ the role belongs to.
client
~~~~~~
The Client_ that cached the role.
createdAt
~~~~~~~~~
A `Date` referring to when the role was created.
Functions
---------
serialise()
~~~~~~~~~~~
**Aliases:** `serialize`
Makes an object with the permission names found in `Permission Constants`_ and a boolean value for them.
hasPermission(permission)
~~~~~~~~~~~~~~~~~~~~~~~~~
Sees whether the role has the permission given.
- **permission** - See `Permission Constants`_ for valid permission names.
colorAsHex()
~~~~~~~~~~~~
Returns the role's colour as hex, e.g. ``#FF0000``.
mention()
~~~~~~~~~
Returns a valid string that can be sent in a message to mention the role. By default, ``role.toString()`` does this so by adding a role object to a string, e.g. ``role + ""``, their mention code will be retrieved. If the role isn't mentionable, its name gets returned.
delete()
~~~~~~~~
| **Shortcut of** ``client.deleteRole(role)``
| **See** client.deleteRole_
update(data)
~~~~~~~~~~~~
| **Shortcut of** ``client.updateRole(role, data)``
| **Aliases** `edit`
| **See** client.updateRole_
addMember(member, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.addMemberToRole(member, roles, callback)``
| **Aliases** `addUser`
| **See** client.addMemberToRole_
removeMember(member, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.removeMemberFromRole(member, roles, callback)``
| **Aliases** `removeUser`
| **See** client.removeMemberFromRole_
.. _client.deleteRole : ./docs_client.html#deleterole-role-callback
.. _client.updateRole : ./docs_client.html#updaterole-role-data-callback
.. _client.addMemberToRole : ./docs_client.html#addmembertorole-member-role-callback
.. _client.removeMemberFromRole : ./docs_client.html#removememberfromrole-member-role-callback

View File

@@ -1,189 +0,0 @@
.. include:: ./vars.rst
Server
======
**extends** Equality_
Stores information about a Discord Server.
--------
Attributes
----------
client
~~~~~~
The Client_ that cached the Server.
region
~~~~~~
`String`, region of the server.
name
~~~~
`String`, name of the server.
id
~~
`String`, ID of the server - never changes.
members
~~~~~~~
Members of the server, a Cache_ of User_ objects.
channels
~~~~~~~~
Channels in the server, a Cache_ of ServerChannel_ objects.
roles
~~~~~
Roles of the server, a Cache_ of Role_ objects.
icon
~~~~
ID/Hash of server icon, use ``server.iconURL`` for an URL to the icon.
afkTimeout
~~~~~~~~~~
`Number`, the AFK timeout in seconds before a user is classed as AFK. If there isn't an AFK timeout, this will be null.
afkChannel
~~~~~~~~~~
The channel where AFK users are moved to, ServerChannel_ object. If one isn't set, this will be null.
defaultChannel
~~~~~~~~~~~~~~
**Aliases** `generalChannel, general`
The ``#general`` ServerChannel_ of the server.
owner
~~~~~
The founder of the server, a User_ object.
iconURL
~~~~~~~
The URL of the Server's icon. If the server doesn't have an icon, this will be null.
createdAt
~~~~~~~~~
A `Date` referring to when the server was created.
Functions
---------
rolesOfUser(user)
~~~~~~~~~~~~~~~~~
**Aliases**: `rolesOf`, `rolesOfMember`
Returns an array of the roles affecting a user server-wide.
usersWithRole(role)
~~~~~~~~~~~~~~~~~
**Aliases**: `membersWithRole`
Returns an array of users that have the specified role.
detailsOfUser(user)
~~~~~~~~~~~~~~~~~~~
**Aliases** `detailsOf`, `detailsOfMember`
Returns an object containing metadata of a user within the server, containing a structure similar to the following:
.. code-block:: js
{
joinedAt: 1449339323747,
roles: [],
mute: false,
selfMute: false,
deaf: false,
selfDeaf: false,
nick: 'Nickname'
}
leave()
~~~~~~~
| **Shortcut of** ``client.leaveServer(server)``
| **Aliases** `delete`
| **See** client.leaveServer_
createInvite(`options`, `callback`)
~~~~~~~
| **Shortcut of** ``client.createInvite(server, options, callback)``
| **See** client.createInvite_
createRole(`data`, `callback`)
~~~~~~~
| **Shortcut of** ``client.createRole(server, data, callback)``
| **See** client.createRole_
createChannel(name, `type`, `callback`)
~~~~~~~
| **Shortcut of** ``client.createChannel(server, name, type, callback)``
| **See** client.createChannel_
getBans(`callback`)
~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.getBans(server, callback)``
| **See** client.getBans_
banMember(user, `length`, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.banMember(member, server, length, callback)``
| **Aliases** `banUser, ban`
| **See** client.banMember_
unbanMember(user, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.unbanMember(member, server, callback)``
| **Aliases** `unbanUser, unban`
| **See** client.unbanMember_
kickMember(user, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.kickMember(member, server, callback)``
| **Aliases** `kickUser, kick`
| **See** client.kickMember_
setNickname(nickname, user, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.setNickname(server, nickname, user, callback)``
| **See** client.setNickname_
.. _client.leaveServer : ./docs_client.html#leaveserver-server-callback
.. _client.createInvite : ./docs_client.html#createinvite-channel-options-callback
.. _client.createRole : ./docs_client.html#createrole-server-data-callback
.. _client.createChannel : ./docs_client.html#createchannel-server-name-type-callback
.. _client.banMember : ./docs_client.html#banmember-user-server-length-callback
.. _client.unbanMember : ./docs_client.html#unbanmember-user-server-callback
.. _client.kickMember : ./docs_client.html#kickmember-user-server-callback
.. _client.setNickname : ./docs_client.html#setNickname-server-nickname-user-callback
.. _client.getBans : ./docs_client.html#getbans-server-callback

View File

@@ -1,59 +0,0 @@
.. include:: ./vars.rst
ServerChannel
=============
**extends** Channel_
A ServerChannel is a Channel_ that belongs to a Server_.
--------
Attributes
----------
name
~~~~
`String`, name of the channel.
type
~~~~
`String`, either ``voice`` or ``text``.
position
~~~~~~~~
`Number`, position in the channel list.
permissionOverwrites
~~~~~~~~~~~~~~~~~~~~
Cache_ of all the PermissionOverwrite_ objects affecting the channel.
server
~~~~~~
Server_ the channel belongs to.
Functions
---------
permissionsOf(userOrRole)
~~~~~~~~~~~~~~~~~~~
**Aliases:** permsOf
Returns a ChannelPermissions_ object of a user or role's permissions in that channel.
mention()
~~~~~~~~~
Returns a `string` that can be used in discord messages to mention a channel. `serverChannel.toString()` defaults to this.
update(data, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.updateChannel(channel, data, callback)``
| **See** client.updateChannel_

View File

@@ -1,99 +0,0 @@
.. include:: ./vars.rst
TextChannel
===========
**extends** ServerChannel_
A text channel of a server.
--------
Attributes
----------
topic
~~~~~
The topic of the channel, a `String`.
lastMessage
~~~~~~~~~~~
Last Message_ sent in the channel. May be null if no messages sent whilst the Client was online.
messages
~~~~~~~~
A Cache_ of Message_ objects.
--------
Functions
---------
setTopic(topic, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.setChannelTopic(channel, topic, callback)``
| **See** client.setChannelTopic_
setNameAndTopic(name, topic, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.setChannelNameAndTopic(channel, name, topic, callback)``
| **See** client.setChannelNameAndTopic_
sendMessage(content, `options`, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.sendMessage(channel, content, options, callback)``
| **Aliases** `send`
| **See** client.sendMessage_
sendTTSMessage(content, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.sendTTSMessage(channel, content, callback)``
| **Aliases** `sendTTS`
| **See** client.sendTTSMessage_
sendFile(attachment, name, content, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.sendFile(channel, attachment, name, content, callbasck)``
| **See** client.sendFile_
startTyping(`callback`)
~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.startTyping(channel, callback)``
| **See** client.startTyping_
stopTyping(`callback`)
~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.stopTyping(channel, callback)``
| **See** client.stopTyping
getLogs(`limit`, `options`, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.getChannelLogs(channel, limit, options, callback)
| **See** client.getChannelLogs_
getMessage(messageID, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.getMessage(channel, messageID, callback)``
| **See** client.getMessage_
.. _client.sendMessage : ./docs_client.html#sendmessage-channel-content-options-callback
.. _client.sendTTSMessage : ./docs_client.html#sendttsmessage-channel-content-callback
.. _client.sendFile : ./docs_client.html#sendfile-channel-attachment-name-content-callback
.. _client.startTyping : ./docs_client.html#starttyping-channel-callback
.. _client.stopTyping : ./docs_client.html#stoptyping-channel-callback
.. _client.getChannelLogs : ./docs_client.html#getchannellogs-channel-limit-options-callback
.. _client.getMessage : ./docs_client.html#getmessage-channel-messageid-callback
.. _client.setChannelTopic : ./docs_client.html#setchanneltopic-channel-topic-callback
.. _client.setChannelNameAndTopic : ./docs_client.html#setchannelnameandtopic-channel-name-topic-callback

View File

@@ -1,180 +0,0 @@
.. include:: ./vars.rst
User
====
**extends** Equality_
Stores information about users.
--------
Attributes
----------
client
~~~~~~
The Client_ that created the user.
username
~~~~~~~~
_Alias_ : ``name``
`String`, username of the User.
discriminator
~~~~~~~~~~~~~
`Integer` from 0-9999, don't use this to identify users. Used to separate the user from the 9998 others that may have the same username. Made redundant by ``user.id``.
id
~~
`String` (do not parse to an Integer, will become inaccurate). The ID of a user, never changes.
avatar
~~~~~~
`String`, the ID/hash of a user's avatar. To get a path to their avatar, see ``user.avatarURL``.
status
~~~~~~
The status of a user, `String`. Either ``online``, ``offline`` or ``idle``.
game
~~~~
The game object of a user. `null` if not playing a game, otherwise `Object` containing the following values:
.. code-block:: js
{
name : 'Game Name' //Name of game user is playing
}
typing
~~~~~~
`Object` containing the following values:
.. code-block:: js
{
since : 1448038288519, //timestamp of when
channel : <Channel Object> // channel they are typing in.
}
avatarURL
~~~~~~~~~
A valid URL to the user's avatar if they have one, otherwise null.
bot
~~~
A boolean that represents if the user is an official OAuth bot account or not.
voiceChannel
~~~~~~~~~~~~
The VoiceChannel_ the user is connected to. If they aren't in any voice channels, this will be ``null``.
createdAt
~~~~~~~~~
A `Date` referring to when the user was created.
note
~~~~
The note of the user, `String`.
speaking
~~~~~~~~
A boolean that represents whether or not the user is speaking in a voice channel, default is `false`.
Functions
---------
mention()
~~~~~~~~~
Returns a valid string that can be sent in a message to mention the user. By default, ``user.toString()`` does this so by adding a user object to a string, e.g. ``user + ""``, their mention code will be retrieved.
sendMessage(content, `options`, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.sendMessage(channel, content, options, callback)``
| **Aliases** `send`
| **See** client.sendMessage_
sendTTSMessage(content, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.sendTTSMessage(channel, content, callback)``
| **Aliases** `sendTTS`
| **See** client.sendTTSMessage_
sendFile(attachment, name, content, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.sendFile(channel, attachment, name, content, callbasck)``
| **See** client.sendFile_
startTyping(`callback`)
~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.startTyping(channel, callback)``
| **See** client.startTyping_
stopTyping(`callback`)
~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.stopTyping(channel, callback)``
| **See** client.stopTyping_
addTo(role, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.addMemberToRole(member, role, callback)``
| **See** client.addMemberToRole_
removeFrom(role, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.removeMemberFromRole(member, role, callback)``
| **See** client.removeMemberFromRole_
getLogs(`limit`, `options`, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.getChannelLogs(channel, limit, options, callback)``
| **See** client.getChannelLogs_
getMessage(messageID, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.getMessage(channel, messageID, callback)``
| **See** client.getMessage_
hasRole(role)
~~~~~~~~~~~~
| **Shortcut of** ``client.memberHasRole(member, role)``
| **See** client.memberHasRole_
.. _client.addMemberToRole : ./docs_client.html#addmembertorole-member-role-callback
.. _client.removeMemberFromRole : ./docs_client.html#removememberfromrole-member-role-callback
.. _client.memberHasRole : ./docs_client.html#memberhasrole-member-role
.. _client.sendMessage : ./docs_client.html#sendmessage-channel-content-options-callback
.. _client.sendTTSMessage : ./docs_client.html#sendttsmessage-channel-content-callback
.. _client.sendFile : ./docs_client.html#sendfile-channel-attachment-name-content-callback
.. _client.startTyping : ./docs_client.html#starttyping-channel-callback
.. _client.stopTyping : ./docs_client.html#stoptyping-channel-callback
.. _client.getChannelLogs : ./docs_client.html#getchannellogs-channel-limit-options-callback
.. _client.getMessage : ./docs_client.html#getmessage-channel-messageid-callback

View File

@@ -1,54 +0,0 @@
.. include:: ./vars.rst
VoiceChannel
============
**extends** ServerChannel_
A voice channel of a server. Currently, the voice channel class has no differences to the ServerChannel class.
--------
Attributes
----------
members
~~~~~~~~
A Cache_ of Users_ that are connected to the voice channel
userLimit
~~~~~~~~
The maximum amount of users that can connect to the voice channel. If it's 0, there is no limit
bitrate
~~~~~~~~
The bitrate of the voice channel (in kb/s).
Functions
---------
setUserLimit(limit, `callback`)
~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.setChannelUserLimit(channel, limit, callback)``
| **See** client.setChannelUserLimit_
setBitrate(kbitrate, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.setChannelBitrate(channel, kbitrate, callback)``
| **See** client.setChannelBitrate_
join(`callback`)
~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.joinVoiceChannel(channel, callback)``
| **See** client.joinVoiceChannel_
.. _client.setChannelUserLimit : ./docs_client.html#setchanneluserlimit-channel-limit-callback
.. _client.setChannelBitrate : ./docs_client.html#setchannelbitrate-channel-bitrate-callback
.. _client.getBans : ./docs_client.html#joinvoicechannel-channel-callback

View File

@@ -1,151 +0,0 @@
.. include:: ./vars.rst
VoiceConnection
===============
discord.js currently supports sending audio data over Discord voice chat. A voice connection can be initiated using
client.joinVoiceChannel_ and then later accessed again using the `client.voiceConnection` property. You can play something
using the `playXYZ` methods and then later stop the playback and listen for events that tell you about the playback status.
Note that discord.js does not support receiving data from voice yet, only sending.
--------
Attributes
----------
voiceChannel
~~~~~~~~~~~~
VoiceChannel_ that the connection is for
client
~~~~~~
Client_ the connection belongs to
token
~~~~~
The token used to authenticate with Discord
server
~~~~~~
The Server_ on which the voice connection takes place
encoder
~~~~~~~
The AudioEncoder_ used to encode data in this particular session
playingIntent
~~~~~~~~~~~~~
A stream intent used to bind events to the voice connection
playing
~~~~~~~
Whether or not the bot is currently playing something
paused
~~~~~~
Whether or not the playback is currently paused
streamTime
~~~~~~~~~~
The amount of time the current track has been playing for, in milliseconds
Functions
---------
playFile(path, `options`, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Plays a file to the voice channel. The file can be in practically any format; if you're looking for a list, look here: `Format list`_.
In addition to a file path local to your computer, it can also accept a URL, however this is not recommended as the entire content of the URL will be read before any playback starts.
This can cause delays from seconds to minutes - you can use `playRawStream` with a Stream obtained from the URL instead.
The `options` object can be used to control playback properties, currently, it allows setting the seek (in seconds) using the `seek` property, and the volume using the `volume` property, which can be in any of the following formats:
- A number representing the linear change in volume; 1 is equal to no change, 0 is completely silent, 0.5 is half the regular volume and 2 is double the regular volume.
- A string representing the linear change in volume, if this is more convenient for you.
- A string representing decibel gain, where `"0dB"` is no change, `"-3dB"` is half the volume (in linear units), `"+6dB"` is four times the volume (in linear units) and so on.
It is recommended to change the volume, because the default of 1 is usually too loud. (A reasonable setting is `0.25` or `"-6dB"`).
The callback will be called immediately after playback has *started*, it will have an error object and the stream intent as its parameters. The callback will only receive
an error if the encoding fails, for playback errors, you can bind a function to the `error` event of the intent. The intent supports the following events:
- The `time` event is emitted every packet (20 milliseconds) and has the current playback time in milliseconds as its only parameter. The playback time can also be checked at any time using the `streamTime` attribute.
- The `end` event is emitted once playback ends. Depending on various factors, it may be emitted a couple seconds earlier than the actual stream ending, you may have to add an offset if necessary.
- The `error` event is emitted if an error happens during playback, such as failing to send a packet.
The intent can later be accessed again using the `playingIntent` property. If you prefer _Promises over callbacks, this method will return a promise you can use in the same way as the callback.
playRawStream(stream, `options`, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This method is used in much the same way as `playFile`, except it plays data back from a stream containing audio data instead of a file or URL.
| See voiceConnection.playFile_ for usage information.
playArbitraryFFmpeg(ffmpegOptions, `volume`, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This method can be used to play data obtained from an arbitrary call to ffmpeg. Note that the array of options given as the parameter will
still be concatenated with the following options so it can be used with Discord:
.. code::
-loglevel 0
-f s16le
-ar 48000
-ac 2
pipe:1
setSpeaking(value)
~~~~~~~~~~~~~~~~~~
Sets whether or not the user is speaking (green circle around user on the official client). discord.js does this automatically when playing something,
but you may want to spoof it or manually disable it.
- **value** - `true` or `false`: whether or not you want the bot to show as speaking
setVolume(volume)
~~~~~~~~~~~~~
Sets the current volume of the connecion. 1.0 is normal, 0.5 is half as loud, 2.0 is twice as loud.
getVolume()
~~~~~~~~~~~~~
Returns the current volume. 1.0 is normal, 0.5 is half as loud, 2.0 is twice as loud.
pause()
~~~~~~~
Pauses the current connection's audio.
resume()
~~~~~~~~
Resumes the current connection's audio.
stopPlaying()
~~~~~~~~~~~~~
Stops the current playback immediately. After this method has finished, it is safe to play something else.
destroy()
~~~~~~~~~
Disconnects from the voice server and destroys all network connection. It's impossible to play anything on this connection afterwards, you will have to re-initiate
a connection using client.joinVoiceChannel_. This method also calls `stopPlaying` internally, you don't have to do that yourself.
.. _Format list: https://ffmpeg.org/general.html#File-Formats
.. _voiceConnection.playFile: ./docs_voiceconnection.html#playfile-path-options-callback
.. _client.joinVoiceChannel: ./docs_client.html#joinvoicechannel-channel-callback

View File

@@ -1,323 +0,0 @@
.. include:: ./vars.rst
Usage Examples
==============
Not all of these are standalone examples, many of them are usage examples. If you're a beginner to Discord.js, we encourage you to look through these examples to get a hang of the way things work using the library.
.. warning :: Please do not copy/paste code directly from these examples. Try to learn from and adapt these pieces of code to your specific situation.
.. note :: We use `Template Literals`_ in these examples. These are an ES6 feature and may not be fully supported in your environment. In this case, it is safe to use other methods of concatenating strings.
-----
Logging In
----------
Logs the Client_ in, allowing you to begin working with the Discord API.
Logging in with a username and password
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Do not use a normal user account for large or public bots. This is considered abuse of the API and can land you in trouble.**
.. code-block:: javascript
const Discord = require('discord.js');
var client = new Discord.Client();
client.login('mybot@example.com', 'password', output);
function output(error, token) {
if (error) {
console.log(`There was an error logging in: ${error}`);
return;
} else
console.log(`Logged in. Token: ${token}`);
}
Logging in with a token
~~~~~~~~~~~~~~~~~~~~~~~
You can get your bot's token using the `My Applications`_ page on the Discord Developers site.
.. code-block:: javascript
const Discord = require('discord.js');
var client = new Discord.Client();
client.loginWithToken('token', output);
function output(error, token) {
if (error) {
console.log(`There was an error logging in: ${error}`);
return;
} else
console.log(`Logged in. Token: ${token}`);
}
-----
Logging Out
----------
The logOut function should be used if you intend to reconnect with the same process. The function takes one parameter, which is a callback.
.. code-block:: javascript
client.logOut((err) => {
console.log(err);
});
However, if you want to completely shut down your application, use destroy.
.. code-block:: javascript
client.destroy((err) => {
console.log(err);
});
-----
Receiving Messages
------------------
Here we will demonstrate receiving messages and logging them to the console.
.. code-block:: javascript
client.on('message', function(message) {
if (message.channel.isPrivate) {
console.log(`(Private) ${message.author.name}: ${message.content}`);
} else {
console.log(`(${message.server.name} / ${message.channel.name}) ${message.author.name}: ${message.content}`);
}
});
-----
Sending messages
-----------------
In the same channel
~~~~~~~~~~~~~~~~~~~
This is by far the most common way people will send a message in the Discord API. Here we will send a message to the same Channel_ we received a message from in the above example.
.. code-block:: javascript
client.on('message', function(message) {
// Don't forget to log the message!
client.sendMessage(message.channel, "Hello!");
});
You can also use a `Message`_ resolvable as an parameter. This example does the same thing as above.
.. code-block:: javascript
client.on('message', function(message) {
client.sendMessage(message, "Hello!");
});
You can also directly reply to messages. This does the same as adding an @mention in front of your text.
Sends "@author Hello!"
.. code-block:: javascript
client.on('message', function(message) {
client.reply(message, "Hello!");
});
To a specific server and channel
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sends "Hello" to the default Channel_ in the Server_ "My Server". Note that this does not require any sort of received message to be activated, however if there are multiple servers with the name "My Server", a random one will be chosen.
See Cache_ for more details on getting specific objects and resolvables.
.. code-block:: javascript
var channel = client.servers.get("name", "My Server").defaultChannel;
client.sendMessage(channel, "Hello");
Private Messages
~~~~~~~~~~~~~~~~
You can also send private messages to a user with a User_ object. This will send "Hello!" as a private message to the original author of the received message.
Do note however, that a PMChannel_ is not the same as a ServerChannel_ and therefore does not have the same properties such as ``server`` and ``name``.
.. code-block:: javascript
client.on('message', function(message) {
client.sendMessage(message.author, "Hello!");
});
-----
Sending files
-----------------
The process of sending files is similar to how you send messages.
The first parameter takes an `Channel Resolvable`_ or `User Resolvable`_. The User Resolvable will send the file as a DM, and the Channel Resolvable will send the file to a text channel.
The next parameter is a `File Resolvable`_.
The third parameter lets you name your file. This is optional.
The fourth parameter lets you add a message. This is optional.
The last parameter is a callback. It takes an error and a `Message`_ object.
URL
~~~~~~~~~~~~~~~~
.. code-block:: javascript
client.on('message', function(message) {
client.sendFile(message, 'http://i.imgur.com/6CbxaPc.jpg', 'kappa.jpg', 'Check out this cool file!', (err, m) => {
if (err) console.log(err);
});
});
Local file
~~~~~~~~~~~~~~~~
.. code-block:: javascript
client.on('message', function(message) {
client.sendFile(message, '/assets/dank_meme.jpg', 'dank_meme.jpg', 'Check out this cool file!', (err, m) => {
if (err) console.log(err);
});
});
Buffer
~~~~~~~~~~~~~~~~
Send data from streams.
.. code-block:: javascript
const fs = require('fs');
client.on('message', function(message) {
var stream = fs.createReadStream('/assets/dank_meme.jpg');
var chunks = [];
stream.on('data', (dataChunk) => {
chunks.push(dataChunk);
});
stream.on('end' () => {
client.sendFile(message, Buffer.concat(chunks), 'dank_meme.jpg', 'Check out this cool file!');
});
});
-----
Deleting messages
-----------------
The deleteMessage function takes an `Message Resolvable`_ as the first parameter. The second parameter is a callback.
This snippet will delete the received message.
.. code-block:: javascript
client.on('message', function(message) {
client.deleteMessage(message);
});
You can also delete multiple messages with the deleteMessages function. It takes an array of `Message Resolvable`_ s.
This code deletes all the messages recieved every 10 seconds.
.. code-block:: javascript
var messages = [];
client.on('message', function(message) {
messages.push(message);
});
function clear() {
client.deleteMessages(messages);
messages = [];
}
setInterval(clear, 10000);
-----
Status updates
-----------------
Updating your status is very simple.
The ready event needs to be emitted before you can use theese functions.
You can either use the setStatus function or you can use helpers.
This will set the status to online and playing Call of Duty: Black Ops 10.
.. code-block:: javascript
client.on('ready', () => {
client.setStatus('online', 'Call of Duty: Black Ops 10');
});
You can also use the setPlayingGame function, if you just want to set your game...
.. code-block:: javascript
client.on('ready', () => {
client.setPlayingGame('Call of Duty: Black Ops 10');
});
...and setStatusIdle/setStatusOnline, if you just want to change your status.
.. code-block:: javascript
client.on('ready', () => {
client.setStatusIdle(); // Now idle
setTimeout(() => { client.setStatusOnline(); }, 10000); // Set the status back to online after 10 seconds.
});
Set streaming
~~~~~~~~~~~~~~~~
You can even set the streaming status.
The setStreaming function takes 3 parameters, and one callback.
The first defines the name of the game, the second the URL to a twitch.tv channel and the third a type where 1 = streamnig.
.. code-block:: javascript
client.on('ready', () => {
client.setStreaming('Call of Duty: Black Ops 10', 'https://www.twitch.tv/lirik', 1);
});
You can also use the setStatus function to do this.
.. code-block:: javascript
client.on('ready', () => {
var opts = {
name: 'Call of Duty: Black Ops 10',
url: 'https://www.twitch.tv/lirik',
type: 1
};
client.setStatus(null, opts);
});
-----

View File

@@ -0,0 +1,163 @@
# Sending Attachments
In here you'll see a few examples showing how you can send an attachment using discord.js.
## Sending an attachment using a URL
There are a few ways you can do this, but we'll show you the easiest.
The following examples use [Attachment](/#/docs/main/stable/class/Attachment).
```js
// Extract the required classes from the discord.js module
const { Client, Attachment } = require('discord.js');
// Create an instance of a Discord client
const client = new Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
client.on('message', message => {
// If the message is '!rip'
if (message.content === '!rip') {
// Create the attachment using Attachment
const attachment = new Attachment('https://i.imgur.com/w3duR07.png');
// Send the attachment in the message channel
message.channel.send(attachment);
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');
```
And here is the result:
![Image showing the result](/static/attachment-example1.png)
But what if you want to send an attachment with a message content? Fear not, for it is easy to do that too! We'll recommend reading [the TextChannel's "send" function documentation](/#/docs/main/stable/class/TextChannel?scrollTo=send) to see what other options are available.
```js
// Extract the required classes from the discord.js module
const { Client, Attachment } = require('discord.js');
// Create an instance of a Discord client
const client = new Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
client.on('message', message => {
// If the message is '!rip'
if (message.content === '!rip') {
// Create the attachment using Attachment
const attachment = new Attachment('https://i.imgur.com/w3duR07.png');
// Send the attachment in the message channel with a content
message.channel.send(`${message.author},`, attachment);
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');
```
And here's the result of this one:
![Image showing the result](/static/attachment-example2.png)
## Sending a local file or buffer
Sending a local file isn't hard either! We'll be using [Attachment](/#/docs/main/stable/class/Attachment) for these examples too.
```js
// Extract the required classes from the discord.js module
const { Client, Attachment } = require('discord.js');
// Create an instance of a Discord client
const client = new Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
client.on('message', message => {
// If the message is '!rip'
if (message.content === '!rip') {
// Create the attachment using Attachment
const attachment = new Attachment('./rip.png');
// Send the attachment in the message channel with a content
message.channel.send(`${message.author},`, attachment);
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');
```
The results are the same as the URL examples:
![Image showing result](/static/attachment-example1.png)
But what if you have a buffer from an image? Or a text document? Well, it's the same as sending a local file or a URL!
In the following example, we'll be getting the buffer from a `memes.txt` file, and send it in the message channel.
You can use any buffer you want, and send it. Just make sure to overwrite the filename if it isn't an image!
```js
// Extract the required classes from the discord.js module
const { Client, Attachment } = require('discord.js');
// Import the native fs module
const fs = require('fs');
// Create an instance of a Discord client
const client = new Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
client.on('message', message => {
// If the message is '!memes'
if (message.content === '!memes') {
// Get the buffer from the 'memes.txt', assuming that the file exists
const buffer = fs.readFileSync('./memes.txt');
/**
* Create the attachment using Attachment,
* overwritting the default file name to 'memes.txt'
* Read more about it over at
* http://discord.js.org/#/docs/main/stable/class/Attachment
*/
const attachment = new Attachment(buffer, 'memes.txt');
// Send the attachment in the message channel with a content
message.channel.send(`${message.author}, here are your memes!`, attachment);
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');
```
And of course, the results are:
![Attachment File example 3](/static/attachment-example3.png)

29
docs/examples/avatars.js Normal file
View File

@@ -0,0 +1,29 @@
/**
* Send a user a link to their avatar
*/
// Import the discord.js module
const Discord = require('discord.js');
// Create an instance of a Discord client
const client = new Discord.Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
// Create an event listener for messages
client.on('message', message => {
// If the message is "what is my avatar"
if (message.content === 'what is my avatar') {
// Send the user's avatar URL
message.reply(message.author.avatarURL);
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');

38
docs/examples/embed.js Normal file
View File

@@ -0,0 +1,38 @@
/**
* An example of how you can send embeds
*/
// Extract the required classes from the discord.js module
const { Client, RichEmbed } = require('discord.js');
// Create an instance of a Discord client
const client = new Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
client.on('message', message => {
// If the message is "how to embed"
if (message.content === 'how to embed') {
// We can create embeds using the MessageEmbed constructor
// Read more about all that you can do with the constructor
// over at https://discord.js.org/#/docs/main/stable/class/RichEmbed
const embed = new RichEmbed()
// Set the title of the field
.setTitle('A slick little embed')
// Set the color of the embed
.setColor(0xFF0000)
// Set the main content of the embed
.setDescription('Hello, this is a slick embed!');
// Send the embed to the same channel as the message
message.channel.send(embed);
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');

30
docs/examples/greeting.js Normal file
View File

@@ -0,0 +1,30 @@
/**
* A bot that welcomes new guild members when they join
*/
// Import the discord.js module
const Discord = require('discord.js');
// Create an instance of a Discord client
const client = new Discord.Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
// Create an event listener for new guild members
client.on('guildMemberAdd', member => {
// Send the message to a designated channel on a server:
const channel = member.guild.channels.find(ch => ch.name === 'member-log');
// Do nothing if the channel wasn't found on this server
if (!channel) return;
// Send the message, mentioning the member
channel.send(`Welcome to the server, ${member}`);
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');

145
docs/examples/moderation.md Normal file
View File

@@ -0,0 +1,145 @@
# Moderation
In here, you'll see some basic examples for kicking and banning a member.
## Kicking a member
Let's say you have a member that you'd like to kick. Here is an example of how you *can* do it.
```js
// Import the discord.js module
const Discord = require('discord.js');
// Create an instance of a Discord client
const client = new Discord.Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
client.on('message', message => {
// Ignore messages that aren't from a guild
if (!message.guild) return;
// If the message content starts with "!kick"
if (message.content.startsWith('!kick')) {
// Assuming we mention someone in the message, this will return the user
// Read more about mentions over at https://discord.js.org/#/docs/main/stable/class/MessageMentions
const user = message.mentions.users.first();
// If we have a user mentioned
if (user) {
// Now we get the member from the user
const member = message.guild.member(user);
// If the member is in the guild
if (member) {
/**
* Kick the member
* Make sure you run this on a member, not a user!
* There are big differences between a user and a member
*/
member.kick('Optional reason that will display in the audit logs').then(() => {
// We let the message author know we were able to kick the person
message.reply(`Successfully kicked ${user.tag}`);
}).catch(err => {
// An error happened
// This is generally due to the bot not being able to kick the member,
// either due to missing permissions or role hierarchy
message.reply('I was unable to kick the member');
// Log the error
console.error(err);
});
} else {
// The mentioned user isn't in this guild
message.reply('That user isn\'t in this guild!');
}
// Otherwise, if no user was mentioned
} else {
message.reply('You didn\'t mention the user to kick!');
}
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');
```
And the result is:
![Image showing the result](/static/kick-example.png)
## Banning a member
Banning works the same way as kicking, but it has slightly more options that can be changed.
```js
// Import the discord.js module
const Discord = require('discord.js');
// Create an instance of a Discord client
const client = new Discord.Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
client.on('message', message => {
// Ignore messages that aren't from a guild
if (!message.guild) return;
// if the message content starts with "!ban"
if (message.content.startsWith('!ban')) {
// Assuming we mention someone in the message, this will return the user
// Read more about mentions over at https://discord.js.org/#/docs/main/stable/class/MessageMentions
const user = message.mentions.users.first();
// If we have a user mentioned
if (user) {
// Now we get the member from the user
const member = message.guild.member(user);
// If the member is in the guild
if (member) {
/**
* Ban the member
* Make sure you run this on a member, not a user!
* There are big differences between a user and a member
* Read more about what ban options there are over at
* https://discord.js.org/#/docs/main/stable/class/GuildMember?scrollTo=ban
*/
member.ban({
reason: 'They were bad!',
}).then(() => {
// We let the message author know we were able to ban the person
message.reply(`Successfully banned ${user.tag}`);
}).catch(err => {
// An error happened
// This is generally due to the bot not being able to ban the member,
// either due to missing permissions or role hierarchy
message.reply('I was unable to ban the member');
// Log the error
console.error(err);
});
} else {
// The mentioned user isn't in this guild
message.reply('That user isn\'t in this guild!');
}
} else {
// Otherwise, if no user was mentioned
message.reply('You didn\'t mention the user to ban!');
}
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');
```
And the result is:
![Image showing the result](/static/ban-example.png)

29
docs/examples/ping.js Normal file
View File

@@ -0,0 +1,29 @@
/**
* A ping pong bot, whenever you send "ping", it replies "pong".
*/
// Import the discord.js module
const Discord = require('discord.js');
// Create an instance of a Discord client
const client = new Discord.Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
// Create an event listener for messages
client.on('message', message => {
// If the message is "ping"
if (message.content === 'ping') {
// Send "pong" to the same channel
message.channel.send('pong');
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');

12
docs/examples/webhook.js Normal file
View File

@@ -0,0 +1,12 @@
/**
* Send a message using a webhook
*/
// Import the discord.js module
const Discord = require('discord.js');
// Create a new webhook
const hook = new Discord.WebhookClient('webhook id', 'webhook token');
// Send a message using the webhook
hook.send('I am now alive!');

23
docs/general/faq.md Normal file
View File

@@ -0,0 +1,23 @@
# Frequently Asked Questions
These are just questions that get asked frequently, that usually have a common resolution.
If you have issues not listed here, please ask in the [official Discord server](https://discord.gg/bRCvFy9).
Always make sure to read the documentation.
## No matter what, I get `SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode`‽
Update to Node.js 6.0.0 or newer.
## How do I get voice working?
- Install FFMPEG.
- Install either the `node-opus` package or the `opusscript` package.
node-opus is greatly preferred, due to it having significantly better performance.
## How do I install FFMPEG?
- **npm:** `npm install ffmpeg-binaries`
- **Ubuntu 16.04:** `sudo apt install ffmpeg`
- **Ubuntu 14.04:** `sudo apt-get install libav-tools`
- **Windows:** `npm install ffmpeg-binaries` or see the [FFMPEG section of AoDude's guide](https://github.com/bdistin/OhGodMusicBot/blob/master/README.md#download-ffmpeg).
## How do I set up node-opus?
- **Ubuntu:** Simply run `npm install node-opus`, and it's done. Congrats!
- **Windows:** Run `npm install --global --production windows-build-tools` in an admin command prompt or PowerShell.
Then, running `npm install node-opus` in your bot's directory should successfully build it. Woo!

177
docs/general/updating.md Normal file
View File

@@ -0,0 +1,177 @@
# Version 11.4.0
v11.4.0 backports many new features such as Rich Presence and bugfixes from v11.3.0.
See [the changelog](https://github.com/discordjs/discord.js/releases/tag/11.4.0) for a full list of changes, including information about deprecations.
# Version 11.3.0
v11.3.0 backports many new features and bug fixes from the in-development v12.
See [the changelog](https://github.com/discordjs/discord.js/releases/tag/11.3.0) for a full list of changes, including information about deprecations.
# Version 11.2.0
v11.2.0 fixes a lot of bugs we encountered along the 11.1.0 release, as well as support for new features such as Message Attachments and UserGuildSettings.
See [the changelog](https://github.com/discordjs/discord.js/releases/tag/11.2.0) for a full list of changes, including information about deprecations.
# Version 11.1.0
v11.1.0 features improved voice and gateway stability, as well as support for new features such as audit logs and searching for messages.
See [the changelog](https://github.com/discordjs/discord.js/releases/tag/11.1.0) for a full list of changes, including
information about deprecations.
# Version 11
Version 11 contains loads of new and improved features, optimisations, and bug fixes.
See [the changelog](https://github.com/discordjs/discord.js/releases/tag/11.0.0) for a full list of changes.
## Significant additions
* Message Reactions and Embeds (rich text)
* Support for uws and erlpack for better performance
* OAuthApplication support
* Web distributions
## Breaking changes
### Client.login() no longer supports logging in with email + password
Logging in with an email and password has always been heavily discouraged since the advent of proper token support, but in v11 we have made the decision to completely remove the functionality, since Hammer & Chisel have [officially stated](https://github.com/hammerandchisel/discord-api-docs/issues/69#issuecomment-223886862) it simply shouldn't be done.
User accounts can still log in with tokens just like bot accounts. To obtain the token for a user account, you can log in to Discord with that account, and use Ctrl + Shift + I to open the developer tools. In the console tab, evaluating `localStorage.token` will give you the token for that account.
### ClientUser.setEmail()/setPassword() now require the current password, as well as setUsername() on user accounts
Since you can no longer log in with email and password, you must provide the current account password to the `setEmail()`, `setPassword()`, and `setUsername()` methods for user accounts (self-bots).
### Removed TextBasedChannel.sendTTSMessage()
This method was deemed to be an entirely pointless shortcut that virtually nobody even used.
The same results can be achieved by passing options to `send()` or `sendMessage()`.
Example:
```js
channel.send('Hi there', { tts: true });
```
### Using Collection.find()/exists() with IDs will throw an error
This is simply to help prevent a common mistake that is made frequently.
To find something or check its existence using an ID, you should use `.get()` and `.has()` which are part of the [ES6 Map class](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map), which Collection is an extension of.
# Version 10
Version 10's non-BC changes focus on cleaning up some inconsistencies that exist in previous versions.
Upgrading from v9 should be quick and painless.
## Client options
All client options have been converted to camelCase rather than snake_case, and `max_message_cache` was renamed to `messageCacheMaxSize`.
v9 code example:
```js
const client = new Discord.Client({
disable_everyone: true,
max_message_cache: 500,
message_cache_lifetime: 120,
message_sweep_interval: 60
});
```
v10 code example:
```js
const client = new Discord.Client({
disableEveryone: true,
messageCacheMaxSize: 500,
messageCacheLifetime: 120,
messageSweepInterval: 60
});
```
## Presences
Presences have been completely restructured.
Previous versions of discord.js assumed that users had the same presence amongst all guilds - with the introduction of sharding, however, this is no longer the case.
v9 discord.js code may look something like this:
```js
User.status; // the status of the user
User.game; // the game that the user is playing
ClientUser.setStatus(status, game, url); // set the new status for the user
```
v10 moves presences to GuildMember instances. For the sake of simplicity, though, User classes also expose presences.
When accessing a presence on a User object, it simply finds the first GuildMember for the user, and uses its presence.
Additionally, the introduction of the Presence class keeps all of the presence data organised.
**It is strongly recommended that you use a GuildMember's presence where available, rather than a User.
A user may have an entirely different presence between two different guilds.**
v10 code:
```js
MemberOrUser.presence.status; // the status of the member or user
MemberOrUser.presence.game; // the game that the member or user is playing
ClientUser.setStatus(status); // online, idle, dnd, offline
ClientUser.setGame(game, streamingURL); // a game
ClientUser.setPresence(fullPresence); // status and game combined
```
## Voice
Voice has been rewritten internally, but in a backwards-compatible manner.
There is only one breaking change here; the `disconnected` event was renamed to `disconnect`.
Several more events have been made available to a VoiceConnection, so see the documentation.
## Events
Many events have been renamed or had their arguments change.
### Client events
| Version 9 | Version 10 |
|------------------------------------------------------|-----------------------------------------------|
| guildMemberAdd(guild, member) | guildMemberAdd(member) |
| guildMemberAvailable(guild, member) | guildMemberAvailable(member) |
| guildMemberRemove(guild, member) | guildMemberRemove(member) |
| guildMembersChunk(guild, members) | guildMembersChunk(members) |
| guildMemberUpdate(guild, oldMember, newMember) | guildMemberUpdate(oldMember, newMember) |
| guildRoleCreate(guild, role) | roleCreate(role) |
| guildRoleDelete(guild, role) | roleDelete(role) |
| guildRoleUpdate(guild, oldRole, newRole) | roleUpdate(oldRole, newRole) |
The guild parameter that has been dropped from the guild-related events can still be derived using `member.guild` or `role.guild`.
### VoiceConnection events
| Version 9 | Version 10 |
|--------------|------------|
| disconnected | disconnect |
## Dates and timestamps
All dates/timestamps on the structures have been refactored to have a consistent naming scheme and availability.
All of them are named similarly to this:
**Date:** `Message.createdAt`
**Timestamp:** `Message.createdTimestamp`
See the docs for each structure to see which date/timestamps are available on them.
# Version 9
The version 9 (v9) rewrite takes a much more object-oriented approach than previous versions,
which allows your code to be much more readable and manageable.
It's been rebuilt from the ground up and should be much more stable, fixing caching issues that affected
older versions. It also has support for newer Discord Features, such as emojis.
Version 9, while containing a sizable number of breaking changes, does not require much change in your code's logic -
most of the concepts are still the same, but loads of functions have been moved around.
The vast majority of methods you're used to using have been moved out of the Client class,
into other more relevant classes where they belong.
Because of this, you will need to convert most of your calls over to the new methods.
Here are a few examples of methods that have changed:
* `Client.sendMessage(channel, message)` ==> `TextChannel.sendMessage(message)`
* `Client.sendMessage(user, message)` ==> `User.sendMessage(message)`
* `Client.updateMessage(message, "New content")` ==> `Message.edit("New Content")`
* `Client.getChannelLogs(channel, limit)` ==> `TextChannel.fetchMessages({options})`
* `Server.detailsOfUser(User)` ==> `Server.members.get(User).properties` (retrieving a member gives a GuildMember object)
* `Client.joinVoiceChannel(voicechannel)` => `VoiceChannel.join()`
A couple more important details:
* `Client.loginWithToken("token")` ==> `client.login("token")`
* `Client.servers.length` ==> `client.guilds.size` (all instances of `server` are now `guild`)
## No more callbacks!
Version 9 eschews callbacks in favour of Promises. This means all code relying on callbacks must be changed.
For example, the following code:
```js
client.getChannelLogs(channel, 100, function(messages) {
console.log(`${messages.length} messages found`);
});
```
```js
channel.fetchMessages({limit: 100}).then(messages => {
console.log(`${messages.size} messages found`);
});
```

95
docs/general/welcome.md Normal file
View File

@@ -0,0 +1,95 @@
<div align="center">
<br />
<p>
<a href="https://discord.js.org"><img src="https://discord.js.org/static/logo.svg" width="546" alt="discord.js" /></a>
</p>
<br />
<p>
<a href="https://discord.gg/bRCvFy9"><img src="https://discordapp.com/api/guilds/222078108977594368/embed.png" alt="Discord server" /></a>
<a href="https://www.npmjs.com/package/discord.js"><img src="https://img.shields.io/npm/v/discord.js.svg?maxAge=3600" alt="NPM version" /></a>
<a href="https://www.npmjs.com/package/discord.js"><img src="https://img.shields.io/npm/dt/discord.js.svg?maxAge=3600" alt="NPM downloads" /></a>
<a href="https://travis-ci.org/discordjs/discord.js"><img src="https://travis-ci.org/discordjs/discord.js.svg" alt="Build status" /></a>
<a href="https://david-dm.org/discordjs/discord.js"><img src="https://img.shields.io/david/discordjs/discord.js.svg?maxAge=3600" alt="Dependencies" /></a>
<a href="https://www.patreon.com/discordjs"><img src="https://img.shields.io/badge/donate-patreon-F96854.svg" alt="Patreon" /></a>
</p>
<p>
<a href="https://nodei.co/npm/discord.js/"><img src="https://nodei.co/npm/discord.js.png?downloads=true&stars=true" alt="NPM info" /></a>
</p>
</div>
# Welcome!
Welcome to the discord.js v11.4 documentation.
The v11.4 release contains bugfixes from v11.3 and backports features such as Rich Presence.
v12 is still very much a work-in-progress, as we're aiming to make it the best it can possibly be before releasing.
If you are fond of living life on the bleeding-edge, check out the master branch.
## About
discord.js is a powerful [Node.js](https://nodejs.org) module that allows you to interact with the
[Discord API](https://discordapp.com/developers/docs/intro) very easily.
- Object-oriented
- Predictable abstractions
- Performant
- 100% coverage of the Discord API
## Installation
**Node.js 6.0.0 or newer is required.**
Ignore any warnings about unmet peer dependencies, as they're all optional.
Without voice support: `npm install discord.js`
With voice support ([node-opus](https://www.npmjs.com/package/node-opus)): `npm install discord.js node-opus`
With voice support ([opusscript](https://www.npmjs.com/package/opusscript)): `npm install discord.js opusscript`
### Audio engines
The preferred audio engine is node-opus, as it performs significantly better than opusscript. When both are available, discord.js will automatically choose node-opus.
Using opusscript is only recommended for development environments where node-opus is tough to get working.
For production bots, using node-opus should be considered a necessity, especially if they're going to be running on multiple servers.
### Optional packages
- [bufferutil](https://www.npmjs.com/package/bufferutil) to greatly speed up the WebSocket when *not* using uws (`npm install bufferutil`)
- [erlpack](https://github.com/hammerandchisel/erlpack) for significantly faster WebSocket data (de)serialisation (`npm install hammerandchisel/erlpack`)
- One of the following packages can be installed for faster voice packet encryption and decryption:
- [sodium](https://www.npmjs.com/package/sodium) (`npm install sodium`)
- [libsodium.js](https://www.npmjs.com/package/libsodium-wrappers) (`npm install libsodium-wrappers`)
- [uws](https://www.npmjs.com/package/uws) for a much faster WebSocket connection (`npm install uws`)
## Example usage
```js
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('message', msg => {
if (msg.content === 'ping') {
msg.reply('pong');
}
});
client.login('token');
```
## Links
* [Website](https://discord.js.org/) ([source](https://github.com/discordjs/website))
* [Documentation](https://discord.js.org/#/docs)
* [Guide](https://discordjs.guide/) ([source](https://github.com/discordjs/guide))
* [Discord.js Discord server](https://discord.gg/bRCvFy9)
* [Discord API Discord server](https://discord.gg/discord-api)
* [GitHub](https://github.com/discordjs/discord.js)
* [NPM](https://www.npmjs.com/package/discord.js)
* [Related libraries](https://discordapi.com/unofficial/libs.html)
### Extensions
* [RPC](https://www.npmjs.com/package/discord-rpc) ([source](https://github.com/discordjs/RPC))
## Contributing
Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the
[documentation](https://discord.js.org/#/docs).
See [the contribution guide](https://github.com/discordjs/discord.js/blob/master/.github/CONTRIBUTING.md) if you'd like to submit a PR.
## Help
If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle
nudge in the right direction, please don't hesitate to join our official [Discord.js Server](https://discord.gg/bRCvFy9).

View File

@@ -1,66 +0,0 @@
.. include:: ./vars.rst
Welcome to discord.js's documentation!
======================================
discord.js is an easy-to-use and intuitive JavaScript API for Discord_. It's fairly high level, so if you're
looking for something low level, check out `discord.io`_.
if you're having problems, check out the `troubleshooting guide`_.
Feel free to make any contributions you want, whether it be through creating an issue, giving a suggestion or making a pull request!
.. note:: This documentation is still a work-in-progress, apologies if something isn't yet documented!
.. _docs:
.. toctree::
:maxdepth: 1
:caption: General
installing
migrating
troubleshooting
examples
.. toctree::
:maxdepth: 1
:caption: Documentation
docs_client
docs_server
docs_user
docs_message
docs_invite
docs_voiceconnection
.. toctree::
:maxdepth: 1
:caption: Channel Documentation
docs_channel
docs_pmchannel
docs_serverchannel
docs_textchannel
docs_voicechannel
.. toctree::
:maxdepth: 1
:caption: Permission Documentation
docs_permissionconstants
docs_role
docs_permissionoverwrite
docs_channelpermissions
.. toctree::
:maxdepth: 1
:caption: Utility Documentation
docs_cache
docs_equality
docs_resolvables
.. _Discord : https://discordapp.com/
.. _troubleshooting guide : troubleshooting.html
.. _discord.io : https://github.com/izy521/discord.io

30
docs/index.yml Normal file
View File

@@ -0,0 +1,30 @@
- name: General
files:
- name: Welcome
path: welcome.md
- name: Updating your code
path: updating.md
- name: FAQ
path: faq.md
- name: Topics
files:
- name: Voice
path: voice.md
- name: Web builds
path: web.md
- name: Examples
files:
- name: Ping
path: ping.js
- name: Avatars
path: avatars.js
- name: Attachments
path: attachments.md
- name: Server greeting
path: greeting.js
- name: Message Embed
path: embed.js
- name: Moderation
path: moderation.md
- name: Webhook
path: webhook.js

View File

@@ -1,62 +0,0 @@
.. include:: ./vars.rst
Installing discord.js
=====================
To install discord.js, you need a few dependencies.
.. warning:: **When installing with any of these methods, you'll encounter some errors.** This is because an optional dependency isn't working properly, but discord.js should still work fine.
-----------
Windows
-------
------------
- You need `Visual Studio`_ and `Python 2.7`_.
Your Visual Studio installation ideally has to be recent, but you can try installing without it first. You can use **Express, Community, Enteprise** or any others apart from ``VS Code``.
- You (obviously) need `NodeJS`_. Node 4 or higher is recommended.
After you have installed these things, to install just run: ``npm install --save --msvs_version=2015 discord.js`` to install the latest version of discord.js for your project.
Additional Audio Support
~~~~~~~~~~~~~~~~~~~~~~~~
- Install `ffmpeg`_ and add it to your PATH.
-----------
Linux (Debian-based)
-----
-----------
- You (obviously) need `NodeJS Linux`_. Node 4 or higher is recommended.
.. code-block:: bash
$ sudo apt-get install build-essential
$ npm install --save discord.js
Additional Audio Support
~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash
$ sudo apt-get install ffmpeg
Note: Ubuntu 14.04 needs to do:
.. code-block:: bash
$ sudo add-apt-repository ppa:mc3man/trusty-media && sudo apt-get update && sudo apt-get install ffmpeg
.. _Visual Studio : https://www.visualstudio.com/downloads/download-visual-studio-vs
.. _Python 2.7 : https://www.python.org/download/releases/2.7.8/
.. _ffmpeg : https://www.ffmpeg.org/download.html
.. _NodeJS : https://nodejs.org/en/download/
.. _NodeJS Linux : https://nodejs.org/en/download/package-manager/

19
docs/logo.svg Normal file
View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="100%" width="100%" viewBox="0 0 6111.4378 1102.9827">
<g transform="translate(2539.6 -107.66)">
<g id="logo-discord" fill="#3d3f42" transform="translate(-44.194 1175.6)">
<path d="m-2495.4-1051.4v453.6 453.6l145.75-.37695c127.36-.3288 147.71-.58582 161.25-2.041 45.045-4.8398 76.353-11.233 111.79-22.826 44.217-14.465 83.672-35.567 118.71-63.49 13.615-10.851 40.444-37.567 50.889-50.674 37.186-46.665 61.816-98.191 78.01-163.2 23.57-94.614 23.154-219.66-1.0469-313.5-41.72-161.77-155.27-260-329.35-284.92-38.756-5.5479-34.464-5.4161-190.75-5.8086l-145.25-.3652zm161 130.09 41.75.0156c55.334.0205 78.397 1.6295 108.25 7.5566 105.75 20.995 171.57 87.554 196.39 198.59 12.878 57.6 14.716 139.6 4.5469 202.81-7.3952 45.963-21.469 87.286-40.711 119.53-12.041 20.179-33.82 45.681-51 59.719-38.627 31.563-87.98 50.255-148.73 56.326-9.5463.9541-32.361 1.7291-62.75 2.1328l-47.75.63477v-323.66-323.66z"/>
<path d="m-1631.4-597.85v-453.5h80.5 80.5v453.5 453.5h-80.5-80.5v-453.5z"/>
<path d="m-1008.4-128.41c-96.325-5.9603-189.36-41.918-264.54-102.25-15.565-12.49-33-28.526-33-30.352 0-.7224 20.622-25.63 45.826-55.351l45.826-54.038 3.8214 3.2697c17.83 15.256 22.538 19.151 29.616 24.501 48.673 36.79 103.35 61.169 158.92 70.862 18.387 3.2073 54.666 4.419 74.088 2.4745 41.751-4.1802 74.798-17.199 96.864-38.16 10.213-9.7012 15.896-17.429 21.626-29.408 17.4-36.376 13.152-81.77-10.39-111-16.357-20.31-45.054-37.907-98.696-60.521-41.654-17.56-164.15-71.537-176.19-77.638-85.541-43.335-134.63-104.27-148.9-184.84-2.6851-15.162-3.7276-49.931-1.9989-66.666 7.4631-72.25 48.261-136.63 113.09-178.46 41.81-26.976 88.546-43.103 144.99-50.03 20.52-2.5182 67.722-2.5268 88-.016 74.352 9.2063 141.74 36.296 199 79.999 18.772 14.327 37.632 31.435 36.864 33.44-.2001.52235-18.812 23.693-41.361 51.49l-40.997 50.54-3.503-2.9264c-1.9267-1.6095-9.4625-7.4505-16.746-12.98-44.158-33.522-88.429-52.307-140.26-59.513-17.665-2.4562-54.274-2.4782-70-.042-35.82 5.5488-61.303 16.869-80.113 35.588-17.506 17.422-26.238 37.587-27.528 63.576-1.3118 26.419 6.521 48.306 24.066 67.249 17.834 19.254 45.314 35.115 99.448 57.398 32.211 13.259 137.3 57.517 151.65 63.864 47.003 20.795 80.577 42.726 108.49 70.87 43.959 44.316 64.938 98.562 65.021 168.13.053 44.646-7.8058 78.816-26.734 116.23-12.46 24.632-27.741 45.114-49.45 66.28-51.458 50.172-122.59 79.937-208.86 87.392-17.502 1.5126-51.786 2.0335-67.962 1.0326z"/>
<path d="m-155.84-128.44c-100.7-5.7557-190.26-44.562-257.1-111.4-58.171-58.171-98.098-136.72-116.41-229.01-13.522-68.153-15.549-148.4-5.5195-218.5 13.11-91.624 47.506-173.73 99.29-237 11.342-13.858 35.64-38.591 49.282-50.164 54.726-46.425 120.9-76.546 193.88-88.256 25.873-4.1511 37.999-5.0552 67.977-5.0681 28.858-.013 38.31.6981 60.5 4.5485 70.566 12.245 140.29 49.396 192.89 102.78l6.8911 6.9936-2.8911 3.4607c-1.59 1.9034-21.52 24.408-44.288 50.011l-41.397 46.551-10.103-9.0797c-40.998-36.846-79.308-56.146-125.89-63.421-13.826-2.1591-48.594-2.4422-62.711-.51067-51.945 7.1074-94.856 27.696-131.17 62.933-64.806 62.887-97.854 165.12-92.829 287.16 2.697 65.505 14.091 119.1 35.16 165.38 30.027 65.96 77.365 110.94 138.03 131.16 24.572 8.1885 46.583 11.525 76.026 11.525 45.839 0 83.431-9.665 120.81-31.062 19.559-11.195 45.837-32.314 63.267-50.848 3.7379-3.9745 7.1554-7.0833 7.5942-6.9085 1.3142.5236 88.109 97.158 88.109 98.098 0 2.0843-41.684 42.322-54 52.126-73.043 58.146-157.48 84.1-255.41 78.503z"/>
<path d="m610.07-1067.8c-34.898-.056-47.464.862-75.232 5.4922-188.34 31.405-308.9 182.45-325.21 407.46-2.8044 38.675-2.2536 84.125 1.4941 123.38 9.2582 96.975 39.751 184.31 87.494 250.58 57.015 79.142 139.29 130.29 236.46 147 14.533 2.4988 40.496 5.3373 53.5 5.8496 147.12 5.7956 267.7-55.193 342.98-173.48 10.897-17.122 28.991-52.974 36.758-72.828 27.4-70.046 39.498-139.21 39.617-226.5.062-45.479-1.9339-73.343-7.9121-110.4-31.164-193.18-145.75-321-314.25-350.53-27.838-4.8789-41.445-5.9606-75.699-6.0156zm-1.4395 139.59c2.8062.0114 5.6199.0752 8.4395.19336 49.33 2.0671 91.449 18.361 127.46 49.305 12.954 11.133 20.363 19.102 31.482 33.861 40.99 54.409 62.709 125.93 66.582 219.25 4.5628 109.93-19.826 208.09-67.676 272.39-33.936 45.599-76.643 72.514-130.84 82.459-10.577 1.9408-50.92 2.8029-62 1.3242-74.694-9.9681-131.62-54.014-168.58-130.43-24.356-50.365-36.989-106.85-39.92-178.5-5.9652-145.81 37.791-262.31 118.61-315.79 33.933-22.452 74.357-34.245 116.45-34.074z"/>
<path d="m1187.6-1051.4v453.54 453.54h80.5 80.5v-177.51-177.51l68.717.25585 68.719.25782 97.531 177.22 97.533 177.22 90.285.0273c85.686.0268 90.237-.0599 89.336-1.7207-.5222-.9625-49.147-86.08-108.05-189.15-58.906-103.07-106.98-187.52-106.83-187.67.1497-.14971 5.5455-2.31 11.99-4.8008 92.947-35.923 149.28-103.8 164.7-198.43 3.4973-21.47 4.3763-36.845 3.7539-65.688-.8444-39.124-4.5518-62.293-14.883-93.008-29.696-88.286-106.44-143.03-224.91-160.44-38.597-5.6719-28.81-5.4157-221.14-5.7871l-177.75-.3438zm161 128.95 84.25.37695c91.298.40795 95.375.61732 123.75 6.3809 23.495 4.7723 45.38 13.215 61 23.533 15.167 10.019 29.716 27.182 37.475 44.207 14.573 31.978 16.395 82.735 4.3301 120.62-6.6274 20.814-16.172 36.615-31.18 51.625-27.567 27.57-66.814 42.804-121.93 47.324-7.3903.60617-43.437 1.0508-85.25 1.0508h-72.445v-147.56-147.56z"/>
<path d="m2014.6-1051.4v453.6 453.6l145.75-.37695c156.69-.4046 153.13-.29648 191.25-5.8008 38.321-5.5332 77.017-15.82 109.08-28.998 17.362-7.137 22.208-9.743 21.508-11.566-.3206-.8355-1.452-4.9721-2.5156-9.1914-3.4865-13.831-4.3718-23.482-3.7617-41.053.63-18.145 2.2913-27.3 7.7285-42.617 17.594-49.562 60.836-85.599 112.95-94.131 16.457-2.6941 38.955-1.8474 57.701 2.1719 3.6928.79178 3.1565 1.7476 11.26-20.041 27.066-72.775 38.169-169.68 30.476-265.97-14.239-178.25-95.276-299.81-236.97-355.47-33.122-13.01-69.539-22.404-108.45-27.975-38.756-5.5479-34.464-5.4161-190.75-5.8086l-145.25-.3652zm161 130.09 41.75.0156c55.334.0205 78.397 1.6295 108.25 7.5566 105.75 20.995 171.57 87.554 196.39 198.59 12.878 57.6 14.716 139.6 4.5469 202.81-7.3952 45.963-21.469 87.286-40.711 119.53-12.041 20.179-33.82 45.681-51 59.719-38.627 31.563-87.98 50.255-148.73 56.326-9.5463.9541-32.361 1.7291-62.75 2.1328l-47.75.63477v-323.66-323.66z"/>
</g>
<circle id="logo-dot" cx="2575.3" cy="939.96" r="125.4" fill="#499a6c"/>
<g id="logo-js" fill="#33b5e5" transform="translate(-44.194 1175.6)">
<path d="m2602.1 34.57c-57.094-4.6075-113.49-28.558-158.26-67.213-27.741-23.949-51.228-55.235-63.883-85.094-5.4804-12.93-5.926-15.992-2.3882-16.406 8.1404-.953 38.073-7.05 53.318-10.86 20.337-5.0831 29.827-8.2686 48.112-16.15 12.138-5.2318 12.996-5.46 14-3.7198 14.778 25.613 36.757 46.236 62.906 59.024 21.609 10.567 39.696 14.761 63.664 14.761 23.073 0 41.694-4.1466 61.73-13.746 36.584-17.528 62.542-46.884 75.844-85.772 2.3995-7.0151 7.5664-31.714 9.361-44.747 2.8753-20.881 3.0454-40.134 3.0555-345.75l.01-314.25h78 78v318.25c0 209.58-.3574 323.03-1.0389 332.25-4.4405 60.076-22.061 115.17-51.016 159.5-11.306 17.311-21.135 29.375-35.857 44.012-44.122 43.866-101.51 69.204-169.58 74.876-17.815 1.4842-53.463 2.0433-65.964 1.0344z"/>
<path d="m3256.6 33.535c-103.92-8.2588-202.14-50.771-278.59-120.57l-11.459-10.464 4.7737-5.6963c2.6255-3.133 23.371-27.615 46.101-54.405l41.327-48.709 11.068 9.6086c54.856 47.624 120.13 79.074 185.78 89.508 19.275 3.0634 60.816 3.3389 79 .5237 56.007-8.6707 91.978-30.946 109.48-67.793 5.7814-12.174 8.6772-25.17 9.2639-41.574 1.8511-51.755-20.009-81.836-81.241-111.79-10.45-5.1123-25.75-12.128-34-15.591-32.568-13.67-168.23-73.282-178.56-78.459-84.895-42.577-136.19-105.76-149.34-183.97-24.654-146.62 80.068-271.29 246.91-293.93 39.105-5.3065 82.999-4.2183 122.48 3.0365 76.174 13.996 145.21 48.561 201.87 101.07l7.367 6.8275-39.699 49c-21.834 26.95-40.537 49.863-41.563 50.918-1.8327 1.8856-1.9536 1.8424-7.1685-2.562-25.013-21.126-59.394-41.952-87.804-53.188-33.742-13.345-63.677-18.968-101.5-19.066-28.062-.0727-45.321 2.2-65.5 8.6248-40.117 12.773-65.445 37.309-74.612 72.282-3.4331 13.097-3.8978 33.664-1.0368 45.883 7.6067 32.488 29.949 55.7 75.674 78.622 15.123 7.5809 24.021 11.522 52.974 23.46 125.45 51.728 173.58 73.274 198.67 88.935 70.314 43.888 106.41 97.76 116.97 174.59 2.1563 15.683 2.4444 55.002.5056 69-7.9359 57.297-31.186 104.9-70.626 144.6-53.439 53.792-126.37 84.242-218.91 91.402-14.98 1.1588-53.385 1.0944-68.605-.1152z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@@ -1,263 +0,0 @@
@ECHO OFF
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set BUILDDIR=_build
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
set I18NSPHINXOPTS=%SPHINXOPTS% .
if NOT "%PAPER%" == "" (
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
)
if "%1" == "" goto help
if "%1" == "help" (
:help
echo.Please use `make ^<target^>` where ^<target^> is one of
echo. html to make standalone HTML files
echo. dirhtml to make HTML files named index.html in directories
echo. singlehtml to make a single large HTML file
echo. pickle to make pickle files
echo. json to make JSON files
echo. htmlhelp to make HTML files and a HTML help project
echo. qthelp to make HTML files and a qthelp project
echo. devhelp to make HTML files and a Devhelp project
echo. epub to make an epub
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
echo. text to make text files
echo. man to make manual pages
echo. texinfo to make Texinfo files
echo. gettext to make PO message catalogs
echo. changes to make an overview over all changed/added/deprecated items
echo. xml to make Docutils-native XML files
echo. pseudoxml to make pseudoxml-XML files for display purposes
echo. linkcheck to check all external links for integrity
echo. doctest to run all doctests embedded in the documentation if enabled
echo. coverage to run coverage check of the documentation if enabled
goto end
)
if "%1" == "clean" (
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
del /q /s %BUILDDIR%\*
goto end
)
REM Check if sphinx-build is available and fallback to Python version if any
%SPHINXBUILD% 2> nul
if errorlevel 9009 goto sphinx_python
goto sphinx_ok
:sphinx_python
set SPHINXBUILD=python -m sphinx.__init__
%SPHINXBUILD% 2> nul
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
:sphinx_ok
if "%1" == "html" (
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
goto end
)
if "%1" == "dirhtml" (
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
goto end
)
if "%1" == "singlehtml" (
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
goto end
)
if "%1" == "pickle" (
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the pickle files.
goto end
)
if "%1" == "json" (
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the JSON files.
goto end
)
if "%1" == "htmlhelp" (
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run HTML Help Workshop with the ^
.hhp project file in %BUILDDIR%/htmlhelp.
goto end
)
if "%1" == "qthelp" (
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run "qcollectiongenerator" with the ^
.qhcp project file in %BUILDDIR%/qthelp, like this:
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\discordjs.qhcp
echo.To view the help file:
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\discordjs.ghc
goto end
)
if "%1" == "devhelp" (
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished.
goto end
)
if "%1" == "epub" (
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The epub file is in %BUILDDIR%/epub.
goto end
)
if "%1" == "latex" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
if errorlevel 1 exit /b 1
echo.
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdf" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf
cd %~dp0
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdfja" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf-ja
cd %~dp0
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "text" (
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The text files are in %BUILDDIR%/text.
goto end
)
if "%1" == "man" (
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The manual pages are in %BUILDDIR%/man.
goto end
)
if "%1" == "texinfo" (
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
goto end
)
if "%1" == "gettext" (
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
goto end
)
if "%1" == "changes" (
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
if errorlevel 1 exit /b 1
echo.
echo.The overview file is in %BUILDDIR%/changes.
goto end
)
if "%1" == "linkcheck" (
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
if errorlevel 1 exit /b 1
echo.
echo.Link check complete; look for any errors in the above output ^
or in %BUILDDIR%/linkcheck/output.txt.
goto end
)
if "%1" == "doctest" (
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
if errorlevel 1 exit /b 1
echo.
echo.Testing of doctests in the sources finished, look at the ^
results in %BUILDDIR%/doctest/output.txt.
goto end
)
if "%1" == "coverage" (
%SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage
if errorlevel 1 exit /b 1
echo.
echo.Testing of coverage in the sources finished, look at the ^
results in %BUILDDIR%/coverage/python.txt.
goto end
)
if "%1" == "xml" (
%SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The XML files are in %BUILDDIR%/xml.
goto end
)
if "%1" == "pseudoxml" (
%SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
goto end
)
:end

View File

@@ -1,45 +0,0 @@
.. include:: ./vars.rst
Updating to v5.0.0
==================
If you're coming from versions below v5, you might find some changes. Here are the major changes:
Change 1
--------
.. code-block:: js
// OLD:
client.getUser();
client.getServer();
server.getMember(); // etc etc
// NEW:
client.users.get();
client.servers.get();
client.members.get();
Change 2
--------
.. code-block:: js
// OLD:
client.on("serverNewMember", (member, server) => {
});
// NEW:
client.on("serverNewMember", (server, user) => {
});
Change 3
---------
The Member Class has been removed, meaning you can't use ``member.permissionsIn(channel)``. To get permissions, use ``channel.permissionsOf(user)``.

113
docs/topics/voice.md Normal file
View File

@@ -0,0 +1,113 @@
# Introduction to Voice
Voice in discord.js can be used for many things, such as music bots, recording or relaying audio.
In discord.js, you can use voice by connecting to a `VoiceChannel` to obtain a `VoiceConnection`, where you can start streaming and receiving audio.
To get started, make sure you have:
* FFmpeg - `npm install ffmpeg-binaries`
* an opus encoder, choose one from below:
* `npm install opusscript`
* `npm install node-opus`
* a good network connection
The preferred opus engine is node-opus, as it performs significantly better than opusscript. When both are available, discord.js will automatically choose node-opus.
Using opusscript is only recommended for development environments where node-opus is tough to get working.
For production bots, using node-opus should be considered a necessity, especially if they're going to be running on multiple servers.
## Joining a voice channel
The example below reacts to a message and joins the sender's voice channel, catching any errors. This is important
as it allows us to obtain a `VoiceConnection` that we can start to stream audio with.
```js
const Discord = require('discord.js');
const client = new Discord.Client();
client.login('token here');
client.on('message', message => {
// Voice only works in guilds, if the message does not come from a guild,
// we ignore it
if (!message.guild) return;
if (message.content === '/join') {
// Only try to join the sender's voice channel if they are in one themselves
if (message.member.voiceChannel) {
message.member.voiceChannel.join()
.then(connection => { // Connection is an instance of VoiceConnection
message.reply('I have successfully connected to the channel!');
})
.catch(console.log);
} else {
message.reply('You need to join a voice channel first!');
}
}
});
```
## Streaming to a Voice Channel
In the previous example, we looked at how to join a voice channel in order to obtain a `VoiceConnection`. Now that we
have obtained a voice connection, we can start streaming audio to it. The following example shows how to stream an mp3
file:
**Playing a file:**
```js
// To play a file, we need to give an absolute path to it
const dispatcher = connection.playFile('C:/Users/Discord/Desktop/myfile.mp3');
```
Your file doesn't have to be just an mp3; ffmpeg can convert videos and audios of many formats.
The `dispatcher` variable is an instance of a `StreamDispatcher`, which manages streaming a specific resource to a voice
channel. We can do many things with the dispatcher, such as finding out when the stream ends or changing the volume:
```js
dispatcher.on('end', () => {
// The song has finished
});
dispatcher.on('error', e => {
// Catch any errors that may arise
console.log(e);
});
dispatcher.setVolume(0.5); // Set the volume to 50%
dispatcher.setVolume(1); // Set the volume back to 100%
console.log(dispatcher.time); // The time in milliseconds that the stream dispatcher has been playing for
dispatcher.pause(); // Pause the stream
dispatcher.resume(); // Carry on playing
dispatcher.end(); // End the dispatcher, emits 'end' event
```
If you have an existing [ReadableStream](https://nodejs.org/api/stream.html#stream_readable_streams),
this can also be used:
**Playing a ReadableStream:**
```js
connection.playStream(myReadableStream);
// If you don't want to use absolute paths, you can use
// fs.createReadStream to circumvent it
const fs = require('fs');
const stream = fs.createReadStream('./test.mp3');
connection.playStream(stream);
```
It's important to note that creating a readable stream to a file is less efficient than simply using `connection.playFile()`.
**Playing anything else:**
For anything else, such as a URL to a file, you can use `connection.playArbitraryInput()`. You should consult the [ffmpeg protocol documentation](https://ffmpeg.org/ffmpeg-protocols.html) to see what you can use this for.
```js
// Play an mp3 from a URL
connection.playArbitraryInput('http://mysite.com/sound.mp3');
```
Again, playing a file from a URL like this is more performant than creating a ReadableStream to the file.
## Advanced Topics
soon:tm:

38
docs/topics/web.md Normal file
View File

@@ -0,0 +1,38 @@
# Web builds
In addition to your usual Node applications, discord.js has special distributions available that are capable of running in web browsers.
This is useful for client-side web apps that need to interact with the Discord API.
[Webpack 3](https://webpack.js.org/) is used to build these.
## Usage
You can obtain your desired version of discord.js' web build from the [webpack branch](https://github.com/discordjs/discord.js/tree/webpack) of the GitHub repository.
There is a file for each branch and version of the library, and the ones ending in `.min.js` are minified to substantially reduce the size of the source code.
Include the file on the page just as you would any other JS library, like so:
```html
<script type="text/javascript" src="discord.VERSION.min.js"></script>
```
Rather than importing discord.js with `require('discord.js')`, the entire `Discord` object is available as a global (on the `window`) object.
The usage of the API isn't any different from using it in Node.js.
## Restrictions
- Any voice-related functionality is unavailable, as there is currently no audio encoding/decoding capabilities without external native libraries,
which web browsers do not support.
- The ShardingManager cannot be used, since it relies on being able to spawn child processes for shards.
- None of the optional packages are usable, since they're native libraries.
## Example
```html
<script type="text/javascript" src="discord.11.4.1.min.js"></script>
<script type="text/javascript">
const client = new Discord.Client();
client.on('message', msg => {
const guildTag = msg.channel.type === 'text' ? `[${msg.guild.name}]` : '[DM]';
const channelTag = msg.channel.type === 'text' ? `[#${msg.channel.name}]` : '';
console.log(`${guildTag}${channelTag} ${msg.author.tag}: ${msg.content}`);
});
client.login('some crazy token');
</script>
```

View File

@@ -1,51 +0,0 @@
.. include:: ./vars.rst
Troubleshooting
===============
General
-------
Occasionally, the API can stop working for whatever reason. If it was working previously and it stopped working on the same version, it means that either we screwed code up or there's been a change to the Discord API. You can try asking around in the `discord.js channel in the API server`_. You could also `make an issue`_ if one relating to a similar issue doesn't exist. Please post a stacktrace if there is one, and be as detailed as possible - *"the API isn't working"* doesn't help at all.
If there is already an issue, feel free to comment that you're also experiencing the same thing. This helps to see how widespread the bug is.
You can try reconnecting before submitting an issue, as sometimes some of the servers may be slightly different.
If you're your bot or client is exiting unexpectedly with no error, this is likely caused by websocket disconnects. Make sure you have ``autoReconnect`` enabled. See `Client`_.
Voice
------
Often, especially if you're on Windows, voice will not work out of the box.
Follow the steps below, one by one.
- Is your system supported? The following are:
- Linux x64 & ia32
- Linux ARM (Raspberry Pi 1 & 2)
- Mac OS X x64
- Windows x64
- Did you install Python 2.7.x correctly? Is it in your PATH? ``python -V``. If not, install it correctly or try reinstalling.
- **Windows** - See https://python.org/downloads/
- **Linux / Mac OS** - Unix systems should already have it installed, but if not, use the OS's package manager
- Did you install FFMPEG correctly? Is it in your PATH? ``ffmpeg -version``. If not, install it correctly or try reinstalling.
- **Windows** - `Follow this guide`_
- **Linux / Mac OS** - Use your OS's package manager
- Did you install the required C++ compiler tool for your OS? If not, install the corresponding program, **then** try reinstalling discord.js ``npm i -S discord.js``
- **Windows** - `Visual Studio 2015`_ with `C++ Support enabled`_
- **Linux** - build-essential
- **Mac OS** - Xcode CLI tools
If you're still having problems try
- ``npm cache clean``
- ``npm config set msvs_version 2015``
- ``npm i -S discord.js``
If nothing of the above helped, feel free to jump on the `discord.js channel in the API server`_
.. _discord.js channel in the API server : https://discord.gg/0SBTUU1wZTYcFtmP
.. _make an issue : https://github.com/hydrabolt/discord.js/issues
.. _Follow this guide : http://adaptivesamples.com/how-to-install-ffmpeg-on-windows/
.. _Visual Studio 2015 : https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx
.. _C++ Support enabled : https://social.msdn.microsoft.com/Forums/getfile/740020

View File

@@ -1,35 +0,0 @@
.. _Client : ./docs_client.html
.. _Cache : ./docs_cache.html
.. _User : ./docs_user.html
.. _Users : ./docs_user.html
.. _Server : ./docs_server.html
.. _Channel : ./docs_channel.html
.. _ServerChannel : ./docs_serverchannel.html
.. _TextChannel : ./docs_textchannel.html
.. _VoiceChannel : ./docs_voicechannel.html
.. _PMChannel : ./docs_pmchannel.html
.. _Message : ./docs_message.html
.. _Invite : ./docs_invite.html
.. _Equality : ./docs_equality.html
.. _Role : ./docs_role.html
.. _ChannelPermissions : ./docs_channelpermissions.html
.. _PermissionOverwrite : ./docs_permissionoverwrite.html
.. _Permission Constants : ./docs_permissionconstants.html
.. _Resolvables : ./docs_resolvables.html
.. _VoiceConnection : ./docs_voiceconnection.html
.. _Promises : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise
.. _Template Literals : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
.. _EventEmitter : https://nodejs.org/api/events.html#events_class_events_eventemitter
.. _Channel Resolvable : http://discordjs.readthedocs.org/en/indev/docs_resolvables.html#channel-resolvable
.. _String Resolvable : http://discordjs.readthedocs.org/en/indev/docs_resolvables.html#string-resolvable
.. _Message Resolvable : http://discordjs.readthedocs.org/en/indev/docs_resolvables.html#message-resolvable
.. _Server Resolvable : http://discordjs.readthedocs.org/en/indev/docs_resolvables.html#server-resolvable
.. _Invite Resolvable : http://discordjs.readthedocs.org/en/indev/docs_resolvables.html#invite-id-resolvable
.. _User Resolvable : http://discordjs.readthedocs.org/en/indev/docs_resolvables.html#user-resolvable
.. _Base64 Resolvable : http://discordjs.readthedocs.org/en/indev/docs_resolvables.html#base64-resolvable
.. _VoiceChannel Resolvable : http://discordjs.readthedocs.org/en/indev/docs_resolvables.html#voice-channel-resolvable
.. _File Resolvable : http://discordjs.readthedocs.org/en/indev/docs_resolvables.html#file-resolvable
.. _Role Resolvable : http://discordjs.readthedocs.org/en/indev/docs_resolvables.html#role-resolvable
.. _My Applications : https://discordapp.com/developers/applications/me

View File

@@ -1,39 +0,0 @@
/* global process */
/*
this is the entrypoint file, when node finally catches
up with all ES6 drafts etc, the entrypoint file will stop
using the transpiled ES5 and switch straight to the ES6
code. This allows for easier debugging and potentially
faster execution!
*/
var v = process.version;
if(v.charAt(0) === "v"){
v = v.substring(1);
}
v = v.split(".");
var major = parseInt(v[0]),
minor = parseInt(v[1]),
patch = parseInt(v[2]);
if((major == 0 && minor < 12) || (major == 0 && minor == 12 && patch < 7)) {
if(!process.env.OVERRIDE_DISCORD_MIN_VERSION) {
throw new Error(
"discord.js doesn't support node versions less than 0.12.7.\n"+
"If you /really/ want to run it on this node " + process.version + ", then set OVERRIDE_DISCORD_MIN_VERSION as an environment variable.\n"+
"This is unsupported and WILL cause problems."
)
}
}
// at the moment no node version has full ES6 support
use5();
function use6(){
module.exports = require("./src/index.js");
}
function use5(){
module.exports = require("./lib/index.js");
}

View File

@@ -1,4 +0,0 @@
{
"source": "./src",
"destination": "./esdoc"
}

View File

@@ -1,3 +0,0 @@
# Analysis Bot
Analysis Bot provides Analysis and Utility to Discord Users!

View File

@@ -1,161 +0,0 @@
/* global process */
var Discord = require("../../");
var bot = new Discord.Client();
var auth = require("../auth.json");
var request = require("superagent");
var loose = false;
bot.on("message", msg => {
if (!msg.content.startsWith("$")) return;
msg.content = msg.content.substr(1);
if (msg.content === "stats") {
msg.reply([
"I am connected/have access to:",
`${bot.servers.length} servers`,
`${bot.channels.length} channels`,
`${bot.users.length} users`,
]);
}
else if (msg.content.startsWith("startplaying")) {
var game = msg.content.split(" ").slice(1).join(" ");
bot.setPlayingGame(game);
}
else if (msg.content.startsWith("setname") && loose) {
bot.setUsername(msg.content.split(" ").slice(1).join(" ")).then(() => {
msg.reply("Done!");
});
}
else if (msg.content === "updateav") {
request
.get("https://api.github.com/search/repositories?q=discord.js")
.end((err, res) => {
if (err) {
return;
}
var text = res.body.items[0].stargazers_count
bot.updateDetails({
username : "d.js star bot - " + text,
avatar: getStars(text)
}).then(() => {
msg.reply("Success!");
});
});
}
else if (msg.content.startsWith("setavatar") && loose) {
request
.get(msg.content.split(" ")[1])
.end((err, res) => {
bot.updateDetails({
avatar: getStars(text)
}).then(() => {
msg.reply("done!");
});
});
}
else if (msg.content === "away") {
bot.setStatusIdle();
}
else if (msg.content === "here") {
bot.setStatusOnline();
}
else if (msg.content === "randomUser") {
var random = bot.users.random();
msg.reply([
random.username,
"avatar: ", random.avatarURL
]);
}
else if (msg.content.startsWith("mimic") && loose) {
var toMimic = msg.mentions[0];
if (!toMimic) {
return;
}
if (!toMimic.avatar) {
bot.updateDetails({
username: toMimic.username,
avatar: null
});
return;
}
request
.get(toMimic.avatarURL)
.end((err, res) => {
bot.updateDetails({
username: toMimic.username,
avatar: res.body
}).then(() => {
msg.reply("Done!");
});
});
}
});
setInterval(() => {
request
.get("https://api.github.com/search/repositories?q=discord.js")
.end((err, res) => {
if (err) {
return;
}
var text = res.body.items[0].stargazers_count
bot.updateDetails({
username : "d.js star bot - " + text,
avatar: getStars(text)
}).then(() => {
console.log("many successes");
});
});
}, 60000);
bot.on("disconnected", () => {
console.log("Disconnected, exiting!");
process.exit();
})
bot.loginWithToken(auth.token);
function getStars(text) {
var Canvas = require('canvas')
, Image = Canvas.Image
, canvas = new Canvas(90, 90)
, ctx = canvas.getContext('2d');
ctx.fillStyle = "black";
ctx.fillRect(0, 0, 90, 90);
ctx.font = '45px Arial';
ctx.fillStyle = "white";
ctx.fillText(text, (ctx.measureText(text).width / 2) - 5, 60);
ctx.strokeStyle = 'rgb(255,255,255)';
return canvas.toDataURL();
}

View File

@@ -1,3 +0,0 @@
{
"token": "Your bot token here"
}

View File

@@ -1,31 +0,0 @@
/*
this bot is an avatar bot, and will give a user their avatar's URL
*/
var Discord = require("../");
var AuthDetails = require("./auth.json");
var bot = new Discord.Client();
bot.on("ready", () => {
console.log(`Ready to begin! Serving in ${bot.channels.length} channels`);
});
bot.on("disconnected", () => {
console.log("Disconnected!");
process.exit(1); //exit node.js with an error
});
bot.on("message", (msg) => {
// if the message is avatar
if (msg.content === "avatar") {
bot.reply(msg, "Here is the URL for your avatar: " + msg.author.avatarURL);
}
});
bot.loginWithToken(AuthDetails.token);

View File

@@ -1,5 +0,0 @@
{
"compilerOptions": {
"target": "ES6"
}
}

View File

@@ -1,72 +0,0 @@
var Discord = require("../../");
// Get the token
var AuthDetails = require("../auth.json");
var bot = new Discord.Client();
bot.on("ready", function () {
console.log(`Ready to begin! Serving in ${bot.channels.length} channels`);
});
bot.on("disconnected", function () {
console.log("Disconnected!");
process.exit(1); //exit node.js with an error
});
bot.on("message", function (msg) {
if (msg.content === "skype") {
//stop the user from speaking in the channel:
bot.overwritePermissions(msg.channel, msg.author, {
sendMessages: false
});
// send a barely funny message ;)
bot.reply(msg, "How dare you mention that!");
}
if (msg.content === "discord") {
var role = msg.server.roles.get("name", "good people");
// if the role doesn't exist, make it
if (!role) {
bot.createRole(msg.server, {
name: "good people",
color: "0000FF", // blue
hoist: true // make a seperate category in the users list
}).then(createdRole => {
role = createdRole;
}).catch(console.log);
}
bot.addMemberToRole(msg.author, role);
bot.reply(msg, "Welcome to the good people!");
}
if (msg.content === "remove me") {
// remove the user from the good people list, if it exists
var role = msg.server.roles.get("name", "good people");
if (role) { // if the role exists
if (msg.author.hasRole(role)) {
// remove the member from the role
bot.removeMemberFromRole(msg.author, role);
bot.reply(msg, "Removed!")
} else {
bot.reply(msg, "You're not in the role!");
}
} else {
// role doesn't exist
bot.reply(msg, "The role doesn't even exist!");
}
}
});
bot.loginWithToken(AuthDetails.token);

View File

@@ -1,73 +0,0 @@
/*
this bot will demonstrate the different ways you
can create colors in Discord.
*/
var Discord = require("../../");
// Get the email and password
var AuthDetails = require("../auth.json");
var bot = new Discord.Client();
bot.on("ready", function () {
console.log("Ready to begin! Serving in " + bot.channels.length + " channels");
});
bot.on("disconnected", function () {
console.log("Disconnected!");
process.exit(1); //exit node.js with an error
});
bot.on("message", function (msg) {
// to use this example, you first have to send 'create role'
// you can then change colors afterwards.
if (msg.content === "create role") {
// create the role and add the user to it
bot.createRole(msg.server, {
name: "Custom Colors",
hoist: true, // so it is visible in the members list
}).then(createdRole => { // this is executed when the role has been created
// adds the sernder to the role
bot.addMemberToRole(msg.author, createdRole).then(() => {
bot.reply(msg, "Added you to the role!");
});
});
}
else if (msg.content.startsWith("custom color")) {
// valid custom colors must follow the format of any of the following:
/*
#ff0000 <- valid 7 digit hex (including #)
ff0000 <- valid 6 digit hex
16711680 <- valid decimal number (this if #ff0000 as a decimal)
*/
var colorName = msg.content.split(" ")[2];
// get the role by its name
var role = msg.server.roles.get("name", "Custom Colors");
// updates the role with the given color
bot.updateRole(role, {
color: colorName
}).then(function (role) {
// this executes if the change was successful
bot.reply(msg, "Done! Using the color " + colorName);
}).catch(function (e) {
// this executes if it wasn't successful
bot.reply(msg, "An error occurred. Was that a valid hex/dec color?");
});
}
});
bot.loginWithToken(AuthDetails.token);

View File

@@ -1,46 +0,0 @@
/* this bot will see if a user can send TTS messages */
var Discord = require("../../");
var AuthDetails = require("../auth.json");
var bot = new Discord.Client();
bot.on("ready", () => {
console.log("Ready to begin!");
});
bot.on("message", (msg) => {
var user = msg.author;
if(msg.content === "can I tts?"){
// get the evaluated permissions for a user in the channel they asked
var permissions = msg.channel.permissionsOf(user);
if(permissions.sendTTSMessages)
bot.reply(msg, "You ***can*** send TTS messages.");
else
bot.reply(msg, "You ***can't*** send TTS messages.");
} else if(msg.content === "what are my full permissions?") {
// get the serialised permissions of the user
var permissions = msg.channel.permissionsOf(user).serialise();
// if you want to stringify permissions, they need to be serialised first.
bot.reply(msg, JSON.stringify(permissions, null, 4).replace(/true/g, "**true**"));
}
/*
for a list of more permissions, go to
http://discordjs.readthedocs.io/en/indev/docs_permissionconstants.html
*/
})
bot.loginWithToken(AuthDetails.token);

View File

@@ -1,40 +0,0 @@
/*
This bot is a ping pong bot, and every time a message
beginning with "ping" is sent, it will reply with
"pong!".
*/
var Discord = require("../");
// Get the email and password
var AuthDetails = require("./auth.json");
var bot = new Discord.Client();
//when the bot is ready
bot.on("ready", () => {
console.log(`Ready to begin! Serving in ${bot.channels.length} channels`);
});
//when the bot disconnects
bot.on("disconnected", () => {
//alert the console
console.log("Disconnected!");
//exit node.js with an error
process.exit(1);
});
//when the bot receives a message
bot.on("message", msg => {
//if message begins with "ping"
if (msg.content.startsWith("ping")) {
//send a message to the channel the ping message was sent in.
bot.sendMessage(msg, "pong!");
//alert the console
console.log("pong-ed " + msg.author.username);
}
});
bot.loginWithToken(AuthDetails.token);

View File

@@ -1,30 +0,0 @@
/* this bot will send an image to a channel */
var Discord = require("../");
var AuthDetails = require("./auth.json");
var bot = new Discord.Client();
bot.on("ready", () => {
console.log("Ready to begin!");
});
bot.on("message", (msg) => {
if (msg.content === "photos") {
bot.sendFile(msg, "./test/image.png", "photo.png", (err, sentMessage) => {
if (err)
console.log("Couldn't send image: ", err);
});
}
else if (msg.content === "file") {
bot.sendFile(msg.channel, new Buffer("Text in a file!"), "file.txt", (err, sentMessage) => {
if (err)
console.log("Couldn't send file: ", err)
});
}
});
bot.loginWithToken(AuthDetails.token);

View File

@@ -1,31 +0,0 @@
var Discord = require('discord.js');
const token = ''; // token for bot login
//when the bot is ready
bot.on("ready", () => {
console.log(`Ready to begin! Serving in ${bot.channels.length} channels`);
});
//when the bot disconnects
bot.on("disconnected", () => {
//alert the console
console.log("Disconnected!");
//exit node.js with an error
process.exit(1);
});
//when the bot receives a message
bot.on("message", msg => {
//if message begins with "ping"
if (msg.content.startsWith("ping")) {
//send a message to the channel the ping message was sent in.
bot.sendMessage(msg, "pong!");
//alert the console
console.log("pong-ed " + msg.author.username);
}
});
bot.loginWithToken(token);

View File

@@ -1,53 +0,0 @@
module.exports = function (grunt) {
require('load-grunt-tasks')(grunt);
grunt.initConfig({
pkg: grunt.file.readJSON("package.json"),
// define source files and their destinations
babel: {
options: {
loose: "all",
compact: !grunt.option('dev')
},
dist: {
files: [{
expand: true,
cwd: "src/",
src: ["**/**.*"],
dest: "lib/",
ext: ".js"
}]
}
},
browserify: {
dist: {
files: {
'web-dist/discord.<%= pkg.version %>.js': ["lib/index.js"],
},
options: {
browserifyOptions: {
standalone: "Discord"
}
}
}
},
uglify: {
min: {
files: {
"./web-dist/discord.min.<%= pkg.version %>.js": "./web-dist/discord.<%= pkg.version %>.js"
}
}
}
});
// load plugins
grunt.loadNpmTasks('grunt-browserify');
grunt.loadNpmTasks('grunt-contrib-uglify');
// register at least this one task
grunt.registerTask('default', ['babel']);
grunt.registerTask('web', ['browserify', "uglify"]);
grunt.registerTask("dist", ["babel", "browserify", "uglify"])
};

View File

@@ -1,6 +0,0 @@
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +0,0 @@
"use strict";
exports.__esModule = true;
exports["default"] = {
IDLE: 0,
LOGGING_IN: 1,
LOGGED_IN: 2,
READY: 3,
DISCONNECTED: 4
};
module.exports = exports["default"];

File diff suppressed because it is too large Load Diff

View File

@@ -1,382 +0,0 @@
"use strict";
/* global Buffer */
/**
* Resolves supplied data type to a Channel. If a String, it should be a Channel ID.
* @typedef {(Channel|Server|Message|User|String)} ChannelResolvable
*/
/**
* Resolves supplied data type to a TextChannel or PMChannel. If a String, it should be a Channel ID.
* @typedef {(TextChannel|PMChannel|Server|Message|User|String)} TextChannelResolvable
*/
/**
* If given an array, turns it into a newline-separated string.
* @typedef {(String|Array)} StringResolvable
*/
/**
* Resolves supplied data type to a Message. If a channel, it is the latest message from that channel.
* @typedef {(Message|TextChannel|PMChannel)} MessageResolvable
*/
/**
* Resolves supplied data type to a Server. If a String, it should be the server's ID.
* @typedef {(Server|ServerChannel|Message|String)} ServerResolvable
*/
/**
* Resolves supplied data type to something that can be attached to a message. If a String, it can be an URL or a path to a local file.
* @typedef {(String|ReadableStream|Buffer)} FileResolvable
*/
/**
* Resolves supplied data type to an invite ID. If a String, it should be an ID or a direct URL to the invite.
* @typedef {(Invite|String)} InviteIDResolvable
*/
exports.__esModule = true;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var _fs = require("fs");
var _fs2 = _interopRequireDefault(_fs);
var _superagent = require("superagent");
var _superagent2 = _interopRequireDefault(_superagent);
var _StructuresUser = require("../../Structures/User");
var _StructuresUser2 = _interopRequireDefault(_StructuresUser);
var _StructuresChannel = require("../../Structures/Channel");
var _StructuresChannel2 = _interopRequireDefault(_StructuresChannel);
var _StructuresTextChannel = require("../../Structures/TextChannel");
var _StructuresTextChannel2 = _interopRequireDefault(_StructuresTextChannel);
var _StructuresVoiceChannel = require("../../Structures/VoiceChannel");
var _StructuresVoiceChannel2 = _interopRequireDefault(_StructuresVoiceChannel);
var _StructuresServerChannel = require("../../Structures/ServerChannel");
var _StructuresServerChannel2 = _interopRequireDefault(_StructuresServerChannel);
var _StructuresPMChannel = require("../../Structures/PMChannel");
var _StructuresPMChannel2 = _interopRequireDefault(_StructuresPMChannel);
var _StructuresRole = require("../../Structures/Role");
var _StructuresRole2 = _interopRequireDefault(_StructuresRole);
var _StructuresServer = require("../../Structures/Server");
var _StructuresServer2 = _interopRequireDefault(_StructuresServer);
var _StructuresMessage = require("../../Structures/Message");
var _StructuresMessage2 = _interopRequireDefault(_StructuresMessage);
var _StructuresInvite = require("../../Structures/Invite");
var _StructuresInvite2 = _interopRequireDefault(_StructuresInvite);
var _VoiceVoiceConnection = require("../../Voice/VoiceConnection");
var _VoiceVoiceConnection2 = _interopRequireDefault(_VoiceVoiceConnection);
var Resolver = (function () {
function Resolver(internal) {
_classCallCheck(this, Resolver);
this.internal = internal;
}
Resolver.prototype.resolveToBase64 = function resolveToBase64(resource) {
if (resource instanceof Buffer) {
resource = resource.toString("base64");
resource = "data:image/jpg;base64," + resource;
}
return resource;
};
Resolver.prototype.resolveInviteID = function resolveInviteID(resource) {
if (resource instanceof _StructuresInvite2["default"]) {
return resource.id;
}
if (typeof resource === "string" || resource instanceof String) {
if (resource.indexOf("http") === 0) {
var split = resource.split("/");
return split.pop();
}
return resource;
}
return null;
};
Resolver.prototype.resolveServer = function resolveServer(resource) {
if (resource instanceof _StructuresServer2["default"]) {
return resource;
}
if (resource instanceof _StructuresServerChannel2["default"]) {
return resource.server;
}
if (resource instanceof String || typeof resource === "string") {
return this.internal.servers.get("id", resource);
}
if (resource instanceof _StructuresMessage2["default"]) {
if (resource.channel instanceof _StructuresTextChannel2["default"]) {
return resource.channel.server;
}
}
return null;
};
Resolver.prototype.resolveRole = function resolveRole(resource) {
if (resource instanceof _StructuresRole2["default"]) {
return resource;
}
if (resource instanceof String || typeof resource === "string") {
var role = null;
for (var _iterator = this.internal.servers, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var server = _ref;
if (role = server.roles.get("id", resource)) {
return role;
}
}
}
return null;
};
Resolver.prototype.resolveFile = function resolveFile(resource) {
if (typeof resource === "string" || resource instanceof String) {
if (/^https?:\/\//.test(resource)) {
return new Promise(function (resolve, reject) {
_superagent2["default"].get(resource).buffer().parse(function (res, cb) {
res.setEncoding("binary");
res.data = "";
res.on("data", function (chunk) {
res.data += chunk;
});
res.on("end", function () {
cb(null, new Buffer(res.data, "binary"));
});
}).end(function (err, res) {
if (err) {
return reject(err);
}
return resolve(res.body);
});
});
} else {
return Promise.resolve(resource);
}
}
return Promise.resolve(resource);
};
Resolver.prototype.resolveMentions = function resolveMentions(resource, channel) {
var _mentions = [];
var changed = resource;
for (var _iterator2 = resource.match(/<@\!?[0-9]+>/g) || [], _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref2;
if (_isArray2) {
if (_i2 >= _iterator2.length) break;
_ref2 = _iterator2[_i2++];
} else {
_i2 = _iterator2.next();
if (_i2.done) break;
_ref2 = _i2.value;
}
var mention = _ref2;
// username mention
if (mention[2] === '!') {
var user = this.internal.users.get("id", mention.substring(3, mention.length - 1));
if (user) {
_mentions.push(user);
var details = channel.server && channel.server.detailsOf(user);
if (details) {
changed = changed.replace(new RegExp(mention, "g"), "@" + (details.nick || user.username + "#" + user.discriminator));
}
}
} else {
var user = this.internal.users.get("id", mention.substring(2, mention.length - 1));
if (user) {
_mentions.push(user);
changed = changed.replace(new RegExp(mention, "g"), "@" + (user.username + "#" + user.discriminator));
}
}
}
if (channel && channel.server && channel.server.roles) {
for (var _iterator3 = resource.match(/<@&[0-9]+>/g) || [], _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
var _ref3;
if (_isArray3) {
if (_i3 >= _iterator3.length) break;
_ref3 = _iterator3[_i3++];
} else {
_i3 = _iterator3.next();
if (_i3.done) break;
_ref3 = _i3.value;
}
var mention = _ref3;
// role mention
var role = channel.server.roles.get("id", mention.substring(3, mention.length - 1));
if (role) {
changed = changed.replace(new RegExp(mention, "g"), "@" + role.name);
}
}
}
for (var _iterator4 = resource.match(/<#[0-9]+>/g) || [], _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
var _ref4;
if (_isArray4) {
if (_i4 >= _iterator4.length) break;
_ref4 = _iterator4[_i4++];
} else {
_i4 = _iterator4.next();
if (_i4.done) break;
_ref4 = _i4.value;
}
var mention = _ref4;
// channel mention
var channel = this.internal.channels.get("id", mention.substring(2, mention.length - 1));
if (channel) {
changed = changed.replace(new RegExp(mention, "g"), "#" + channel.name);
}
}
return [_mentions, changed];
};
Resolver.prototype.resolveString = function resolveString(resource) {
// accepts Array, Channel, Server, User, Message, String and anything
// toString()-able
if (resource instanceof Array) {
resource = resource.join("\n");
}
return resource.toString();
};
Resolver.prototype.resolveUser = function resolveUser(resource) {
/*
accepts a Message, Channel, Server, String ID, User, PMChannel
*/
if (resource instanceof _StructuresUser2["default"]) {
return resource;
}
if (resource instanceof _StructuresMessage2["default"]) {
return resource.author;
}
if (resource instanceof _StructuresTextChannel2["default"]) {
var lmsg = resource.lastMessage;
if (lmsg) {
return lmsg.author;
}
}
if (resource instanceof _StructuresServer2["default"]) {
return resource.owner;
}
if (resource instanceof _StructuresPMChannel2["default"]) {
return resource.recipient;
}
if (resource instanceof String || typeof resource === "string") {
return this.internal.users.get("id", resource);
}
return null;
};
Resolver.prototype.resolveMessage = function resolveMessage(resource) {
// accepts a Message, PMChannel & TextChannel
if (resource instanceof _StructuresTextChannel2["default"] || resource instanceof _StructuresPMChannel2["default"]) {
return resource.lastMessage;
}
if (resource instanceof _StructuresMessage2["default"]) {
return resource;
}
return null;
};
Resolver.prototype.resolveChannel = function resolveChannel(resource) {
/*
accepts a Message, Channel, VoiceConnection, Server, String ID, User
*/
if (resource instanceof _StructuresMessage2["default"]) {
return Promise.resolve(resource.channel);
}
if (resource instanceof _StructuresChannel2["default"]) {
return Promise.resolve(resource);
}
if (resource instanceof _VoiceVoiceConnection2["default"]) {
return Promise.resolve(resource.voiceChannel);
}
if (resource instanceof _StructuresServer2["default"]) {
return Promise.resolve(resource.defaultChannel);
}
if (resource instanceof String || typeof resource === "string") {
var user = this.internal.users.get("id", resource);
if (user) {
resource = user;
} else {
return Promise.resolve(this.internal.channels.get("id", resource) || this.internal.private_channels.get("id", resource));
}
}
if (resource instanceof _StructuresUser2["default"]) {
// see if a PM exists
for (var _iterator5 = this.internal.private_channels, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
var _ref5;
if (_isArray5) {
if (_i5 >= _iterator5.length) break;
_ref5 = _iterator5[_i5++];
} else {
_i5 = _iterator5.next();
if (_i5.done) break;
_ref5 = _i5.value;
}
var pmchat = _ref5;
if (pmchat.recipient.equals(resource)) {
return Promise.resolve(pmchat);
}
}
// PM does not exist :\
return this.internal.startPM(resource);
}
var error = new Error("Could not resolve channel");
error.resource = resource;
return Promise.reject(error);
};
return Resolver;
})();
exports["default"] = Resolver;
module.exports = exports["default"];

View File

@@ -1,161 +0,0 @@
"use strict";
exports.__esModule = true;
var Constants = {};
var API = Constants.API = "https://discordapp.com/api";
var CDN = Constants.CDN = "https://cdn.discordapp.com";
var Endpoints = Constants.Endpoints = {
// general endpoints
LOGIN: API + "/auth/login",
LOGOUT: API + "/auth/logout",
ME: API + "/users/@me",
ME_CHANNELS: API + "/users/@me/channels",
ME_SERVER: function ME_SERVER(serverID) {
return Endpoints.ME + "/guilds/" + serverID;
},
OAUTH2_APPLICATION: function OAUTH2_APPLICATION(appID) {
return API + "/oauth2/applications/" + appID;
},
ME_NOTES: API + "/users/@me/notes",
GATEWAY: API + "/gateway",
AVATAR: function AVATAR(userID, avatar) {
return API + "/users/" + userID + "/avatars/" + avatar + ".jpg";
},
INVITE: function INVITE(id) {
return API + "/invite/" + id;
},
// emojis
EMOJI: function EMOJI(emojiID) {
return CDN + "/emojis/" + emojiID + ".png";
},
// servers
SERVERS: API + "/guilds",
SERVER: function SERVER(serverID) {
return Endpoints.SERVERS + "/" + serverID;
},
SERVER_ICON: function SERVER_ICON(serverID, hash) {
return Endpoints.SERVER(serverID) + "/icons/" + hash + ".jpg";
},
SERVER_PRUNE: function SERVER_PRUNE(serverID) {
return Endpoints.SERVER(serverID) + "/prune";
},
SERVER_EMBED: function SERVER_EMBED(serverID) {
return Endpoints.SERVER(serverID) + "/embed";
},
SERVER_INVITES: function SERVER_INVITES(serverID) {
return Endpoints.SERVER(serverID) + "/invites";
},
SERVER_ROLES: function SERVER_ROLES(serverID) {
return Endpoints.SERVER(serverID) + "/roles";
},
SERVER_BANS: function SERVER_BANS(serverID) {
return Endpoints.SERVER(serverID) + "/bans";
},
SERVER_INTEGRATIONS: function SERVER_INTEGRATIONS(serverID) {
return Endpoints.SERVER(serverID) + "/integrations";
},
SERVER_MEMBERS: function SERVER_MEMBERS(serverID) {
return Endpoints.SERVER(serverID) + "/members";
},
SERVER_CHANNELS: function SERVER_CHANNELS(serverID) {
return Endpoints.SERVER(serverID) + "/channels";
},
// channels
CHANNELS: API + "/channels",
CHANNEL: function CHANNEL(channelID) {
return Endpoints.CHANNELS + "/" + channelID;
},
CHANNEL_MESSAGES: function CHANNEL_MESSAGES(channelID) {
return Endpoints.CHANNEL(channelID) + "/messages";
},
CHANNEL_INVITES: function CHANNEL_INVITES(channelID) {
return Endpoints.CHANNEL(channelID) + "/invites";
},
CHANNEL_TYPING: function CHANNEL_TYPING(channelID) {
return Endpoints.CHANNEL(channelID) + "/typing";
},
CHANNEL_PERMISSIONS: function CHANNEL_PERMISSIONS(channelID) {
return Endpoints.CHANNEL(channelID) + "/permissions";
},
CHANNEL_MESSAGE: function CHANNEL_MESSAGE(channelID, messageID) {
return Endpoints.CHANNEL_MESSAGES(channelID) + "/" + messageID;
},
CHANNEL_PINS: function CHANNEL_PINS(channelID) {
return Endpoints.CHANNEL(channelID) + "/pins";
},
CHANNEL_PIN: function CHANNEL_PIN(channelID, messageID) {
return Endpoints.CHANNEL_PINS(channelID) + "/" + messageID;
},
// friends
FRIENDS: API + "/users/@me/relationships"
};
Constants.Permissions = {
// general
createInstantInvite: 1 << 0,
kickMembers: 1 << 1,
banMembers: 1 << 2,
administrator: 1 << 3,
manageChannels: 1 << 4,
manageChannel: 1 << 4,
manageServer: 1 << 5,
changeNickname: 1 << 26,
manageNicknames: 1 << 27,
manageRoles: 1 << 28,
managePermissions: 1 << 28,
// text
readMessages: 1 << 10,
sendMessages: 1 << 11,
sendTTSMessages: 1 << 12,
manageMessages: 1 << 13,
embedLinks: 1 << 14,
attachFiles: 1 << 15,
readMessageHistory: 1 << 16,
mentionEveryone: 1 << 17,
// voice
voiceConnect: 1 << 20,
voiceSpeak: 1 << 21,
voiceMuteMembers: 1 << 22,
voiceDeafenMembers: 1 << 23,
voiceMoveMembers: 1 << 24,
voiceUseVAD: 1 << 25
};
Constants.PacketType = {
CHANNEL_CREATE: "CHANNEL_CREATE",
CHANNEL_DELETE: "CHANNEL_DELETE",
CHANNEL_UPDATE: "CHANNEL_UPDATE",
MESSAGE_CREATE: "MESSAGE_CREATE",
MESSAGE_DELETE: "MESSAGE_DELETE",
MESSAGE_UPDATE: "MESSAGE_UPDATE",
PRESENCE_UPDATE: "PRESENCE_UPDATE",
READY: "READY",
SERVER_BAN_ADD: "GUILD_BAN_ADD",
SERVER_BAN_REMOVE: "GUILD_BAN_REMOVE",
SERVER_CREATE: "GUILD_CREATE",
SERVER_DELETE: "GUILD_DELETE",
SERVER_MEMBER_ADD: "GUILD_MEMBER_ADD",
SERVER_MEMBER_REMOVE: "GUILD_MEMBER_REMOVE",
SERVER_MEMBER_UPDATE: "GUILD_MEMBER_UPDATE",
SERVER_MEMBERS_CHUNK: "GUILD_MEMBERS_CHUNK",
SERVER_ROLE_CREATE: "GUILD_ROLE_CREATE",
SERVER_ROLE_DELETE: "GUILD_ROLE_DELETE",
SERVER_ROLE_UPDATE: "GUILD_ROLE_UPDATE",
SERVER_UPDATE: "GUILD_UPDATE",
TYPING: "TYPING_START",
USER_UPDATE: "USER_UPDATE",
USER_NOTE_UPDATE: "USER_NOTE_UPDATE",
VOICE_STATE_UPDATE: "VOICE_STATE_UPDATE",
FRIEND_ADD: "RELATIONSHIP_ADD",
FRIEND_REMOVE: "RELATIONSHIP_REMOVE"
};
exports["default"] = Constants;
module.exports = exports["default"];

View File

@@ -1,50 +0,0 @@
"use strict";
exports.__esModule = true;
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var _UtilEquality = require("../Util/Equality");
var _UtilEquality2 = _interopRequireDefault(_UtilEquality);
var _UtilArgumentRegulariser = require("../Util/ArgumentRegulariser");
var Channel = (function (_Equality) {
_inherits(Channel, _Equality);
function Channel(data, client) {
_classCallCheck(this, Channel);
_Equality.call(this);
this.id = data.id;
this.client = client;
}
Channel.prototype["delete"] = function _delete() {
return this.client.deleteChannel.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
_createClass(Channel, [{
key: "createdAt",
get: function get() {
return new Date(+this.id / 4194304 + 1420070400000);
}
}, {
key: "isPrivate",
get: function get() {
return !this.server;
}
}]);
return Channel;
})(_UtilEquality2["default"]);
exports["default"] = Channel;
module.exports = exports["default"];

View File

@@ -1,60 +0,0 @@
"use strict";
exports.__esModule = true;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var _Constants = require("../Constants");
var ChannelPermissions = (function () {
function ChannelPermissions(permissions) {
_classCallCheck(this, ChannelPermissions);
this.permissions = permissions;
}
ChannelPermissions.prototype.serialise = function serialise(explicit) {
var _this = this;
var hp = function hp(perm) {
return _this.hasPermission(perm, explicit);
};
var json = {};
for (var permission in _Constants.Permissions) {
json[permission] = hp(_Constants.Permissions[permission]);
}
return json;
};
ChannelPermissions.prototype.serialize = function serialize() {
// ;n;
return this.serialise();
};
ChannelPermissions.prototype.hasPermission = function hasPermission(perm) {
var explicit = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];
if (perm instanceof String || typeof perm === "string") {
perm = _Constants.Permissions[perm];
}
if (!perm) {
return false;
}
if (!explicit) {
// implicit permissions allowed
if (!!(this.permissions & _Constants.Permissions.manageRoles)) {
// manageRoles allowed, they have all permissions
return true;
}
}
return !!(this.permissions & perm);
};
return ChannelPermissions;
})();
exports["default"] = ChannelPermissions;
module.exports = exports["default"];

View File

@@ -1,82 +0,0 @@
"use strict";
exports.__esModule = true;
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var _Constants = require("../Constants");
/* example data
{
id: '164585980739846145'
name: 'wlfSS',
roles: [ '135829612780322816' ],
require_colons: false,
managed: true,
}
*/
var Emoji = (function () {
function Emoji(data, server) {
_classCallCheck(this, Emoji);
this.server = server;
this.id = data.id;
this.name = data.name;
this.roleList = data.roles;
this.colons = data.require_colons;
this.managed = data.managed;
}
Emoji.prototype.toObject = function toObject() {
var keys = ['id', 'name', 'roleList', 'colons', 'managed'],
obj = {};
for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var k = _ref;
obj[k] = this[k];
}
return obj;
};
_createClass(Emoji, [{
key: "roles",
get: function get() {
var roleGroup = [];
if (this.managed) {
for (var i = 0; i < this.roleList.length; i++) {
var roleID = this.roleList[i].toString();
var role = this.server.roles.get("id", roleID);
roleGroup.push(role);
}
}
return roleGroup;
}
}, {
key: "getURL",
get: function get() {
return _Constants.Endpoints.EMOJI(this.id);
}
}]);
return Emoji;
})();
exports["default"] = Emoji;
module.exports = exports["default"];

View File

@@ -1,47 +0,0 @@
"use strict";
exports.__esModule = true;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Invite = (function () {
function Invite(data, chan, client) {
_classCallCheck(this, Invite);
this.maxAge = data.max_age;
this.code = data.code;
if (chan) {
this.channel = chan;
this.server = chan.server;
} else {
this.channel = data.channel;
this.server = data.guild;
}
this.revoked = data.revoked;
this.createdAt = Date.parse(data.created_at);
this.temporary = data.temporary;
this.uses = data.uses;
this.maxUses = data.max_uses;
if (data.inviter) {
this.inviter = client.internal.users.get("id", data.inviter.id);
}
this.xkcd = data.xkcdpass;
}
Invite.prototype.toString = function toString() {
return "https://discord.gg/" + this.code;
};
Invite.prototype["delete"] = function _delete() {
return this.client.deleteInvite.apply(this.client, reg(this, arguments));
};
Invite.prototype.join = function join() {
return this.client.joinServer.apply(this.client, reg(this, arguments));
};
return Invite;
})();
exports["default"] = Invite;
module.exports = exports["default"];

View File

@@ -1,182 +0,0 @@
"use strict";
/**
* Options that can be applied to a message before sending it.
* @typedef {(object)} MessageOptions
* @property {boolean} [tts=false] Whether or not the message should be sent as text-to-speech.
*/
exports.__esModule = true;
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var _UtilCache = require("../Util/Cache");
var _UtilCache2 = _interopRequireDefault(_UtilCache);
var _User = require("./User");
var _User2 = _interopRequireDefault(_User);
var _UtilArgumentRegulariser = require("../Util/ArgumentRegulariser");
var _UtilEquality = require("../Util/Equality");
var _UtilEquality2 = _interopRequireDefault(_UtilEquality);
var Message = (function (_Equality) {
_inherits(Message, _Equality);
function Message(data, channel, client) {
var _this = this;
_classCallCheck(this, Message);
_Equality.call(this);
this.channel = channel;
this.server = channel.server;
this.client = client;
this.nonce = data.nonce;
this.attachments = data.attachments;
this.tts = data.tts;
this.embeds = data.embeds;
this.timestamp = Date.parse(data.timestamp);
this.everyoneMentioned = data.mention_everyone !== undefined ? data.mention_everyone : data.everyoneMentioned;
this.pinned = data.pinned;
this.id = data.id;
if (data.edited_timestamp) {
this.editedTimestamp = Date.parse(data.edited_timestamp);
}
if (data.author instanceof _User2["default"]) {
this.author = data.author;
} else if (data.author) {
this.author = client.internal.users.add(new _User2["default"](data.author, client));
}
this.content = data.content;
var mentionData = client.internal.resolver.resolveMentions(data.content, channel);
this.cleanContent = mentionData[1];
this.mentions = [];
mentionData[0].forEach(function (mention) {
// this is .add and not .get because it allows the bot to cache
// users from messages from logs who may have left the server and were
// not previously cached.
if (mention instanceof _User2["default"]) {
_this.mentions.push(mention);
} else {
_this.mentions.push(client.internal.users.add(new _User2["default"](mention, client)));
}
});
}
Message.prototype.toObject = function toObject() {
var keys = ['id', 'timestamp', 'everyoneMentioned', 'pinned', 'editedTimestamp', 'content', 'cleanContent', 'tts', 'attachments', 'embeds'],
obj = {};
for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var k = _ref;
obj[k] = this[k];
}
obj.channelID = this.channel ? this.channel.id : null;
obj.serverID = this.server ? this.server.id : null;
obj.author = this.author.toObject();
obj.mentions = this.mentions.map(function (m) {
return m.toObject();
});
return obj;
};
Message.prototype.isMentioned = function isMentioned(user) {
user = this.client.internal.resolver.resolveUser(user);
if (!user) {
return false;
}
for (var _iterator2 = this.mentions, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref2;
if (_isArray2) {
if (_i2 >= _iterator2.length) break;
_ref2 = _iterator2[_i2++];
} else {
_i2 = _iterator2.next();
if (_i2.done) break;
_ref2 = _i2.value;
}
var mention = _ref2;
if (mention.id == user.id) {
return true;
}
}
return false;
};
Message.prototype.toString = function toString() {
return this.content;
};
Message.prototype["delete"] = function _delete() {
return this.client.deleteMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Message.prototype.update = function update() {
return this.client.updateMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Message.prototype.edit = function edit() {
return this.client.updateMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Message.prototype.reply = function reply() {
return this.client.reply.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Message.prototype.replyTTS = function replyTTS() {
return this.client.replyTTS.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Message.prototype.pin = function pin() {
return this.client.pinMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Message.prototype.unpin = function unpin() {
return this.client.unpinMessage.apply(this.client, req(this, arguments));
};
_createClass(Message, [{
key: "sender",
get: function get() {
return this.author;
}
}]);
return Message;
})(_UtilEquality2["default"]);
exports["default"] = Message;
module.exports = exports["default"];

View File

@@ -1,118 +0,0 @@
"use strict";
exports.__esModule = true;
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var _Channel2 = require("./Channel");
var _Channel3 = _interopRequireDefault(_Channel2);
var _User = require("./User");
var _User2 = _interopRequireDefault(_User);
var _UtilCache = require("../Util/Cache");
var _UtilCache2 = _interopRequireDefault(_UtilCache);
var _UtilArgumentRegulariser = require("../Util/ArgumentRegulariser");
var PMChannel = (function (_Channel) {
_inherits(PMChannel, _Channel);
function PMChannel(data, client) {
_classCallCheck(this, PMChannel);
_Channel.call(this, data, client);
this.type = data.type || "text";
this.lastMessageID = data.last_message_id || data.lastMessageID;
this.messages = new _UtilCache2["default"]("id", client.options.maxCachedMessages);
this.recipient = this.client.internal.users.add(new _User2["default"](data.recipient, this.client));
}
/* warning! may return null */
PMChannel.prototype.toString = function toString() {
return this.recipient.toString();
};
PMChannel.prototype.toObject = function toObject() {
var keys = ['type', 'lastMessageID', 'recipient'],
obj = {};
for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var k = _ref;
obj[k] = this[k];
}
return obj;
};
PMChannel.prototype.sendMessage = function sendMessage() {
return this.client.sendMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
PMChannel.prototype.send = function send() {
return this.client.sendMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
PMChannel.prototype.sendTTSMessage = function sendTTSMessage() {
return this.client.sendTTSMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
PMChannel.prototype.sendTTS = function sendTTS() {
return this.client.sendTTSMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
PMChannel.prototype.sendFile = function sendFile() {
return this.client.sendFile.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
PMChannel.prototype.startTyping = function startTyping() {
return this.client.startTyping.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
PMChannel.prototype.stopTyping = function stopTyping() {
return this.client.stopTyping.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
PMChannel.prototype.getLogs = function getLogs() {
return this.client.getChannelLogs.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
PMChannel.prototype.getMessage = function getMessage() {
return this.client.getMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
_createClass(PMChannel, [{
key: "lastMessage",
get: function get() {
return this.messages.get("id", this.lastMessageID);
}
}]);
return PMChannel;
})(_Channel3["default"]);
exports["default"] = PMChannel;
module.exports = exports["default"];

View File

@@ -1,113 +0,0 @@
"use strict";
exports.__esModule = true;
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var _Constants = require("../Constants");
var PermissionOverwrite = (function () {
function PermissionOverwrite(data) {
_classCallCheck(this, PermissionOverwrite);
this.id = data.id;
this.type = data.type; // member or role
this.deny = data.deny;
this.allow = data.allow;
}
// returns an array of allowed permissions
PermissionOverwrite.prototype.toObject = function toObject() {
var keys = ['id', 'type', 'allow', 'deny'],
obj = {};
for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var k = _ref;
obj[k] = this[k];
}
return obj;
};
PermissionOverwrite.prototype.setAllowed = function setAllowed(allowedArray) {
var _this = this;
allowedArray.forEach(function (permission) {
if (permission instanceof String || typeof permission === "string") {
permission = _Constants.Permissions[permission];
}
if (permission) {
_this.allow |= 1 << permission;
}
});
};
PermissionOverwrite.prototype.setDenied = function setDenied(deniedArray) {
var _this2 = this;
deniedArray.forEach(function (permission) {
if (permission instanceof String || typeof permission === "string") {
permission = _Constants.Permissions[permission];
}
if (permission) {
_this2.deny |= 1 << permission;
}
});
};
_createClass(PermissionOverwrite, [{
key: "allowed",
get: function get() {
var allowed = [];
for (var permName in _Constants.Permissions) {
if (permName === "manageRoles" || permName === "manageChannels") {
// these permissions do not exist in overwrites.
continue;
}
if (!!(this.allow & _Constants.Permissions[permName])) {
allowed.push(permName);
}
}
return allowed;
}
// returns an array of denied permissions
}, {
key: "denied",
get: function get() {
var denied = [];
for (var permName in _Constants.Permissions) {
if (permName === "manageRoles" || permName === "manageChannels") {
// these permissions do not exist in overwrites.
continue;
}
if (!!(this.deny & _Constants.Permissions[permName])) {
denied.push(permName);
}
}
return denied;
}
}]);
return PermissionOverwrite;
})();
exports["default"] = PermissionOverwrite;
module.exports = exports["default"];

View File

@@ -1,216 +0,0 @@
"use strict";
exports.__esModule = true;
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var _Constants = require("../Constants");
var _UtilArgumentRegulariser = require("../Util/ArgumentRegulariser");
/*
example data
{ position: -1,
permissions: 36953089,
name: '@everyone',
managed: false,
id: '110007368451915776',
hoist: false,
color: 0 }
*/
var DefaultRole = [_Constants.Permissions.createInstantInvite, _Constants.Permissions.readMessages, _Constants.Permissions.readMessageHistory, _Constants.Permissions.sendMessages, _Constants.Permissions.sendTTSMessages, _Constants.Permissions.embedLinks, _Constants.Permissions.attachFiles, _Constants.Permissions.readMessageHistory, _Constants.Permissions.mentionEveryone, _Constants.Permissions.voiceConnect, _Constants.Permissions.voiceSpeak, _Constants.Permissions.voiceUseVAD].reduce(function (previous, current) {
return previous | current;
}, 0);
var Role = (function () {
function Role(data, server, client) {
_classCallCheck(this, Role);
this.position = data.position || -1;
this.permissions = data.permissions || (data.name === "@everyone" ? DefaultRole : 0);
this.name = data.name || "@everyone";
this.managed = data.managed || false;
this.id = data.id;
this.hoist = data.hoist || false;
this.color = data.color || 0;
this.server = server;
this.client = client;
this.mentionable = data.mentionable || false;
}
Role.prototype.toObject = function toObject() {
var keys = ['id', 'position', 'permissions', 'name', 'managed', 'hoist', 'color', 'mentionable'],
obj = {};
for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var k = _ref;
obj[k] = this[k];
}
return obj;
};
Role.prototype.serialise = function serialise(explicit) {
var _this = this;
var hp = function hp(perm) {
return _this.hasPermission(perm, explicit);
};
return {
// general
createInstantInvite: hp(_Constants.Permissions.createInstantInvite),
kickMembers: hp(_Constants.Permissions.kickMembers),
banMembers: hp(_Constants.Permissions.banMembers),
manageRoles: hp(_Constants.Permissions.manageRoles),
manageChannels: hp(_Constants.Permissions.manageChannels),
manageServer: hp(_Constants.Permissions.manageServer),
administrator: hp(_Constants.Permissions.administrator),
// text
readMessages: hp(_Constants.Permissions.readMessages),
sendMessages: hp(_Constants.Permissions.sendMessages),
sendTTSMessages: hp(_Constants.Permissions.sendTTSMessages),
manageMessages: hp(_Constants.Permissions.manageMessages),
embedLinks: hp(_Constants.Permissions.embedLinks),
attachFiles: hp(_Constants.Permissions.attachFiles),
readMessageHistory: hp(_Constants.Permissions.readMessageHistory),
mentionEveryone: hp(_Constants.Permissions.mentionEveryone),
// voice
voiceConnect: hp(_Constants.Permissions.voiceConnect),
voiceSpeak: hp(_Constants.Permissions.voiceSpeak),
voiceMuteMembers: hp(_Constants.Permissions.voiceMuteMembers),
voiceDeafenMembers: hp(_Constants.Permissions.voiceDeafenMembers),
voiceMoveMembers: hp(_Constants.Permissions.voiceMoveMembers),
voiceUseVAD: hp(_Constants.Permissions.voiceUseVAD)
};
};
Role.prototype.serialize = function serialize() {
// ;n;
return this.serialise();
};
Role.prototype.hasPermission = function hasPermission(perm) {
var explicit = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];
if (perm instanceof String || typeof perm === "string") {
perm = _Constants.Permissions[perm];
}
if (!perm) {
return false;
}
if (!explicit) {
// implicit permissions allowed
if (!!(this.permissions & _Constants.Permissions.administrator)) {
// manageRoles allowed, they have all permissions
return true;
}
}
// e.g.
// !!(36953089 & Permissions.manageRoles) = not allowed to manage roles
// !!(36953089 & (1 << 21)) = voice speak allowed
return !!(this.permissions & perm);
};
Role.prototype.setPermission = function setPermission(permission, value) {
if (permission instanceof String || typeof permission === "string") {
permission = _Constants.Permissions[permission];
}
if (permission) {
// valid permission
if (value) {
this.permissions |= permission;
} else {
this.permissions &= ~permission;
}
}
};
Role.prototype.setPermissions = function setPermissions(obj) {
var _this2 = this;
obj.forEach(function (value, permission) {
if (permission instanceof String || typeof permission === "string") {
permission = _Constants.Permissions[permission];
}
if (permission) {
// valid permission
_this2.setPermission(permission, value);
}
});
};
Role.prototype.colorAsHex = function colorAsHex() {
var val = this.color.toString(16);
while (val.length < 6) {
val = "0" + val;
}
return "#" + val;
};
Role.prototype["delete"] = function _delete() {
return this.client.deleteRole.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Role.prototype.edit = function edit() {
return this.client.updateRole.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Role.prototype.update = function update() {
return this.client.updateRole.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Role.prototype.addMember = function addMember(member, callback) {
return this.client.addMemberToRole.apply(this.client, [member, this, callback]);
};
Role.prototype.addUser = function addUser(member, callback) {
return this.client.addUserToRole.apply(this.client, [member, this, callback]);
};
Role.prototype.removeMember = function removeMember(member, callback) {
return this.client.removeMemberFromRole.apply(this.client, [member, this, callback]);
};
Role.prototype.removeUser = function removeUser(member, callback) {
return this.client.removeUserFromRole.apply(this.client, [member, this, callback]);
};
Role.prototype.mention = function mention() {
if (this.mentionable) return "<@&" + this.id + ">";
return this.name;
};
Role.prototype.toString = function toString() {
return this.mention();
};
_createClass(Role, [{
key: "createdAt",
get: function get() {
return new Date(+this.id / 4194304 + 1420070400000);
}
}]);
return Role;
})();
exports["default"] = Role;
module.exports = exports["default"];

View File

@@ -1,493 +0,0 @@
"use strict";
/**
* Types of region for a server, include: `us-west`, `us-east`, `us-south`, `us-central`, `singapore`, `london`, `sydney`, `amsterdam` and `frankfurt`
* @typedef {(string)} region
*/
exports.__esModule = true;
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var _UtilBucket = require("../Util/Bucket");
var _UtilBucket2 = _interopRequireDefault(_UtilBucket);
var _UtilEquality = require("../Util/Equality");
var _UtilEquality2 = _interopRequireDefault(_UtilEquality);
var _Constants = require("../Constants");
var _UtilCache = require("../Util/Cache");
var _UtilCache2 = _interopRequireDefault(_UtilCache);
var _User = require("./User");
var _User2 = _interopRequireDefault(_User);
var _TextChannel = require("./TextChannel");
var _TextChannel2 = _interopRequireDefault(_TextChannel);
var _VoiceChannel = require("./VoiceChannel");
var _VoiceChannel2 = _interopRequireDefault(_VoiceChannel);
var _Role = require("./Role");
var _Role2 = _interopRequireDefault(_Role);
var _Emoji = require("./Emoji");
var _Emoji2 = _interopRequireDefault(_Emoji);
var _UtilArgumentRegulariser = require("../Util/ArgumentRegulariser");
var strictKeys = ["region", "ownerID", "name", "id", "icon", "afkTimeout", "afkChannelID"];
var Server = (function (_Equality) {
_inherits(Server, _Equality);
function Server(data, client) {
var _this = this;
_classCallCheck(this, Server);
_Equality.call(this);
this.client = client;
this.id = data.id;
if (data.owner_id) {
// new server data
client.internal.buckets["bot:msg:guild:" + this.id] = new _UtilBucket2["default"](5, 5000);
client.internal.buckets["dmsg:" + this.id] = new _UtilBucket2["default"](5, 1000);
client.internal.buckets["bdmsg:" + this.id] = new _UtilBucket2["default"](1, 1000);
client.internal.buckets["guild_member:" + this.id] = new _UtilBucket2["default"](10, 10000);
client.internal.buckets["guild_member_nick:" + this.id] = new _UtilBucket2["default"](1, 1000);
}
this.region = data.region;
this.ownerID = data.owner_id || data.ownerID;
this.name = data.name;
this.members = new _UtilCache2["default"]();
this.channels = new _UtilCache2["default"]();
this.roles = new _UtilCache2["default"]();
this.emojis = new _UtilCache2["default"]();
this.icon = data.icon;
this.afkTimeout = data.afk_timeout;
this.afkChannelID = data.afk_channel_id || data.afkChannelID;
this.memberMap = data.memberMap || {};
this.memberCount = data.member_count || data.memberCount;
this.large = data.large || this.memberCount > 250;
if (data.roles instanceof _UtilCache2["default"]) {
data.roles.forEach(function (role) {
return _this.roles.add(role);
});
} else {
data.roles.forEach(function (dataRole) {
_this.roles.add(new _Role2["default"](dataRole, _this, client));
});
}
if (data.emojis instanceof _UtilCache2["default"]) {
data.emojis.forEach(function (emoji) {
return _this.emojis.add(emoji);
});
} else {
data.emojis.forEach(function (dataEmoji) {
_this.emojis.add(new _Emoji2["default"](dataEmoji, _this));
});
}
if (data.members instanceof _UtilCache2["default"]) {
data.members.forEach(function (member) {
return _this.members.add(member);
});
} else {
data.members.forEach(function (dataUser) {
_this.memberMap[dataUser.user.id] = {
roles: dataUser.roles,
mute: dataUser.mute,
selfMute: dataUser.self_mute,
deaf: dataUser.deaf,
selfDeaf: dataUser.self_deaf,
joinedAt: Date.parse(dataUser.joined_at),
nick: dataUser.nick || null
};
_this.members.add(client.internal.users.add(new _User2["default"](dataUser.user, client)));
});
}
if (data.channels instanceof _UtilCache2["default"]) {
data.channels.forEach(function (channel) {
return _this.channels.add(channel);
});
} else {
data.channels.forEach(function (dataChannel) {
if (dataChannel.type === "text") {
_this.channels.add(client.internal.channels.add(new _TextChannel2["default"](dataChannel, client, _this)));
} else {
_this.channels.add(client.internal.channels.add(new _VoiceChannel2["default"](dataChannel, client, _this)));
}
});
}
if (data.presences) {
for (var _iterator = data.presences, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var presence = _ref;
var user = client.internal.users.get("id", presence.user.id);
if (user) {
user.status = presence.status;
user.game = presence.game;
}
}
}
if (data.voice_states) {
for (var _iterator2 = data.voice_states, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref2;
if (_isArray2) {
if (_i2 >= _iterator2.length) break;
_ref2 = _iterator2[_i2++];
} else {
_i2 = _iterator2.next();
if (_i2.done) break;
_ref2 = _i2.value;
}
var voiceState = _ref2;
var _user = this.members.get("id", voiceState.user_id);
if (_user) {
this.memberMap[_user.id] = this.memberMap[_user.id] || {};
this.memberMap[_user.id].mute = voiceState.mute || this.memberMap[_user.id].mute;
this.memberMap[_user.id].selfMute = voiceState.self_mute === undefined ? this.memberMap[_user.id].selfMute : voiceState.self_mute;
this.memberMap[_user.id].deaf = voiceState.deaf || this.memberMap[_user.id].deaf;
this.memberMap[_user.id].selfDeaf = voiceState.self_deaf === undefined ? this.memberMap[_user.id].selfDeaf : voiceState.self_deaf;
var channel = this.channels.get("id", voiceState.channel_id);
if (channel) {
this.eventVoiceJoin(_user, channel);
} else {
this.client.emit("warn", "channel doesn't exist even though READY expects them to");
}
} else {
this.client.emit("warn", "user doesn't exist even though READY expects them to");
}
}
}
}
Server.prototype.toObject = function toObject() {
var keys = ['id', 'name', 'region', 'ownerID', 'icon', 'afkTimeout', 'afkChannelID', 'large', 'memberCount'],
obj = {};
for (var _iterator3 = keys, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
var _ref3;
if (_isArray3) {
if (_i3 >= _iterator3.length) break;
_ref3 = _iterator3[_i3++];
} else {
_i3 = _iterator3.next();
if (_i3.done) break;
_ref3 = _i3.value;
}
var k = _ref3;
obj[k] = this[k];
}
obj.members = this.members.map(function (member) {
return member.toObject();
});
obj.channels = this.channels.map(function (channel) {
return channel.toObject();
});
obj.roles = this.roles.map(function (role) {
return role.toObject();
});
obj.emojis = this.emojis.map(function (emoji) {
return emoji.toObject();
});
return obj;
};
Server.prototype.detailsOf = function detailsOf(user) {
var _this2 = this;
user = this.client.internal.resolver.resolveUser(user);
if (user) {
var result = this.memberMap[user.id] || {};
if (result && result.roles) {
result.roles = result.roles.map(function (pid) {
return _this2.roles.get("id", pid) || pid;
});
}
return result;
} else {
return {};
}
};
Server.prototype.detailsOfUser = function detailsOfUser(user) {
return this.detailsOf(user);
};
Server.prototype.detailsOfMember = function detailsOfMember(user) {
return this.detailsOf(user);
};
Server.prototype.details = function details(user) {
return this.detailsOf(user);
};
Server.prototype.rolesOfUser = function rolesOfUser(user) {
return this.detailsOf(user).roles || [];
};
Server.prototype.rolesOfMember = function rolesOfMember(member) {
return this.rolesOfUser(member);
};
Server.prototype.rolesOf = function rolesOf(user) {
return this.rolesOfUser(user);
};
Server.prototype.toString = function toString() {
return this.name;
};
Server.prototype.eventVoiceJoin = function eventVoiceJoin(user, channel) {
// removes from other speaking channels first
var oldChannel = this.eventVoiceLeave(user);
channel.members.add(user);
user.voiceChannel = channel;
if (oldChannel.id && channel.id !== oldChannel.id) {
this.client.emit("voiceLeave", oldChannel, user);
this.client.emit("voiceSwitch", oldChannel, channel, user);
}
this.client.emit("voiceJoin", channel, user);
};
Server.prototype.eventVoiceStateUpdate = function eventVoiceStateUpdate(channel, user, data) {
if (!user.voiceChannel || user.voiceChannel.id !== channel.id) {
return this.eventVoiceJoin(user, channel);
}
if (!this.memberMap[user.id]) {
this.memberMap[user.id] = {};
}
var oldState = {
mute: this.memberMap[user.id].mute,
selfMute: this.memberMap[user.id].self_mute,
deaf: this.memberMap[user.id].deaf,
selfDeaf: this.memberMap[user.id].self_deaf
};
this.memberMap[user.id].mute = data.mute;
this.memberMap[user.id].selfMute = data.self_mute;
this.memberMap[user.id].deaf = data.deaf;
this.memberMap[user.id].selfDeaf = data.self_deaf;
if (oldState.mute !== undefined && (oldState.mute != data.mute || oldState.self_mute != data.self_mute || oldState.deaf != data.deaf || oldState.self_deaf != data.self_deaf)) {
this.client.emit("voiceStateUpdate", channel, user, oldState, this.memberMap[user.id]);
} else {
this.eventVoiceJoin(user, channel);
}
};
Server.prototype.eventVoiceLeave = function eventVoiceLeave(user) {
for (var _iterator4 = this.channels.getAll("type", "voice"), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
var _ref4;
if (_isArray4) {
if (_i4 >= _iterator4.length) break;
_ref4 = _iterator4[_i4++];
} else {
_i4 = _iterator4.next();
if (_i4.done) break;
_ref4 = _i4.value;
}
var chan = _ref4;
if (chan.members.has("id", user.id)) {
chan.members.remove(user);
user.voiceChannel = null;
return chan;
}
}
return { server: this };
};
Server.prototype.equalsStrict = function equalsStrict(obj) {
if (obj instanceof Server) {
for (var _iterator5 = strictKeys, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
var _ref5;
if (_isArray5) {
if (_i5 >= _iterator5.length) break;
_ref5 = _iterator5[_i5++];
} else {
_i5 = _iterator5.next();
if (_i5.done) break;
_ref5 = _i5.value;
}
var key = _ref5;
if (obj[key] !== this[key]) {
return false;
}
}
} else {
return false;
}
return true;
};
Server.prototype.leave = function leave() {
return this.client.leaveServer.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Server.prototype["delete"] = function _delete() {
return this.client.leaveServer.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Server.prototype.createInvite = function createInvite() {
return this.client.createInvite.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Server.prototype.createRole = function createRole() {
return this.client.createRole.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Server.prototype.banMember = function banMember(user, tlength, callback) {
return this.client.banMember.apply(this.client, [user, this, tlength, callback]);
};
Server.prototype.banUser = function banUser(user, tlength, callback) {
return this.client.banMember.apply(this.client, [user, this, tlength, callback]);
};
Server.prototype.ban = function ban(user, tlength, callback) {
return this.client.banMember.apply(this.client, [user, this, tlength, callback]);
};
Server.prototype.unbanMember = function unbanMember(user, callback) {
return this.client.unbanMember.apply(this.client, [user, this, callback]);
};
Server.prototype.unbanUser = function unbanUser(user, callback) {
return this.client.unbanMember.apply(this.client, [user, this, callback]);
};
Server.prototype.unban = function unban(user, callback) {
return this.client.unbanMember.apply(this.client, [user, this, callback]);
};
Server.prototype.kickMember = function kickMember(user, callback) {
return this.client.kickMember.apply(this.client, [user, this, callback]);
};
Server.prototype.kickUser = function kickUser(user, callback) {
return this.client.kickMember.apply(this.client, [user, this, callback]);
};
Server.prototype.kick = function kick(user, callback) {
return this.client.kickMember.apply(this.client, [user, this, callback]);
};
Server.prototype.getBans = function getBans() {
return this.client.getBans.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Server.prototype.createChannel = function createChannel() {
return this.client.createChannel.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Server.prototype.setNickname = function setNickname() {
return this.client.setNickname.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
Server.prototype.membersWithRole = function membersWithRole(role) {
return this.members.filter(function (m) {
return m.hasRole(role);
});
};
Server.prototype.usersWithRole = function usersWithRole(role) {
return this.membersWithRole(role);
};
_createClass(Server, [{
key: "createdAt",
get: function get() {
return new Date(+this.id / 4194304 + 1420070400000);
}
}, {
key: "iconURL",
get: function get() {
if (!this.icon) {
return null;
} else {
return _Constants.Endpoints.SERVER_ICON(this.id, this.icon);
}
}
}, {
key: "afkChannel",
get: function get() {
return this.channels.get("id", this.afkChannelID);
}
}, {
key: "defaultChannel",
get: function get() {
return this.channels.get("id", this.id);
}
}, {
key: "generalChannel",
get: function get() {
return this.defaultChannel;
}
}, {
key: "general",
get: function get() {
return this.defaultChannel;
}
}, {
key: "owner",
get: function get() {
return this.members.get("id", this.ownerID);
}
}]);
return Server;
})(_UtilEquality2["default"]);
exports["default"] = Server;
module.exports = exports["default"];

View File

@@ -1,190 +0,0 @@
"use strict";
exports.__esModule = true;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var _Channel2 = require("./Channel");
var _Channel3 = _interopRequireDefault(_Channel2);
var _UtilCache = require("../Util/Cache");
var _UtilCache2 = _interopRequireDefault(_UtilCache);
var _PermissionOverwrite = require("./PermissionOverwrite");
var _PermissionOverwrite2 = _interopRequireDefault(_PermissionOverwrite);
var _ChannelPermissions = require("./ChannelPermissions");
var _ChannelPermissions2 = _interopRequireDefault(_ChannelPermissions);
var _UtilArgumentRegulariser = require("../Util/ArgumentRegulariser");
var ServerChannel = (function (_Channel) {
_inherits(ServerChannel, _Channel);
function ServerChannel(data, client, server) {
var _this = this;
_classCallCheck(this, ServerChannel);
_Channel.call(this, data, client);
this.name = data.name;
this.type = data.type;
this.position = data.position;
this.permissionOverwrites = data.permissionOverwrites || new _UtilCache2["default"]();
this.server = server;
if (!data.permissionOverwrites) {
data.permission_overwrites.forEach(function (permission) {
_this.permissionOverwrites.add(new _PermissionOverwrite2["default"](permission));
});
}
}
ServerChannel.prototype.toObject = function toObject() {
var keys = ['id', 'name', 'type', 'position'],
obj = {};
for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var k = _ref;
obj[k] = this[k];
}
obj.permissionOverwrites = this.permissionOverwrites.map(function (p) {
return p.toObject();
});
return obj;
};
ServerChannel.prototype.permissionsOf = function permissionsOf(userOrRole) {
userOrRole = this.client.internal.resolver.resolveUser(userOrRole);
if (userOrRole) {
if (this.server.ownerID === userOrRole.id) {
return new _ChannelPermissions2["default"](4294967295);
}
var everyoneRole = this.server.roles.get("id", this.server.id);
var userRoles = [everyoneRole].concat(this.server.rolesOf(userOrRole) || []);
var userRolesID = userRoles.filter(function (v) {
return !!v;
}).map(function (v) {
return v.id;
});
var roleOverwrites = [],
memberOverwrites = [];
this.permissionOverwrites.forEach(function (overwrite) {
if (overwrite.type === "member" && overwrite.id === userOrRole.id) {
memberOverwrites.push(overwrite);
} else if (overwrite.type === "role" && ~userRolesID.indexOf(overwrite.id)) {
roleOverwrites.push(overwrite);
}
});
var permissions = 0;
for (var _iterator2 = userRoles, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref2;
if (_isArray2) {
if (_i2 >= _iterator2.length) break;
_ref2 = _iterator2[_i2++];
} else {
_i2 = _iterator2.next();
if (_i2.done) break;
_ref2 = _i2.value;
}
var serverRole = _ref2;
if (serverRole) {
permissions |= serverRole.permissions;
}
}
for (var _iterator3 = roleOverwrites.concat(memberOverwrites), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
var _ref3;
if (_isArray3) {
if (_i3 >= _iterator3.length) break;
_ref3 = _iterator3[_i3++];
} else {
_i3 = _iterator3.next();
if (_i3.done) break;
_ref3 = _i3.value;
}
var overwrite = _ref3;
if (overwrite) {
permissions = permissions & ~overwrite.deny;
permissions = permissions | overwrite.allow;
}
}
return new _ChannelPermissions2["default"](permissions);
} else {
userOrRole = this.client.internal.resolver.resolveRole(userOrRole);
if (userOrRole) {
var permissions = this.server.roles.get("id", this.server.id).permissions | userOrRole.permissions;
var overwrite = this.permissionOverwrites.get("id", this.server.id);
permissions = permissions & ~overwrite.deny | overwrite.allow;
overwrite = this.permissionOverwrites.get("id", userOrRole.id);
if (overwrite) {
permissions = permissions & ~overwrite.deny | overwrite.allow;
}
return new _ChannelPermissions2["default"](permissions);
} else {
return null;
}
}
};
ServerChannel.prototype.permsOf = function permsOf(user) {
return this.permissionsOf(user);
};
ServerChannel.prototype.mention = function mention() {
return "<#" + this.id + ">";
};
ServerChannel.prototype.toString = function toString() {
return this.mention();
};
ServerChannel.prototype.setName = function setName() {
return this.client.setChannelName.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
ServerChannel.prototype.setPosition = function setPosition() {
return this.client.setChannelPosition.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
ServerChannel.prototype.update = function update() {
return this.client.updateChannel.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
return ServerChannel;
})(_Channel3["default"]);
exports["default"] = ServerChannel;
module.exports = exports["default"];

View File

@@ -1,98 +0,0 @@
"use strict";
exports.__esModule = true;
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var _ServerChannel2 = require("./ServerChannel");
var _ServerChannel3 = _interopRequireDefault(_ServerChannel2);
var _UtilCache = require("../Util/Cache");
var _UtilCache2 = _interopRequireDefault(_UtilCache);
var _UtilArgumentRegulariser = require("../Util/ArgumentRegulariser");
var TextChannel = (function (_ServerChannel) {
_inherits(TextChannel, _ServerChannel);
function TextChannel(data, client, server) {
_classCallCheck(this, TextChannel);
_ServerChannel.call(this, data, client, server);
this.topic = data.topic;
this.lastMessageID = data.last_message_id || data.lastMessageID;
this.messages = new _UtilCache2["default"]("id", client.options.maxCachedMessages);
}
/* warning! may return null */
TextChannel.prototype.toObject = function toObject() {
var obj = _ServerChannel.prototype.toObject.call(this);
obj.topic = this.topic;
obj.lastMessageID = this.lastMessageID;
return obj;
};
TextChannel.prototype.setTopic = function setTopic() {
return this.client.setChannelTopic.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
TextChannel.prototype.sendMessage = function sendMessage() {
return this.client.sendMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
TextChannel.prototype.send = function send() {
return this.client.sendMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
TextChannel.prototype.sendTTSMessage = function sendTTSMessage() {
return this.client.sendTTSMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
TextChannel.prototype.sendTTS = function sendTTS() {
return this.client.sendTTSMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
TextChannel.prototype.sendFile = function sendFile() {
return this.client.sendFile.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
TextChannel.prototype.getLogs = function getLogs() {
return this.client.getChannelLogs.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
TextChannel.prototype.getMessage = function getMessage() {
return this.client.getMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
TextChannel.prototype.startTyping = function startTyping() {
return this.client.startTyping.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
TextChannel.prototype.stopTyping = function stopTyping() {
return this.client.stopTyping.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
_createClass(TextChannel, [{
key: "lastMessage",
get: function get() {
return this.messages.get("id", this.lastMessageID);
}
}]);
return TextChannel;
})(_ServerChannel3["default"]);
exports["default"] = TextChannel;
module.exports = exports["default"];

View File

@@ -1,165 +0,0 @@
"use strict";
exports.__esModule = true;
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var _UtilEquality = require("../Util/Equality");
var _UtilEquality2 = _interopRequireDefault(_UtilEquality);
var _Constants = require("../Constants");
var _UtilArgumentRegulariser = require("../Util/ArgumentRegulariser");
var User = (function (_Equality) {
_inherits(User, _Equality);
function User(data, client) {
_classCallCheck(this, User);
_Equality.call(this);
this.client = client;
this.username = data.username;
this.discriminator = data.discriminator;
this.id = data.id;
this.avatar = data.avatar;
this.bot = !!data.bot;
this.status = data.status || "offline";
this.game = data.game || null;
this.typing = {
since: null,
channel: null
};
this.note = data.note || null;
this.voiceChannel = null;
this.voiceState = {};
this.speaking = false;
}
User.prototype.mention = function mention() {
return "<@" + this.id + ">";
};
User.prototype.toString = function toString() {
return this.mention();
};
User.prototype.toObject = function toObject() {
var keys = ['id', 'username', 'discriminator', 'avatar', 'bot', 'status', 'game', 'note', 'voiceState', 'speaking'],
obj = {};
for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var k = _ref;
obj[k] = this[k];
}
obj.typing = {
since: this.typing.since,
channelID: this.typing.channel ? this.typing.channel.id : null
};
obj.voiceChannelID = this.voiceChannel ? this.voiceChannel.id : null;
return obj;
};
User.prototype.equalsStrict = function equalsStrict(obj) {
if (obj instanceof User) return this.id === obj.id && this.username === obj.username && this.discriminator === obj.discriminator && this.avatar === obj.avatar && this.status === obj.status && (this.game === obj.game || this.game && obj.game && this.game.name === obj.game.name);else return false;
};
User.prototype.equals = function equals(obj) {
if (obj instanceof User) return this.id === obj.id && this.username === obj.username && this.discriminator === obj.discriminator && this.avatar === obj.avatar;else return false;
};
User.prototype.sendMessage = function sendMessage() {
return this.client.sendMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
User.prototype.send = function send() {
return this.client.sendMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
User.prototype.sendTTSMessage = function sendTTSMessage() {
return this.client.sendTTSMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
User.prototype.sendTTS = function sendTTS() {
return this.client.sendTTSMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
User.prototype.sendFile = function sendFile() {
return this.client.sendFile.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
User.prototype.startTyping = function startTyping() {
return this.client.startTyping.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
User.prototype.stopTyping = function stopTyping() {
return this.client.stopTyping.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
User.prototype.addTo = function addTo(role, callback) {
return this.client.addMemberToRole.apply(this.client, [this, role, callback]);
};
User.prototype.removeFrom = function removeFrom(role, callback) {
return this.client.removeMemberFromRole.apply(this.client, [this, role, callback]);
};
User.prototype.getLogs = function getLogs() {
return this.client.getChannelLogs.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
User.prototype.getMessage = function getMessage() {
return this.client.getMessage.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
User.prototype.hasRole = function hasRole(role) {
return this.client.memberHasRole.apply(this.client, [this, role]);
};
_createClass(User, [{
key: "createdAt",
get: function get() {
return new Date(+this.id / 4194304 + 1420070400000);
}
}, {
key: "avatarURL",
get: function get() {
if (!this.avatar) {
return null;
} else {
return _Constants.Endpoints.AVATAR(this.id, this.avatar);
}
}
}, {
key: "name",
get: function get() {
return this.username;
}
}]);
return User;
})(_UtilEquality2["default"]);
exports["default"] = User;
module.exports = exports["default"];

View File

@@ -1,64 +0,0 @@
"use strict";
exports.__esModule = true;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var _ServerChannel2 = require("./ServerChannel");
var _ServerChannel3 = _interopRequireDefault(_ServerChannel2);
var _UtilCache = require("../Util/Cache");
var _UtilCache2 = _interopRequireDefault(_UtilCache);
var _UtilArgumentRegulariser = require("../Util/ArgumentRegulariser");
var VoiceChannel = (function (_ServerChannel) {
_inherits(VoiceChannel, _ServerChannel);
function VoiceChannel(data, client, server) {
_classCallCheck(this, VoiceChannel);
_ServerChannel.call(this, data, client, server);
this.members = data.members || new _UtilCache2["default"]();
this.userLimit = data.user_limit || 0;
this._bitrate = data.bitrate || 64000; // incase somebody wants to access the bps value???
this.bitrate = Math.round(this._bitrate / 1000); // store as kbps
}
VoiceChannel.prototype.toObject = function toObject() {
var obj = _ServerChannel.prototype.toObject.call(this);
obj.userLimit = this.userLimit;
obj.bitrate = this.bitrate;
obj.members = this.members.map(function (member) {
return member.toObject();
});
return obj;
};
VoiceChannel.prototype.join = function join() {
var callback = arguments.length <= 0 || arguments[0] === undefined ? function () {} : arguments[0];
return this.client.joinVoiceChannel.apply(this.client, [this, callback]);
};
VoiceChannel.prototype.setUserLimit = function setUserLimit() {
return this.client.setChannelUserLimit.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
VoiceChannel.prototype.setBitrate = function setBitrate() {
return this.client.setChannelBitrate.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
};
return VoiceChannel;
})(_ServerChannel3["default"]);
exports["default"] = VoiceChannel;
module.exports = exports["default"];

View File

@@ -1,8 +0,0 @@
"use strict";
exports.__esModule = true;
exports.reg = reg;
function reg(c, a) {
return [c].concat(Array.prototype.slice.call(a));
}

Some files were not shown because too many files have changed in this diff Show More