voiceStateUpdate stored per-server, some docs

This commit is contained in:
abalabahaha
2016-01-30 14:11:21 -08:00
parent 46807bf1c1
commit cd25848bdc
12 changed files with 134 additions and 95 deletions

View File

@@ -49,3 +49,8 @@ remove(data)
~~~~~~~~~~~~ ~~~~~~~~~~~~
Removes an object from the cache if it exists. Removes an object from the cache if it exists.
random()
~~~~~~~~~~~~
Get a random object from the cache.

View File

@@ -26,3 +26,13 @@ isPrivate
~~~~~~~~~ ~~~~~~~~~
Indicates whether the channel is PM channel, is `Boolean`. Indicates whether the channel is PM channel, is `Boolean`.
--------
Functions
---------
delete()
~~~~~~~~~~~~~~~
Deletes the channel.

View File

@@ -140,7 +140,7 @@ sendFile(channel, attachment, name, `callback`)
Sends a file to the specified channel. Sends a file to the specified channel.
- **channel** - a `Channel Resolvable`_ - **channel** - a `Channel Resolvable`_
- **attachment** - A ReadableStream, String or Buffer - **attachment** - A `File Resolvable`_
- **name** - (Optional) `String`, name of the file containing the extension - **name** - (Optional) `String`, name of the file containing the extension
- **callback** - `function` taking the following: - **callback** - `function` taking the following:
- **error** - error if any occurred - **error** - error if any occurred
@@ -520,21 +520,19 @@ addMemberToRole(member, role, `callback`)
Adds a member of a server to a role in the server Adds a member of a server to a role in the server
- **member** - A `User Resolvable`_ - **member** - A `User Resolvable`_
- **role** - A Role_ - **role** - A `Role Resolvable`_ or an array of `Role Resolvable`_
- **callback** - `function` that takes the following: - **callback** - `function` that takes the following:
- **error** - error if any occurred - **error** - error if any occurred
addMemberToRoles(member, roles, `callback`) memberHasRole(member, role)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Aliases** : `addUserToRole` **Aliases** : `userHasRole`
Adds a member of a server to a role in the server Returns if a user has a role
- **member** - A `User Resolvable`_ - **member** - A `User Resolvable`_
- **roles** - An array of Role_ objects - **role** - A `Role Resolvable`_ or an array of `Role Resolvable`_
- **callback** - `function` that takes the following:
- **error** - error if any occurred
removeMemberFromRole(member, role, `callback`) removeMemberFromRole(member, role, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -544,19 +542,7 @@ removeMemberFromRole(member, role, `callback`)
Removes a member of a server from a role in the server Removes a member of a server from a role in the server
- **member** - A `User Resolvable`_ - **member** - A `User Resolvable`_
- **role** - A Role_ - **role** - A `Role Resolvable`_ or an array of `Role Resolvable`_
- **callback** - `function` that takes the following:
- **error** - error if any occurred
removeMemberFromRoles(member, roles, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Aliases** : `removeUserFromRole`
Removes a member of a server from a role in the server
- **member** - A `User Resolvable`_
- **role** - A array of Role_ objects
- **callback** - `function` that takes the following: - **callback** - `function` that takes the following:
- **error** - error if any occurred - **error** - error if any occurred
@@ -716,9 +702,14 @@ Emitted when a user is unbanned from a server. Supplies two parameters, a User_
voiceJoin voiceJoin
~~~~~~~~ ~~~~~~~~
Emitted when a user joins a voice channel, supplies a User_ and a VoiceChannel_ Emitted when a user joins a voice channel, supplies a VoiceChannel_ and a User_
voiceLeave voiceLeave
~~~~~~~~~~ ~~~~~~~~~~
Emitted when a user leaves a voice channel, supplies a User_ and a VoiceChannel_ Emitted when a user leaves a voice channel, supplies a VoiceChannel_ and a User_
voiceStateUpdate
~~~~~~~~~~
Emitted when a user mutes/deafens, supplies a VoiceChannel_, User_, an object containing the old mute/self_mute/deaf/self_deaf properties, and an object containing the new mute/self_mute/deaf/self_deaf properties

View File

@@ -69,6 +69,11 @@ content
`String`, content of the message. `String`, content of the message.
cleanContent
~~~~~~~
`String`, content of the message with valid user mentions (<@123>) replaced with "@username".
mentions mentions
~~~~~~~~ ~~~~~~~~

View File

@@ -18,6 +18,23 @@ A Channel Resolvable allows:
- User_ (in some instances) - User_ (in some instances)
- String of Channel ID - String of Channel 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 Voice Channel Resolvable
------------------------ ------------------------

View File

@@ -85,16 +85,21 @@ Functions
rolesOfUser(user) rolesOfUser(user)
~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
**Aliases**: `rolesOf` **Aliases**: `rolesOf`, `rolesOfMember`
Returns an array of the roles affecting a user server-wide. Returns an array of the roles affecting a user server-wide.
------ usersWithRole(user, role)
~~~~~~~~~~~~~~~~~
**Aliases**: `membersWithRole`
Returns an array of users that have the specified role.
detailsOfUser(user) detailsOfUser(user)
~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
**Aliases** `detailsOf` **Aliases** `detailsOf`, `detailsOfMember`
Returns an object containing metadata of a user within the server, containing a structure similar to the following: Returns an object containing metadata of a user within the server, containing a structure similar to the following:
@@ -102,12 +107,13 @@ Returns an object containing metadata of a user within the server, containing a
{ {
joinedAt : 1449339323747, joinedAt : 1449339323747,
mute : false, roles: [],
deaf : false mute : false,
self_mute : false,
deaf : false,
self_deaf : false
} }
----------
leave() leave()
~~~~~~~ ~~~~~~~
@@ -115,45 +121,29 @@ leave()
| **Aliases** `delete` | **Aliases** `delete`
| **See** client.leaveServer_ | **See** client.leaveServer_
------
|
createInvite(`options`, `callback`) createInvite(`options`, `callback`)
~~~~~~~ ~~~~~~~
| **Shortcut of** ``client.createInvite(server, options, callback)`` | **Shortcut of** ``client.createInvite(server, options, callback)``
| **See** client.createInvite_ | **See** client.createInvite_
|
------
createRole(`data`, `callback`) createRole(`data`, `callback`)
~~~~~~~ ~~~~~~~
| **Shortcut of** ``client.createRole(server, data, callback)`` | **Shortcut of** ``client.createRole(server, data, callback)``
| **See** client.createRole_ | **See** client.createRole_
|
------
createChannel(name, `type`, `callback`) createChannel(name, `type`, `callback`)
~~~~~~~ ~~~~~~~
| **Shortcut of** ``client.createChannel(server, name, type, callback)`` | **Shortcut of** ``client.createChannel(server, name, type, callback)``
| **See** client.createChannel_ | **See** client.createChannel_
|
------
getBans(`callback`) getBans(`callback`)
~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
| **Shortcut of** ``client.getBans(server, callback)`` | **Shortcut of** ``client.getBans(server, callback)``
| **See** client.getBans_ | **See** client.getBans_
|
------
banMember(user, `length`, `callback`) banMember(user, `length`, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -161,9 +151,6 @@ banMember(user, `length`, `callback`)
| **Shortcut of** ``client.banMember(member, server, length, callback)`` | **Shortcut of** ``client.banMember(member, server, length, callback)``
| **Aliases** `banUser, ban` | **Aliases** `banUser, ban`
| **See** client.banMember_ | **See** client.banMember_
|
------
unbanMember(user, `callback`) unbanMember(user, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -171,9 +158,6 @@ unbanMember(user, `callback`)
| **Shortcut of** ``client.unbanMember(member, server, callback)`` | **Shortcut of** ``client.unbanMember(member, server, callback)``
| **Aliases** `unbanUser, unban` | **Aliases** `unbanUser, unban`
| **See** client.unbanMember_ | **See** client.unbanMember_
|
------
kickMember(user, `callback`) kickMember(user, `callback`)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -181,9 +165,6 @@ kickMember(user, `callback`)
| **Shortcut of** ``client.kickMember(member, server, callback)`` | **Shortcut of** ``client.kickMember(member, server, callback)``
| **Aliases** `kickUser, kick` | **Aliases** `kickUser, kick`
| **See** client.kickMember_ | **See** client.kickMember_
|
------
.. _client.leaveServer : ./docs_client.html#leaveserver-server-callback .. _client.leaveServer : ./docs_client.html#leaveserver-server-callback
.. _client.createInvite : ./docs_client.html#createinvite-channel-options-callback .. _client.createInvite : ./docs_client.html#createinvite-channel-options-callback

View File

@@ -406,9 +406,7 @@ var Client = (function (_EventEmitter) {
// def addUserToRole // def addUserToRole
Client.prototype.userHasRole = function userHasRole(member, role) { Client.prototype.userHasRole = function userHasRole(member, role) {
var callback = arguments.length <= 2 || arguments[2] === undefined ? function () /*err, {}*/{} : arguments[2]; return this.memberHasRole(member, role);
return this.memberHasRole(member, role, callback);
}; };
// def removeMemberFromRole // def removeMemberFromRole

View File

@@ -1710,22 +1710,7 @@ var InternalClient = (function () {
// in voice channel // in voice channel
var channel = self.channels.get("id", data.channel_id); var channel = self.channels.get("id", data.channel_id);
if (channel && channel.type === "voice") { if (channel && channel.type === "voice") {
var oldState = { server.eventVoiceStateUpdate(channel, user, data);
mute: user.voiceState.mute,
self_mute: user.voiceState.self_mute,
deaf: user.voiceState.deaf,
self_deaf: user.voiceState.self_deaf
};
user.voiceState.mute = data.mute;
user.voiceState.self_mute = data.self_mute;
user.voiceState.deaf = data.deaf;
user.voiceState.self_deaf = data.self_deaf;
if ((oldState.mute != user.voiceState.mute || oldState.self_mute != user.voiceState.self_mute || oldState.deaf != user.voiceState.deaf || oldState.self_deaf != user.voiceState.self_deaf) && oldState.mute !== undefined) {
client.emit("voiceStateUpdate", channel, user, oldState);
} else {
server.eventVoiceJoin(user, channel);
client.emit("voiceJoin", channel, user);
}
} else { } else {
client.emit("warn", "voice state channel not in cache"); client.emit("warn", "voice state channel not in cache");
} }

View File

@@ -88,7 +88,9 @@ var Server = (function (_Equality) {
return self.roles.get("id", pid); return self.roles.get("id", pid);
}), }),
mute: dataUser.mute, mute: dataUser.mute,
self_mute: dataUser.self_mute,
deaf: dataUser.deaf, deaf: dataUser.deaf,
self_deaf: dataUser.self_deaf,
joinedAt: Date.parse(dataUser.joined_at) joinedAt: Date.parse(dataUser.joined_at)
}; };
var user = client.internal.users.add(new _User2["default"](dataUser.user, client)); var user = client.internal.users.add(new _User2["default"](dataUser.user, client));
@@ -174,6 +176,10 @@ var Server = (function (_Equality) {
return this.detailsOf(user); return this.detailsOf(user);
}; };
Server.prototype.detailsOfMember = function detailsOfMember(user) {
return this.detailsOf(user);
};
Server.prototype.details = function details(user) { Server.prototype.details = function details(user) {
return this.detailsOf(user); return this.detailsOf(user);
}; };
@@ -207,6 +213,29 @@ var Server = (function (_Equality) {
user.voiceChannel = channel; user.voiceChannel = channel;
}; };
Server.prototype.eventVoiceStateUpdate = function eventVoiceStateUpdate(channel, user, data) {
// removes from other speaking channels first
if (!this.memberMap[user.id]) {
this.memberMap[user.id] = {};
}
var oldState = {
mute: this.memberMap[user.id].mute,
self_mute: this.memberMap[user.id].self_mute,
deaf: this.memberMap[user.id].deaf,
self_deaf: this.memberMap[user.id].self_deaf
};
this.memberMap[user.id].mute = data.mute;
this.memberMap[user.id].self_mute = data.self_mute;
this.memberMap[user.id].deaf = data.deaf;
this.memberMap[user.id].self_deaf = data.self_deaf;
if ((oldState.mute != data.mute || oldState.self_mute != data.self_mute || oldState.deaf != data.deaf || oldState.self_deaf != data.self_deaf) && oldState.mute !== undefined) {
this.client.emit("voiceStateUpdate", channel, user, oldState, this.memberMap[user.id]);
} else {
this.eventVoiceJoin(user, channel);
this.client.emit("voiceJoin", channel, user);
}
};
Server.prototype.eventVoiceLeave = function eventVoiceLeave(user) { Server.prototype.eventVoiceLeave = function eventVoiceLeave(user) {
for (var _iterator3 = this.channels.getAll("type", "voice"), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { for (var _iterator3 = this.channels.getAll("type", "voice"), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
var _ref3; var _ref3;

View File

@@ -344,8 +344,8 @@ export default class Client extends EventEmitter {
} }
// def addUserToRole // def addUserToRole
userHasRole(member, role, callback = (/*err, {}*/) => { }) { userHasRole(member, role) {
return this.memberHasRole(member, role, callback); return this.memberHasRole(member, role);
} }
// def removeMemberFromRole // def removeMemberFromRole

View File

@@ -1373,7 +1373,9 @@ export default class InternalClient {
server.memberMap[data.user.id] = { server.memberMap[data.user.id] = {
roles: data.roles.map(pid => server.roles.get("id", pid)), roles: data.roles.map(pid => server.roles.get("id", pid)),
mute: false, mute: false,
self_mute: false,
deaf: false, deaf: false,
self_deaf: false,
joinedAt: Date.parse(data.joined_at) joinedAt: Date.parse(data.joined_at)
}; };
@@ -1409,7 +1411,9 @@ export default class InternalClient {
if (user) { if (user) {
server.memberMap[data.user.id].roles = data.roles.map(pid => server.roles.get("id", pid)); server.memberMap[data.user.id].roles = data.roles.map(pid => server.roles.get("id", pid));
server.memberMap[data.user.id].mute = data.mute; server.memberMap[data.user.id].mute = data.mute;
server.memberMap[data.user.id].self_mute = data.self_mute;
server.memberMap[data.user.id].deaf = data.deaf; server.memberMap[data.user.id].deaf = data.deaf;
server.memberMap[data.user.id].self_deaf = data.self_deaf;
client.emit("serverMemberUpdated", server, user); client.emit("serverMemberUpdated", server, user);
} else { } else {
client.emit("warn", "server member removed but user doesn't exist in cache"); client.emit("warn", "server member removed but user doesn't exist in cache");
@@ -1500,24 +1504,7 @@ export default class InternalClient {
// in voice channel // in voice channel
var channel = self.channels.get("id", data.channel_id); var channel = self.channels.get("id", data.channel_id);
if (channel && channel.type === "voice") { if (channel && channel.type === "voice") {
var oldState = { server.eventVoiceStateUpdate(channel, user, data);
mute: user.voiceState.mute,
self_mute: user.voiceState.self_mute,
deaf: user.voiceState.deaf,
self_deaf: user.voiceState.self_deaf
};
user.voiceState.mute = data.mute;
user.voiceState.self_mute = data.self_mute;
user.voiceState.deaf = data.deaf;
user.voiceState.self_deaf = data.self_deaf;
if ((oldState.mute != user.voiceState.mute || oldState.self_mute != user.voiceState.self_mute
|| oldState.deaf != user.voiceState.deaf || oldState.self_deaf != user.voiceState.self_deaf)
&& oldState.mute !== undefined) {
client.emit("voiceStateUpdate", channel, user, oldState);
} else {
server.eventVoiceJoin(user, channel);
client.emit("voiceJoin", channel, user);
}
} else { } else {
client.emit("warn", "voice state channel not in cache"); client.emit("warn", "voice state channel not in cache");
} }

View File

@@ -50,7 +50,9 @@ export default class Server extends Equality {
this.memberMap[dataUser.user.id] = { this.memberMap[dataUser.user.id] = {
roles: dataUser.roles.map((pid) => self.roles.get("id", pid)), roles: dataUser.roles.map((pid) => self.roles.get("id", pid)),
mute: dataUser.mute, mute: dataUser.mute,
self_mute: dataUser.self_mute,
deaf: dataUser.deaf, deaf: dataUser.deaf,
self_deaf: dataUser.self_deaf,
joinedAt: Date.parse(dataUser.joined_at) joinedAt: Date.parse(dataUser.joined_at)
}; };
var user = client.internal.users.add(new User(dataUser.user, client)); var user = client.internal.users.add(new User(dataUser.user, client));
@@ -108,6 +110,10 @@ export default class Server extends Equality {
return this.detailsOf(user); return this.detailsOf(user);
} }
detailsOfMember(user) {
return this.detailsOf(user);
}
details(user) { details(user) {
return this.detailsOf(user); return this.detailsOf(user);
} }
@@ -169,6 +175,31 @@ export default class Server extends Equality {
user.voiceChannel = channel; user.voiceChannel = channel;
} }
eventVoiceStateUpdate(channel, user, data) {
// removes from other speaking channels first
if (!this.memberMap[user.id]) {
this.memberMap[user.id] = {};
}
var oldState = {
mute: this.memberMap[user.id].mute,
self_mute: this.memberMap[user.id].self_mute,
deaf: this.memberMap[user.id].deaf,
self_deaf: this.memberMap[user.id].self_deaf
};
this.memberMap[user.id].mute = data.mute;
this.memberMap[user.id].self_mute = data.self_mute;
this.memberMap[user.id].deaf = data.deaf;
this.memberMap[user.id].self_deaf = data.self_deaf;
if ((oldState.mute != data.mute || oldState.self_mute != data.self_mute
|| oldState.deaf != data.deaf || oldState.self_deaf != data.self_deaf)
&& oldState.mute !== undefined) {
this.client.emit("voiceStateUpdate", channel, user, oldState, this.memberMap[user.id]);
} else {
this.eventVoiceJoin(user, channel);
this.client.emit("voiceJoin", channel, user);
}
}
eventVoiceLeave(user) { eventVoiceLeave(user) {
for (let chan of this.channels.getAll("type", "voice")) { for (let chan of this.channels.getAll("type", "voice")) {
if (chan.members.has(user)) { if (chan.members.has(user)) {