mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-11 17:13:31 +01:00
Merge branch 'master' into indev-prism
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
const os = require('os');
|
||||
const EventEmitter = require('events').EventEmitter;
|
||||
const mergeDefault = require('../util/MergeDefault');
|
||||
const Constants = require('../util/Constants');
|
||||
@@ -223,7 +224,7 @@ class Client extends EventEmitter {
|
||||
* @readonly
|
||||
*/
|
||||
get browser() {
|
||||
return typeof window !== 'undefined';
|
||||
return os.platform() === 'browser';
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -123,6 +123,7 @@ class ClientDataManager {
|
||||
const oldEmoji = cloneObject(currentEmoji);
|
||||
currentEmoji.setup(newData);
|
||||
this.client.emit(Constants.Events.GUILD_EMOJI_UPDATE, oldEmoji, currentEmoji);
|
||||
return currentEmoji;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,10 @@ const Action = require('./Action');
|
||||
|
||||
class GuildEmojiUpdateAction extends Action {
|
||||
handle(oldEmoji, newEmoji) {
|
||||
this.client.dataManager.updateEmoji(oldEmoji, newEmoji);
|
||||
const emoji = this.client.dataManager.updateEmoji(oldEmoji, newEmoji);
|
||||
return {
|
||||
emoji,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,17 +14,32 @@ class MessageCreateAction extends Action {
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
messages[i] = channel._cacheMessage(new Message(channel, data[i], client));
|
||||
}
|
||||
channel.lastMessageID = messages[messages.length - 1].id;
|
||||
if (user) user.lastMessageID = messages[messages.length - 1].id;
|
||||
if (member) member.lastMessageID = messages[messages.length - 1].id;
|
||||
const lastMessage = messages[messages.length - 1];
|
||||
channel.lastMessageID = lastMessage.id;
|
||||
channel.lastMessage = lastMessage;
|
||||
if (user) {
|
||||
user.lastMessageID = lastMessage.id;
|
||||
user.lastMessage = lastMessage;
|
||||
}
|
||||
if (member) {
|
||||
member.lastMessageID = lastMessage.id;
|
||||
member.lastMessage = lastMessage;
|
||||
}
|
||||
return {
|
||||
messages,
|
||||
};
|
||||
} else {
|
||||
const message = channel._cacheMessage(new Message(channel, data, client));
|
||||
channel.lastMessageID = data.id;
|
||||
if (user) user.lastMessageID = data.id;
|
||||
if (member) member.lastMessageID = data.id;
|
||||
channel.lastMessage = message;
|
||||
if (user) {
|
||||
user.lastMessageID = data.id;
|
||||
user.lastMessage = message;
|
||||
}
|
||||
if (member) {
|
||||
member.lastMessageID = data.id;
|
||||
member.lastMessage = message;
|
||||
}
|
||||
return {
|
||||
message,
|
||||
};
|
||||
|
||||
@@ -97,7 +97,7 @@ class RESTMethods {
|
||||
const options = index === list.length ? { tts, embed } : { tts };
|
||||
chan.send(list[index], options, index === list.length ? file : null).then((message) => {
|
||||
messages.push(message);
|
||||
if (index >= list.length) return resolve(messages);
|
||||
if (index >= list.length - 1) return resolve(messages);
|
||||
return sendChunk(list, ++index);
|
||||
});
|
||||
}(content, 0));
|
||||
@@ -165,8 +165,9 @@ class RESTMethods {
|
||||
|
||||
search(target, options) {
|
||||
options = transformSearchOptions(options, this.client);
|
||||
for (const key in options) if (options[key] === undefined) delete options[key];
|
||||
|
||||
const queryString = querystring.stringify(options);
|
||||
const queryString = (querystring.stringify(options).match(/[^=&?]+=[^=&?]+/g) || []).join('&');
|
||||
|
||||
let type;
|
||||
if (target instanceof Channel) {
|
||||
@@ -323,8 +324,9 @@ class RESTMethods {
|
||||
);
|
||||
}
|
||||
|
||||
createGuildRole(guild) {
|
||||
return this.rest.makeRequest('post', Constants.Endpoints.guildRoles(guild.id), true).then(role =>
|
||||
createGuildRole(guild, data) {
|
||||
if (data.color) data.color = this.client.resolver.resolveColor(data.color);
|
||||
return this.rest.makeRequest('post', Constants.Endpoints.guildRoles(guild.id), true, data).then(role =>
|
||||
this.client.actions.GuildRoleCreate.handle({
|
||||
guild_id: guild.id,
|
||||
role,
|
||||
@@ -557,14 +559,24 @@ class RESTMethods {
|
||||
.then(data => data.pruned);
|
||||
}
|
||||
|
||||
createEmoji(guild, image, name) {
|
||||
return this.rest.makeRequest('post', `${Constants.Endpoints.guildEmojis(guild.id)}`, true, { name, image })
|
||||
.then(data => this.client.actions.EmojiCreate.handle(data, guild).emoji);
|
||||
createEmoji(guild, image, name, roles) {
|
||||
const data = { image, name };
|
||||
if (roles) data.roles = roles.map(r => r.id ? r.id : r);
|
||||
return this.rest.makeRequest('post', `${Constants.Endpoints.guildEmojis(guild.id)}`, true, data)
|
||||
.then(emoji => this.client.actions.GuildEmojiCreate.handle(guild, emoji).emoji);
|
||||
}
|
||||
|
||||
updateEmoji(emoji, _data) {
|
||||
const data = {};
|
||||
if (_data.name) data.name = _data.name;
|
||||
if (_data.roles) data.roles = _data.roles.map(r => r.id ? r.id : r);
|
||||
return this.rest.makeRequest('patch', Constants.Endpoints.guildEmoji(emoji.guild.id, emoji.id), true, data)
|
||||
.then(newEmoji => this.client.actions.GuildEmojiUpdate.handle(emoji, newEmoji).emoji);
|
||||
}
|
||||
|
||||
deleteEmoji(emoji) {
|
||||
return this.rest.makeRequest('delete', `${Constants.Endpoints.guildEmojis(emoji.guild.id)}/${emoji.id}`, true)
|
||||
.then(() => this.client.actions.EmojiDelete.handle(emoji).data);
|
||||
.then(() => this.client.actions.GuildEmojiDelete.handle(emoji).data);
|
||||
}
|
||||
|
||||
getWebhook(id, token) {
|
||||
@@ -693,7 +705,7 @@ class RESTMethods {
|
||||
removeMessageReaction(message, emoji, user) {
|
||||
let endpoint = Constants.Endpoints.selfMessageReaction(message.channel.id, message.id, emoji);
|
||||
if (user !== this.client.user.id) {
|
||||
endpoint = Constants.Endpoints.userMessageReaction(message.channel.id, message.id, emoji, null, user.id);
|
||||
endpoint = Constants.Endpoints.userMessageReaction(message.channel.id, message.id, emoji, null, user);
|
||||
}
|
||||
return this.rest.makeRequest('delete', endpoint, true).then(() =>
|
||||
this.client.actions.MessageReactionRemove.handle({
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const browser = typeof window !== 'undefined';
|
||||
const browser = require('os').platform() === 'browser';
|
||||
const EventEmitter = require('events').EventEmitter;
|
||||
const Constants = require('../../util/Constants');
|
||||
const convertArrayBuffer = require('../../util/ConvertArrayBuffer');
|
||||
@@ -155,7 +155,7 @@ class WebSocketManager extends EventEmitter {
|
||||
}
|
||||
|
||||
destroy() {
|
||||
this.ws.close(1000);
|
||||
if (this.ws) this.ws.close(1000);
|
||||
this._queue = [];
|
||||
this.status = Constants.Status.IDLE;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// ##untested##
|
||||
|
||||
const AbstractHandler = require('./AbstractHandler');
|
||||
const Constants = require('../../../../util/Constants');
|
||||
// uncomment in v12
|
||||
// const Collection = require('../../../../util/Collection');
|
||||
|
||||
class GuildMembersChunkHandler extends AbstractHandler {
|
||||
handle(packet) {
|
||||
@@ -10,10 +10,14 @@ class GuildMembersChunkHandler extends AbstractHandler {
|
||||
const guild = client.guilds.get(data.guild_id);
|
||||
if (!guild) return;
|
||||
|
||||
// uncomment in v12
|
||||
// const members = new Collection();
|
||||
//
|
||||
// for (const member of data.members) members.set(member.id, guild._addMember(member, false));
|
||||
|
||||
const members = data.members.map(member => guild._addMember(member, false));
|
||||
|
||||
guild._checkChunks();
|
||||
client.emit(Constants.Events.GUILD_MEMBERS_CHUNK, members);
|
||||
client.emit(Constants.Events.GUILD_MEMBERS_CHUNK, members, guild);
|
||||
|
||||
client.ws.lastHeartbeatAck = true;
|
||||
}
|
||||
@@ -22,7 +26,8 @@ class GuildMembersChunkHandler extends AbstractHandler {
|
||||
/**
|
||||
* Emitted whenever a chunk of guild members is received (all members come from the same guild)
|
||||
* @event Client#guildMembersChunk
|
||||
* @param {GuildMember[]} members The members in the chunk
|
||||
* @param {Collection<GuildMember>} members The members in the chunk
|
||||
* @param {Guild} guild The guild related to the member chunk
|
||||
*/
|
||||
|
||||
module.exports = GuildMembersChunkHandler;
|
||||
|
||||
Reference in New Issue
Block a user