Fixing stuff, borked by #1323 (#1326)

* several things

* see my comment

* Fixed missing stuff and returned undefined
This commit is contained in:
SpaceEEC
2017-04-01 07:29:31 +02:00
committed by Crawl
parent 305a7d14af
commit 07740955cf
2 changed files with 48 additions and 63 deletions

View File

@@ -122,11 +122,8 @@ class RESTMethods {
}
};
if (channel instanceof User || channel instanceof GuildMember) {
this.createDM(channel).then(send, reject);
} else {
send(channel);
}
if (channel instanceof User || channel instanceof GuildMember) this.createDM(channel).then(send, reject);
else send(channel);
});
}
@@ -259,7 +256,7 @@ class RESTMethods {
createChannel(guild, channelName, channelType, overwrites) {
if (overwrites instanceof Collection) overwrites = overwrites.array();
return this.rest.makeRequest('post', Endpoints.Guild(guild).channel, true, {
return this.rest.makeRequest('post', Endpoints.Guild(guild).channels, true, {
name: channelName,
type: channelType,
permission_overwrites: overwrites,
@@ -278,9 +275,8 @@ class RESTMethods {
const data = this.client.user.bot ?
{ access_tokens: options.accessTokens, nicks: options.nicks } :
{ recipients: options.recipients };
return this.rest.makeRequest('post', Endpoints.User('@me').channels, true, data)
.then(res => new GroupDMChannel(this.client, res));
.then(res => new GroupDMChannel(this.client, res));
}
addUserToGroupDM(channel, options) {
@@ -288,7 +284,7 @@ class RESTMethods {
{ nick: options.nick, access_token: options.accessToken } :
{ recipient: options.id };
return this.rest.makeRequest('put', Endpoints.Channel(channel).Recipient(options.id), true, data)
.then(() => channel);
.then(() => channel);
}
getExistingDM(recipient) {
@@ -330,24 +326,22 @@ class RESTMethods {
options.region = options.region || 'us-central';
return new Promise((resolve, reject) => {
this.rest.makeRequest('post', Endpoints.guilds, true, options).then(data => {
if (this.client.guilds.has(data.id)) {
resolve(this.client.guilds.get(data.id));
return;
}
if (this.client.guilds.has(data.id)) return resolve(this.client.guilds.get(data.id));
const handleGuild = guild => {
if (guild.id === data.id) {
this.client.removeListener('guildCreate', handleGuild);
this.client.removeListener(Constants.Events.GUILD_CREATE, handleGuild);
this.client.clearTimeout(timeout);
resolve(guild);
}
};
this.client.on('guildCreate', handleGuild);
this.client.on(Constants.Events.GUILD_CREATE, handleGuild);
const timeout = this.client.setTimeout(() => {
this.client.removeListener('guildCreate', handleGuild);
this.client.removeListener(Constants.Events.GUILD_CREATE, handleGuild);
reject(new Error('Took too long to receive guild data.'));
}, 10000);
return undefined;
}, reject);
});
}
@@ -361,11 +355,8 @@ class RESTMethods {
getUser(userID, cache) {
return this.rest.makeRequest('get', Endpoints.User(userID), true).then(data => {
if (cache) {
return this.client.actions.UserGet.handle(data).user;
} else {
return new User(this.client, data);
}
if (cache) return this.client.actions.UserGet.handle(data).user;
else return new User(this.client, data);
});
}
@@ -470,11 +461,8 @@ class RESTMethods {
getGuildMember(guild, user, cache) {
return this.rest.makeRequest('get', Endpoints.Guild(guild).Member(user.id), true).then(data => {
if (cache) {
return this.client.actions.GuildMemberGet.handle(guild, data).member;
} else {
return new GuildMember(guild, data);
}
if (cache) return this.client.actions.GuildMemberGet.handle(guild, data).member;
else return new GuildMember(guild, data);
});
}
@@ -497,44 +485,48 @@ class RESTMethods {
}
addMemberRole(member, role) {
return new Promise(resolve => {
if (member._roles.includes(role.id)) {
resolve(member);
return;
}
return new Promise((resolve, reject) => {
if (member._roles.includes(role.id)) return resolve(member);
const listener = (oldMember, newMember) => {
if (!oldMember._roles.includes(role.id) && newMember._roles.includes(role.id)) {
this.client.removeListener('guildMemberUpdate', listener);
this.client.removeListener(Constants.Events.GUILD_MEMBER_UPDATE, listener);
resolve(newMember);
}
};
this.client.on('guildMemberUpdate', listener);
this.client.setTimeout(() => this.client.removeListener('guildMemberUpdate', listener), 10e3);
this.client.on(Constants.Events.GUILD_MEMBER_UPDATE, listener);
const timeout = this.client.setTimeout(() =>
this.client.removeListener(Constants.Events.GUILD_MEMBER_UPDATE, listener), 10e3);
this.rest.makeRequest('put', Endpoints.Member(member).Role(role.id), true);
return this.rest.makeRequest('put', Endpoints.Member(member).Role(role.id), true).catch(err => {
this.client.removeListener(Constants.Events.GUILD_BAN_REMOVE, listener);
this.client.clearTimeout(timeout);
reject(err);
});
});
}
removeMemberRole(member, role) {
return new Promise(resolve => {
if (!member._roles.includes(role.id)) {
resolve(member);
return;
}
return new Promise((resolve, reject) => {
if (!member._roles.includes(role.id)) return resolve(member);
const listener = (oldMember, newMember) => {
if (oldMember._roles.includes(role.id) && !newMember._roles.includes(role.id)) {
this.client.removeListener('guildMemberUpdate', listener);
this.client.removeListener(Constants.Events.GUILD_MEMBER_UPDATE, listener);
resolve(newMember);
}
};
this.client.on('guildMemberUpdate', listener);
this.client.setTimeout(() => this.client.removeListener('guildMemberUpdate', listener), 10e3);
this.client.on(Constants.Events.GUILD_MEMBER_UPDATE, listener);
const timeout = this.client.setTimeout(() =>
this.client.removeListener(Constants.Events.GUILD_MEMBER_UPDATE, listener), 10e3);
this.rest.makeRequest('delete', Endpoints.Member(member).Role(role.id), true);
return this.rest.makeRequest('delete', Endpoints.Member(member).Role(role.id), true).catch(err => {
this.client.removeListener(Constants.Events.GUILD_BAN_REMOVE, listener);
this.client.clearTimeout(timeout);
reject(err);
});
});
}
@@ -606,16 +598,8 @@ class RESTMethods {
data.hoist = typeof _data.hoist !== 'undefined' ? _data.hoist : role.hoist;
data.mentionable = typeof _data.mentionable !== 'undefined' ? _data.mentionable : role.mentionable;
if (_data.permissions) {
let perms = 0;
for (let perm of _data.permissions) {
if (typeof perm === 'string') perm = Permissions.FLAGS[perm];
perms |= perm;
}
data.permissions = perms;
} else {
data.permissions = role.permissions;
}
if (_data.permissions) data.permissions = Permissions.resolve(_data.permissions);
else data.permissions = role.permissions;
return this.rest.makeRequest('patch', Endpoints.Guild(role.guild).Role(role.id), true, data).then(_role =>
this.client.actions.GuildRoleUpdate.handle({
@@ -686,7 +670,7 @@ class RESTMethods {
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', Endpoints.Guild(emoji.guild).Emoji(emoji.id), true, data)
.then(newEmoji => this.client.actions.GuildEmojiUpdate.handle(emoji, newEmoji).emoji);
.then(newEmoji => this.client.actions.GuildEmojiUpdate.handle(emoji, newEmoji).emoji);
}
deleteEmoji(emoji) {
@@ -831,11 +815,11 @@ class RESTMethods {
emoji: Util.parseEmoji(emoji),
channel_id: message.channel.id,
}).reaction
);
);
}
removeMessageReaction(message, emoji, user) {
let endpoint = Endpoints.Message(message).Reaction(emoji).User(user === this.client.user.id ? '@me' : user.id);
const endpoint = Endpoints.Message(message).Reaction(emoji).User(user === this.client.user.id ? '@me' : user.id);
return this.rest.makeRequest('delete', endpoint, true).then(() =>
this.client.actions.MessageReactionRemove.handle({
user_id: user,
@@ -863,7 +847,7 @@ class RESTMethods {
resetApplication(id) {
return this.rest.makeRequest('post', Endpoints.OAUTH2.Application(id).reset, true)
.then(app => new OAuth2Application(this.client, app));
.then(app => new OAuth2Application(this.client, app));
}
setNote(user, note) {
@@ -877,12 +861,12 @@ class RESTMethods {
const handler = guild => {
if (guild.id === res.id) {
resolve(guild);
this.client.removeListener('guildCreate', handler);
this.client.removeListener(Constants.Events.GUILD_CREATE, handler);
}
};
this.client.on('guildCreate', handler);
this.client.on(Constants.Events.GUILD_CREATE, handler);
this.client.setTimeout(() => {
this.client.removeListener('guildCreate', handler);
this.client.removeListener(Constants.Events.GUILD_CREATE, handler);
reject(new Error('Accepting invite timed out'));
}, 120e3);
})

View File

@@ -129,11 +129,12 @@ const Endpoints = exports.Endpoints = {
Splash: (root, hash) => Endpoints.CDN(root).Splash(guildID, hash),
Role: roleID => `${base}/roles/${roleID}`,
Member: memberID => {
if (memberID.id) memberID = memberID.id;
const mbase = `${base}/members/${memberID}`;
return {
toString: () => mbase,
role: roleID => `${mbase}/roles/${roleID}`,
nickname: `${mbase}/nick`,
Role: roleID => `${mbase}/roles/${roleID}`,
nickname: `${base}/members/@me/nick`,
};
},
};