Clean up a bunch of promise stuff

This commit is contained in:
Schuyler Cebulskie
2016-10-30 12:47:09 -04:00
parent c42e7a15aa
commit 8306d50bd8
12 changed files with 112 additions and 161 deletions

View File

@@ -40,7 +40,7 @@ class ClientManager {
resolve(token); resolve(token);
this.client.clearTimeout(timeout); this.client.clearTimeout(timeout);
}); });
}).catch(reject); }, reject);
} }
/** /**
@@ -58,10 +58,10 @@ class ClientManager {
} }
destroy() { destroy() {
return new Promise((resolve, reject) => { return new Promise(resolve => {
this.client.ws.destroy(); this.client.ws.destroy();
if (!this.client.user.bot) { if (!this.client.user.bot) {
this.client.rest.methods.logout().then(resolve, reject); resolve(this.client.rest.methods.logout());
} else { } else {
resolve(); resolve();
} }

View File

@@ -18,8 +18,8 @@ class RESTMethods {
} }
loginToken(token = this.rest.client.token) { loginToken(token = this.rest.client.token) {
token = token.replace(/^Bot\s*/i, '');
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
token = token.replace(/^Bot\s*/i, '');
this.rest.client.manager.connectToWebSocket(token, resolve, reject); this.rest.client.manager.connectToWebSocket(token, resolve, reject);
}); });
} }
@@ -32,8 +32,7 @@ class RESTMethods {
this.rest.makeRequest('post', Constants.Endpoints.login, false, { email, password }) this.rest.makeRequest('post', Constants.Endpoints.login, false, { email, password })
.then(data => { .then(data => {
resolve(this.loginToken(data.token)); resolve(this.loginToken(data.token));
}) }, reject);
.catch(reject);
}); });
} }
@@ -47,8 +46,7 @@ class RESTMethods {
.then(res => { .then(res => {
this.rest.client.ws.gateway = `${res.url}/?encoding=json&v=${Constants.PROTOCOL_VERSION}`; this.rest.client.ws.gateway = `${res.url}/?encoding=json&v=${Constants.PROTOCOL_VERSION}`;
resolve(this.rest.client.ws.gateway); resolve(this.rest.client.ws.gateway);
}) }, reject);
.catch(reject);
}); });
} }
@@ -71,7 +69,7 @@ class RESTMethods {
if (channel instanceof User || channel instanceof GuildMember) { if (channel instanceof User || channel instanceof GuildMember) {
this.createDM(channel).then(chan => { this.createDM(channel).then(chan => {
this._sendMessageRequest(chan, content, file, tts, nonce, resolve, reject); this._sendMessageRequest(chan, content, file, tts, nonce, resolve, reject);
}).catch(reject); }, reject);
} else { } else {
this._sendMessageRequest(channel, content, file, tts, nonce, resolve, reject); this._sendMessageRequest(channel, content, file, tts, nonce, resolve, reject);
} }
@@ -93,20 +91,19 @@ class RESTMethods {
return this.rest.makeRequest('post', Constants.Endpoints.channelMessages(channel.id), true, { return this.rest.makeRequest('post', Constants.Endpoints.channelMessages(channel.id), true, {
content: content[i2], tts, nonce, content: content[i2], tts, nonce,
}, file); }, file);
}).catch(reject); }, reject);
} else { } else {
promise.then(data => { promise.then(data => {
datas.push(data); datas.push(data);
resolve(this.rest.client.actions.MessageCreate.handle(datas).messages); resolve(this.rest.client.actions.MessageCreate.handle(datas).messages);
}).catch(reject); }, reject);
} }
} }
} else { } else {
this.rest.makeRequest('post', Constants.Endpoints.channelMessages(channel.id), true, { this.rest.makeRequest('post', Constants.Endpoints.channelMessages(channel.id), true, {
content, tts, nonce, content, tts, nonce,
}, file) }, file)
.then(data => resolve(this.rest.client.actions.MessageCreate.handle(data).message)) .then(data => resolve(this.rest.client.actions.MessageCreate.handle(data).message), reject);
.catch(reject);
} }
} }
@@ -118,8 +115,7 @@ class RESTMethods {
id: message.id, id: message.id,
channel_id: message.channel.id, channel_id: message.channel.id,
}).message); }).message);
}) }, reject);
.catch(reject);
}); });
} }
@@ -132,8 +128,7 @@ class RESTMethods {
channel_id: channel.id, channel_id: channel.id,
ids: messages, ids: messages,
}).messages); }).messages);
}) }, reject);
.catch(reject);
}); });
} }
@@ -145,7 +140,7 @@ class RESTMethods {
content, content,
}).then(data => { }).then(data => {
resolve(this.rest.client.actions.MessageUpdate.handle(data).updated); resolve(this.rest.client.actions.MessageUpdate.handle(data).updated);
}).catch(reject); }, reject);
}); });
} }
@@ -156,7 +151,7 @@ class RESTMethods {
type: channelType, type: channelType,
}).then(data => { }).then(data => {
resolve(this.rest.client.actions.ChannelCreate.handle(data).channel); resolve(this.rest.client.actions.ChannelCreate.handle(data).channel);
}).catch(reject); }, reject);
}); });
} }
@@ -172,7 +167,7 @@ class RESTMethods {
if (dmChannel) return resolve(dmChannel); if (dmChannel) return resolve(dmChannel);
return this.rest.makeRequest('post', Constants.Endpoints.userChannels(this.rest.client.user.id), true, { return this.rest.makeRequest('post', Constants.Endpoints.userChannels(this.rest.client.user.id), true, {
recipient_id: recipient.id, recipient_id: recipient.id,
}).then(data => resolve(this.rest.client.actions.ChannelCreate.handle(data).channel)).catch(reject); }).then(data => resolve(this.rest.client.actions.ChannelCreate.handle(data).channel), reject);
}); });
} }
@@ -182,7 +177,7 @@ class RESTMethods {
this.rest.makeRequest('del', Constants.Endpoints.channel(channel.id), true).then(data => { this.rest.makeRequest('del', Constants.Endpoints.channel(channel.id), true).then(data => {
data.id = channel.id; data.id = channel.id;
resolve(this.rest.client.actions.ChannelDelete.handle(data).channel); resolve(this.rest.client.actions.ChannelDelete.handle(data).channel);
}).catch(reject); }, reject);
}); });
} }
@@ -195,7 +190,7 @@ class RESTMethods {
this.rest.makeRequest('patch', Constants.Endpoints.channel(channel.id), true, data).then(newData => { this.rest.makeRequest('patch', Constants.Endpoints.channel(channel.id), true, data).then(newData => {
resolve(this.rest.client.actions.ChannelUpdate.handle(newData).updated); resolve(this.rest.client.actions.ChannelUpdate.handle(newData).updated);
}).catch(reject); }, reject);
}); });
} }
@@ -204,7 +199,7 @@ class RESTMethods {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest('del', Constants.Endpoints.meGuild(guild.id), true).then(() => { this.rest.makeRequest('del', Constants.Endpoints.meGuild(guild.id), true).then(() => {
resolve(this.rest.client.actions.GuildDelete.handle({ id: guild.id }).guild); resolve(this.rest.client.actions.GuildDelete.handle({ id: guild.id }).guild);
}).catch(reject); }, reject);
}); });
} }
@@ -212,8 +207,7 @@ class RESTMethods {
options.icon = this.rest.client.resolver.resolveBase64(options.icon) || null; options.icon = this.rest.client.resolver.resolveBase64(options.icon) || null;
options.region = options.region || 'us-central'; options.region = options.region || 'us-central';
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest('post', Constants.Endpoints.guilds, true, options) this.rest.makeRequest('post', Constants.Endpoints.guilds, true, options).then(data => {
.then(data => {
if (this.rest.client.guilds.has(data.id)) resolve(this.rest.client.guilds.get(data.id)); if (this.rest.client.guilds.has(data.id)) resolve(this.rest.client.guilds.get(data.id));
const handleGuild = guild => { const handleGuild = guild => {
if (guild.id === data.id) resolve(guild); if (guild.id === data.id) resolve(guild);
@@ -224,7 +218,7 @@ class RESTMethods {
this.rest.client.removeListener('guildCreate', handleGuild); this.rest.client.removeListener('guildCreate', handleGuild);
reject(new Error('Took too long to receive guild data')); reject(new Error('Took too long to receive guild data'));
}, 10000); }, 10000);
}).catch(reject); }, reject);
}); });
} }
@@ -233,15 +227,15 @@ class RESTMethods {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest('del', Constants.Endpoints.guild(guild.id), true).then(() => { this.rest.makeRequest('del', Constants.Endpoints.guild(guild.id), true).then(() => {
resolve(this.rest.client.actions.GuildDelete.handle({ id: guild.id }).guild); resolve(this.rest.client.actions.GuildDelete.handle({ id: guild.id }).guild);
}).catch(reject); }, reject);
}); });
} }
getUser(userID) { getUser(userID) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest('get', Constants.Endpoints.user(userID), true).then((data) => { this.rest.makeRequest('get', Constants.Endpoints.user(userID), true).then(data => {
resolve(this.rest.client.actions.UserGet.handle(data).user); resolve(this.rest.client.actions.UserGet.handle(data).user);
}).catch(reject); }, reject);
}); });
} }
@@ -259,8 +253,7 @@ class RESTMethods {
} }
this.rest.makeRequest('patch', Constants.Endpoints.me, true, data) this.rest.makeRequest('patch', Constants.Endpoints.me, true, data)
.then(newData => resolve(this.rest.client.actions.UserUpdate.handle(newData).updated)) .then(newData => resolve(this.rest.client.actions.UserUpdate.handle(newData).updated), reject);
.catch(reject);
}); });
} }
@@ -277,8 +270,7 @@ class RESTMethods {
if (_data.splash) data.splash = this.rest.client.resolver.resolveBase64(_data.splash); if (_data.splash) data.splash = this.rest.client.resolver.resolveBase64(_data.splash);
this.rest.makeRequest('patch', Constants.Endpoints.guild(guild.id), true, data) this.rest.makeRequest('patch', Constants.Endpoints.guild(guild.id), true, data)
.then(newData => resolve(this.rest.client.actions.GuildUpdate.handle(newData).updated)) .then(newData => resolve(this.rest.client.actions.GuildUpdate.handle(newData).updated), reject);
.catch(reject);
}); });
} }
@@ -289,7 +281,7 @@ class RESTMethods {
guild_id: guild.id, guild_id: guild.id,
user: member.user, user: member.user,
}).member); }).member);
}).catch(reject); }, reject);
}); });
} }
@@ -300,7 +292,7 @@ class RESTMethods {
guild_id: guild.id, guild_id: guild.id,
role, role,
}).role); }).role);
}).catch(reject); }, reject);
}); });
} }
@@ -311,24 +303,21 @@ class RESTMethods {
guild_id: role.guild.id, guild_id: role.guild.id,
role_id: role.id, role_id: role.id,
}).role); }).role);
}).catch(reject); }, reject);
}); });
} }
setChannelOverwrite(channel, payload) { setChannelOverwrite(channel, payload) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest('put', `${Constants.Endpoints.channelPermissions(channel.id)}/${payload.id}`, true, payload) this.rest.makeRequest('put', `${Constants.Endpoints.channelPermissions(channel.id)}/${payload.id}`, true, payload)
.then(resolve) .then(resolve, reject);
.catch(reject);
}); });
} }
deletePermissionOverwrites(overwrite) { deletePermissionOverwrites(overwrite) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const endpoint = `${Constants.Endpoints.channelPermissions(overwrite.channel.id)}/${overwrite.id}`; const endpoint = `${Constants.Endpoints.channelPermissions(overwrite.channel.id)}/${overwrite.id}`;
this.rest.makeRequest('del', endpoint, true) this.rest.makeRequest('del', endpoint, true).then(() => resolve(overwrite), reject);
.then(() => resolve(overwrite))
.catch(reject);
}); });
} }
@@ -342,9 +331,7 @@ class RESTMethods {
let endpoint = Constants.Endpoints.channelMessages(channel.id); let endpoint = Constants.Endpoints.channelMessages(channel.id);
if (params.length > 0) endpoint += `?${params.join('&')}`; if (params.length > 0) endpoint += `?${params.join('&')}`;
this.rest.makeRequest('get', endpoint, true) this.rest.makeRequest('get', endpoint, true).then(resolve, reject);
.then(resolve)
.catch(reject);
}); });
} }
@@ -354,17 +341,15 @@ class RESTMethods {
if (msg) return resolve(msg); if (msg) return resolve(msg);
const endpoint = Constants.Endpoints.channelMessage(channel.id, messageID); const endpoint = Constants.Endpoints.channelMessage(channel.id, messageID);
return this.rest.makeRequest('get', endpoint, true) return this.rest.makeRequest('get', endpoint, true).then(resolve, reject);
.then(resolve)
.catch(reject);
}); });
} }
getGuildMember(guild, user) { getGuildMember(guild, user) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest('get', Constants.Endpoints.guildMember(guild.id, user.id), true).then((data) => { this.rest.makeRequest('get', Constants.Endpoints.guildMember(guild.id, user.id), true).then(data => {
resolve(this.rest.client.actions.GuildMemberGet.handle(guild, data).member); resolve(this.rest.client.actions.GuildMemberGet.handle(guild, data).member);
}).catch(reject); }, reject);
}); });
} }
@@ -382,17 +367,12 @@ class RESTMethods {
} }
this.rest.makeRequest('patch', endpoint, true, data) this.rest.makeRequest('patch', endpoint, true, data)
.then(resData => resolve(member.guild._updateMember(member, resData).mem)) .then(resData => resolve(member.guild._updateMember(member, resData).mem), reject);
.catch(reject);
}); });
} }
sendTyping(channelID) { sendTyping(channelID) {
return new Promise((resolve, reject) => { return this.rest.makeRequest('post', `${Constants.Endpoints.channel(channelID)}/typing`, true);
this.rest.makeRequest('post', `${Constants.Endpoints.channel(channelID)}/typing`, true)
.then(resolve)
.catch(reject);
});
} }
banGuildMember(guild, member, deleteDays = 0) { banGuildMember(guild, member, deleteDays = 0) {
@@ -415,14 +395,14 @@ class RESTMethods {
return; return;
} }
resolve(id); resolve(id);
}).catch(reject); }, reject);
}); });
} }
unbanGuildMember(guild, member) { unbanGuildMember(guild, member) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const id = this.rest.client.resolver.resolveUserID(member); const id = this.rest.client.resolver.resolveUserID(member);
if (!id) throw new Error('Couldn\'t resolve the user ID to ban.'); if (!id) throw new Error('Couldn\'t resolve the user ID to unban.');
const listener = (eGuild, eUser) => { const listener = (eGuild, eUser) => {
if (eGuild.id === guild.id && eUser.id === id) { if (eGuild.id === guild.id && eUser.id === id) {
@@ -444,7 +424,7 @@ class RESTMethods {
bannedUsers.set(user.id, user); bannedUsers.set(user.id, user);
} }
resolve(bannedUsers); resolve(bannedUsers);
}).catch(reject); }, reject);
}); });
} }
@@ -476,23 +456,21 @@ class RESTMethods {
role: _role, role: _role,
guild_id: role.guild.id, guild_id: role.guild.id,
}).updated); }).updated);
}).catch(reject); }, reject);
}); });
} }
pinMessage(message) { pinMessage(message) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest('put', `${Constants.Endpoints.channel(message.channel.id)}/pins/${message.id}`, true) this.rest.makeRequest('put', `${Constants.Endpoints.channel(message.channel.id)}/pins/${message.id}`, true)
.then(() => resolve(message)) .then(() => resolve(message), reject);
.catch(reject);
}); });
} }
unpinMessage(message) { unpinMessage(message) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest('del', `${Constants.Endpoints.channel(message.channel.id)}/pins/${message.id}`, true) this.rest.makeRequest('del', `${Constants.Endpoints.channel(message.channel.id)}/pins/${message.id}`, true)
.then(() => resolve(message)) .then(() => resolve(message), reject);
.catch(reject);
}); });
} }
@@ -508,24 +486,21 @@ class RESTMethods {
payload.max_uses = options.maxUses; payload.max_uses = options.maxUses;
this.rest.makeRequest('post', `${Constants.Endpoints.channelInvites(channel.id)}`, true, payload) this.rest.makeRequest('post', `${Constants.Endpoints.channelInvites(channel.id)}`, true, payload)
.then(invite => resolve(new Invite(this.rest.client, invite))) .then(invite => resolve(new Invite(this.rest.client, invite)), reject);
.catch(reject);
}); });
} }
deleteInvite(invite) { deleteInvite(invite) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest('del', Constants.Endpoints.invite(invite.code), true) this.rest.makeRequest('del', Constants.Endpoints.invite(invite.code), true)
.then(() => resolve(invite)) .then(() => resolve(invite), reject);
.catch(reject);
}); });
} }
getInvite(code) { getInvite(code) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest('get', Constants.Endpoints.invite(code), true) this.rest.makeRequest('get', Constants.Endpoints.invite(code), true)
.then(invite => resolve(new Invite(this.rest.client, invite))) .then(invite => resolve(new Invite(this.rest.client, invite)), reject);
.catch(reject);
}); });
} }
@@ -538,16 +513,14 @@ class RESTMethods {
invites.set(invite.code, invite); invites.set(invite.code, invite);
} }
resolve(invites); resolve(invites);
}).catch(reject); }, reject);
}); });
} }
pruneGuildMembers(guild, days, dry) { pruneGuildMembers(guild, days, dry) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest(dry ? 'get' : 'post', `${Constants.Endpoints.guildPrune(guild.id)}?days=${days}`, true) this.rest.makeRequest(dry ? 'get' : 'post', `${Constants.Endpoints.guildPrune(guild.id)}?days=${days}`, true)
.then(data => { .then(data => resolve(data.pruned), reject);
resolve(data.pruned);
}).catch(reject);
}); });
} }
@@ -556,7 +529,7 @@ class RESTMethods {
this.rest.makeRequest('post', `${Constants.Endpoints.guildEmojis(guild.id)}`, true, { name: name, image: image }) this.rest.makeRequest('post', `${Constants.Endpoints.guildEmojis(guild.id)}`, true, { name: name, image: image })
.then(data => { .then(data => {
resolve(this.rest.client.actions.EmojiCreate.handle(data, guild).emoji); resolve(this.rest.client.actions.EmojiCreate.handle(data, guild).emoji);
}).catch(reject); }, reject);
}); });
} }
@@ -565,7 +538,7 @@ class RESTMethods {
this.rest.makeRequest('delete', `${Constants.Endpoints.guildEmojis(emoji.guild.id)}/${emoji.id}`, true) this.rest.makeRequest('delete', `${Constants.Endpoints.guildEmojis(emoji.guild.id)}/${emoji.id}`, true)
.then(() => { .then(() => {
resolve(this.rest.client.actions.EmojiDelete.handle(emoji).data); resolve(this.rest.client.actions.EmojiDelete.handle(emoji).data);
}).catch(reject); }, reject);
}); });
} }
@@ -574,7 +547,7 @@ class RESTMethods {
this.rest.makeRequest('get', Constants.Endpoints.webhook(id, token), require('util').isUndefined(token)) this.rest.makeRequest('get', Constants.Endpoints.webhook(id, token), require('util').isUndefined(token))
.then(data => { .then(data => {
resolve(new Webhook(this.rest.client, data)); resolve(new Webhook(this.rest.client, data));
}).catch(reject); }, reject);
}); });
} }
@@ -587,7 +560,7 @@ class RESTMethods {
hooks.set(hook.id, new Webhook(this.rest.client, hook)); hooks.set(hook.id, new Webhook(this.rest.client, hook));
} }
resolve(hooks); resolve(hooks);
}).catch(reject); }, reject);
}); });
} }
@@ -600,7 +573,7 @@ class RESTMethods {
hooks.set(hook.id, new Webhook(this.rest.client, hook)); hooks.set(hook.id, new Webhook(this.rest.client, hook));
} }
resolve(hooks); resolve(hooks);
}).catch(reject); }, reject);
}); });
} }
@@ -609,10 +582,7 @@ class RESTMethods {
this.rest.makeRequest('post', Constants.Endpoints.channelWebhooks(channel.id), true, { this.rest.makeRequest('post', Constants.Endpoints.channelWebhooks(channel.id), true, {
name, name,
avatar, avatar,
}) }).then(data => resolve(new Webhook(this.rest.client, data)), reject);
.then(data => {
resolve(new Webhook(this.rest.client, data));
}).catch(reject);
}); });
} }
@@ -625,7 +595,7 @@ class RESTMethods {
webhook.name = data.name; webhook.name = data.name;
webhook.avatar = data.avatar; webhook.avatar = data.avatar;
resolve(webhook); resolve(webhook);
}).catch(reject); }, reject);
}); });
} }
@@ -643,10 +613,7 @@ class RESTMethods {
this.rest.makeRequest('post', `${Constants.Endpoints.webhook(webhook.id, webhook.token)}?wait=true`, false, { this.rest.makeRequest('post', `${Constants.Endpoints.webhook(webhook.id, webhook.token)}?wait=true`, false, {
content: content, username: webhook.name, avatar_url: avatarURL, tts: tts, file: file, embeds: embeds, content: content, username: webhook.name, avatar_url: avatarURL, tts: tts, file: file, embeds: embeds,
}) }).then(data => resolve(data), reject);
.then(data => {
resolve(data);
}).catch(reject);
}); });
} }
@@ -657,9 +624,7 @@ class RESTMethods {
`${Constants.Endpoints.webhook(webhook.id, webhook.token)}/slack?wait=true`, `${Constants.Endpoints.webhook(webhook.id, webhook.token)}/slack?wait=true`,
false, false,
body body
).then(data => { ).then(data => resolve(data), reject);
resolve(data);
}).catch(reject);
}); });
} }
@@ -668,45 +633,35 @@ class RESTMethods {
this.rest.makeRequest('post', Constants.Endpoints.relationships('@me'), true, { this.rest.makeRequest('post', Constants.Endpoints.relationships('@me'), true, {
discriminator: user.discriminator, discriminator: user.discriminator,
username: user.username, username: user.username,
}).then(() => { }).then(() => resolve(user), reject);
resolve(user);
}).catch(reject);
}); });
} }
removeFriend(user) { removeFriend(user) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest('delete', `${Constants.Endpoints.relationships('@me')}/${user.id}`, true) this.rest.makeRequest('delete', `${Constants.Endpoints.relationships('@me')}/${user.id}`, true)
.then(() => { .then(() => resolve(user), reject);
resolve(user);
}).catch(reject);
}); });
} }
fetchUserProfile(user) { fetchUserProfile(user) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest('get', Constants.Endpoints.userProfile(user.id), true) this.rest.makeRequest('get', Constants.Endpoints.userProfile(user.id), true)
.then(data => { .then(data => resolve(new UserProfile(user, data)), reject);
resolve(new UserProfile(user, data));
}).catch(reject);
}); });
} }
blockUser(user) { blockUser(user) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest('put', `${Constants.Endpoints.relationships('@me')}/${user.id}`, true, { type: 2 }) this.rest.makeRequest('put', `${Constants.Endpoints.relationships('@me')}/${user.id}`, true, { type: 2 })
.then(() => { .then(() => resolve(user), reject);
resolve(user);
}).catch(reject);
}); });
} }
unblockUser(user) { unblockUser(user) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest('delete', `${Constants.Endpoints.relationships('@me')}/${user.id}`, true) this.rest.makeRequest('delete', `${Constants.Endpoints.relationships('@me')}/${user.id}`, true)
.then(() => { .then(() => resolve(user), reject);
resolve(user);
}).catch(reject);
}); });
} }
@@ -718,8 +673,7 @@ class RESTMethods {
guild_id: guildID, guild_id: guildID,
roles, roles,
}).guild); }).guild);
}) }, reject);
.catch(reject);
}); });
} }
@@ -733,8 +687,7 @@ class RESTMethods {
emoji: parseEmoji(emoji), emoji: parseEmoji(emoji),
channel_id: channelID, channel_id: channelID,
}).reaction); }).reaction);
}) }, reject);
.catch(reject);
}); });
} }
@@ -752,8 +705,7 @@ class RESTMethods {
emoji: parseEmoji(emoji), emoji: parseEmoji(emoji),
channel_id: channelID, channel_id: channelID,
}).reaction); }).reaction);
}) }, reject);
.catch(reject);
}); });
} }
@@ -767,8 +719,7 @@ class RESTMethods {
getMyApp() { getMyApp() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.rest.makeRequest('get', Constants.Endpoints.myApp, true) this.rest.makeRequest('get', Constants.Endpoints.myApp, true)
.then(app => resolve(new ClientOAuth2App(this.rest.client, app))) .then(app => resolve(new ClientOAuth2App(this.rest.client, app)), reject);
.catch(reject);
}); });
} }
} }

View File

@@ -107,8 +107,7 @@ class VoiceConnection extends EventEmitter {
speaking: true, speaking: true,
delay: 0, delay: 0,
}, },
}) }).catch(e => {
.catch(e => {
this.emit('debug', e); this.emit('debug', e);
}); });
} }
@@ -156,8 +155,7 @@ class VoiceConnection extends EventEmitter {
this.sockets.udp.findEndpointAddress() this.sockets.udp.findEndpointAddress()
.then(address => { .then(address => {
this.sockets.udp.createUDPSocket(address); this.sockets.udp.createUDPSocket(address);
}) }, e => this.emit('error', e));
.catch(e => this.emit('error', e));
}); });
this.sockets.ws.once('sessionDescription', (mode, secret) => { this.sockets.ws.once('sessionDescription', (mode, secret) => {
this.authentication.encryptionMode = mode; this.authentication.encryptionMode = mode;

View File

@@ -136,7 +136,7 @@ class StreamDispatcher extends EventEmitter {
const packet = this._createPacket(sequence, timestamp, this.player.opusEncoder.encode(buffer)); const packet = this._createPacket(sequence, timestamp, this.player.opusEncoder.encode(buffer));
while (repeats--) { while (repeats--) {
this.player.voiceConnection.sockets.udp.send(packet) this.player.voiceConnection.sockets.udp.send(packet)
.catch(e => this.emit('debug', `failed to send a packet ${e}`)); .catch(e => this.emit('debug', `Failed to send a packet ${e}`));
} }
} }

View File

@@ -264,7 +264,7 @@ class WebSocketManager extends EventEmitter {
this.status = Constants.Status.NEARLY; this.status = Constants.Status.NEARLY;
if (this.client.options.fetchAllMembers) { if (this.client.options.fetchAllMembers) {
const promises = this.client.guilds.map(g => g.fetchMembers()); const promises = this.client.guilds.map(g => g.fetchMembers());
Promise.all(promises).then(() => this._emitReady()).catch(e => { Promise.all(promises).then(() => this._emitReady(), e => {
this.client.emit(Constants.Events.WARN, 'Error in pre-ready guild member fetching'); this.client.emit(Constants.Events.WARN, 'Error in pre-ready guild member fetching');
this.client.emit(Constants.Events.ERROR, e); this.client.emit(Constants.Events.ERROR, e);
this._emitReady(); this._emitReady();

View File

@@ -134,17 +134,19 @@ class Shard {
if (message) { if (message) {
// Shard is requesting a property fetch // Shard is requesting a property fetch
if (message._sFetchProp) { if (message._sFetchProp) {
this.manager.fetchClientValues(message._sFetchProp) this.manager.fetchClientValues(message._sFetchProp).then(
.then(results => this.send({ _sFetchProp: message._sFetchProp, _result: results })) results => this.send({ _sFetchProp: message._sFetchProp, _result: results }),
.catch(err => this.send({ _sFetchProp: message._sFetchProp, _error: makePlainError(err) })); err => this.send({ _sFetchProp: message._sFetchProp, _error: makePlainError(err) })
);
return; return;
} }
// Shard is requesting an eval broadcast // Shard is requesting an eval broadcast
if (message._sEval) { if (message._sEval) {
this.manager.broadcastEval(message._sEval) this.manager.broadcastEval(message._sEval).then(
.then(results => this.send({ _sEval: message._sEval, _result: results })) results => this.send({ _sEval: message._sEval, _result: results }),
.catch(err => this.send({ _sEval: message._sEval, _error: makePlainError(err) })); err => this.send({ _sEval: message._sEval, _error: makePlainError(err) })
);
return; return;
} }
} }

View File

@@ -110,7 +110,7 @@ class ShardingManager extends EventEmitter {
fetchRecommendedShards(this.token).then(count => { fetchRecommendedShards(this.token).then(count => {
this.totalShards = count; this.totalShards = count;
resolve(this._spawn(count, delay)); resolve(this._spawn(count, delay));
}).catch(reject); }, reject);
} else { } else {
if (typeof amount !== 'number' || isNaN(amount)) throw new TypeError('Amount of shards must be a number.'); if (typeof amount !== 'number' || isNaN(amount)) throw new TypeError('Amount of shards must be a number.');
if (amount < 1) throw new RangeError('Amount of shards must be at least 1.'); if (amount < 1) throw new RangeError('Amount of shards must be at least 1.');

View File

@@ -438,13 +438,15 @@ class Message {
* .catch(console.error); * .catch(console.error);
*/ */
delete(timeout = 0) { delete(timeout = 0) {
return new Promise((resolve, reject) => { if (timeout <= 0) {
this.client.setTimeout(() => { return this.client.rest.methods.deleteMessage(this);
this.client.rest.methods.deleteMessage(this) } else {
.then(resolve) return new Promise(resolve => {
.catch(reject); this.client.setTimeout(() => {
}, timeout); resolve(this.delete());
}); }, timeout);
});
}
} }
/** /**

View File

@@ -123,16 +123,15 @@ class MessageReaction {
const message = this.message; const message = this.message;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
message.client.rest.methods.getMessageReactionUsers(message.channel.id, message.id, this.emoji.identifier, limit) message.client.rest.methods.getMessageReactionUsers(message.channel.id, message.id, this.emoji.identifier, limit)
.then(users => { .then(users => {
this.users = new Collection(); this.users = new Collection();
for (const rawUser of users) { for (const rawUser of users) {
const user = this.message.client.dataManager.newUser(rawUser); const user = this.message.client.dataManager.newUser(rawUser);
this.users.set(user.id, user); this.users.set(user.id, user);
} }
this.count = this.users.size; this.count = this.users.size;
resolve(this.users); resolve(this.users);
}) }, reject);
.catch(reject);
}); });
} }
} }

View File

@@ -66,10 +66,10 @@ class TextChannel extends GuildChannel {
this.client.resolver.resolveFile(avatar).then(file => { this.client.resolver.resolveFile(avatar).then(file => {
let base64 = new Buffer(file, 'binary').toString('base64'); let base64 = new Buffer(file, 'binary').toString('base64');
let dataURI = `data:;base64,${base64}`; let dataURI = `data:;base64,${base64}`;
this.client.rest.methods.createWebhook(this, name, dataURI).then(resolve).catch(reject); resolve(this.client.rest.methods.createWebhook(this, name, dataURI));
}).catch(reject); }, reject);
} else { } else {
this.client.rest.methods.createWebhook(this, name).then(resolve).catch(reject); resolve(this.client.rest.methods.createWebhook(this, name));
} }
}); });
} }

View File

@@ -145,11 +145,11 @@ class Webhook {
} }
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.client.resolver.resolveFile(attachment).then(file => { this.client.resolver.resolveFile(attachment).then(file => {
this.client.rest.methods.sendWebhookMessage(this, content, options, { resolve(this.client.rest.methods.sendWebhookMessage(this, content, options, {
file, file,
name: fileName, name: fileName,
}).then(resolve).catch(reject); }));
}).catch(reject); }, reject);
}); });
} }
@@ -181,14 +181,13 @@ class Webhook {
if (avatar) { if (avatar) {
this.client.resolver.resolveFile(avatar).then(file => { this.client.resolver.resolveFile(avatar).then(file => {
const dataURI = this.client.resolver.resolveBase64(file); const dataURI = this.client.resolver.resolveBase64(file);
this.client.rest.methods.editWebhook(this, name, dataURI) resolve(this.client.rest.methods.editWebhook(this, name, dataURI));
.then(resolve).catch(reject); }, reject);
}).catch(reject);
} else { } else {
this.client.rest.methods.editWebhook(this, name) this.client.rest.methods.editWebhook(this, name).then(data => {
.then(data => {
this.setup(data); this.setup(data);
}).catch(reject); resolve(this);
}, reject);
} }
}); });
} }

View File

@@ -97,8 +97,8 @@ class TextBasedChannel {
this.client.rest.methods.sendMessage(this, content, options, { this.client.rest.methods.sendMessage(this, content, options, {
file, file,
name: fileName, name: fileName,
}).then(resolve).catch(reject); }).then(resolve, reject);
}).catch(reject); }, reject);
}); });
} }
@@ -138,7 +138,7 @@ class TextBasedChannel {
this._cacheMessage(msg); this._cacheMessage(msg);
resolve(msg); resolve(msg);
}).catch(reject); }, reject);
}); });
} }
@@ -172,7 +172,7 @@ class TextBasedChannel {
this._cacheMessage(msg); this._cacheMessage(msg);
} }
resolve(messages); resolve(messages);
}).catch(reject); }, reject);
}); });
} }
@@ -190,7 +190,7 @@ class TextBasedChannel {
this._cacheMessage(msg); this._cacheMessage(msg);
} }
resolve(messages); resolve(messages);
}).catch(reject); }, reject);
}); });
} }