Added guild.createRole()

This commit is contained in:
Amish Shah
2016-07-02 21:28:49 +01:00
parent bbf0b0683a
commit 849b8df2da
8 changed files with 382 additions and 332 deletions

View File

@@ -15,6 +15,7 @@ class ActionsManager {
this.register('GuildDelete');
this.register('GuildUpdate');
this.register('GuildMemberRemove');
this.register('GuildRoleCreate');
this.register('UserUpdate');
}

View File

@@ -0,0 +1,38 @@
'use strict';
const Action = require('./Action');
const Constants = require('../../util/Constants');
const Role = require('../../structures/Role');
class GuildRoleCreate extends Action {
constructor(client) {
super(client);
}
handle(data) {
let client = this.client;
let guild = client.store.get('guilds', data.guild_id);
if (guild) {
let already = guild.store.get('roles', data.role.id);
let role = new Role(guild, data.role);
guild.store.add('roles', role);
if (!already) {
client.emit(Constants.Events.GUILD_ROLE_CREATE, guild, role);
}
return {
role,
};
}
return {
role: null,
};
}
};
module.exports = GuildRoleCreate;

View File

@@ -255,6 +255,19 @@ class RESTMethods{
.catch(reject);
});
}
CreateGuildRole(guild) {
return new Promise((resolve, reject) => {
this.rest.makeRequest('post', Constants.Endpoints.GUILD_ROLES(guild.id), true)
.then(role => {
resolve(this.rest.client.actions.GuildRoleCreate.handle({
guild_id : guild.id,
role,
}).role);
})
.catch(reject);
});
}
}
module.exports = RESTMethods;

View File

@@ -17,18 +17,7 @@ class GuildRoleCreateHandler extends AbstractHandler {
let data = packet.d;
let client = this.packetManager.client;
let guild = client.store.get('guilds', data.guild_id);
if (guild) {
let already = guild.store.get('roles', data.role.id);
let role = new Role(guild, data.role);
guild.store.add('roles', role);
if (!already) {
client.emit(Constants.Events.GUILD_ROLE_CREATE, guild, role);
}
}
let response = client.actions.GuildRoleCreate.handle(data);
}
};

View File

@@ -180,6 +180,10 @@ class Guild {
return this.client.rest.methods.CreateChannel(this, name, type);
}
createRole() {
return this.client.rest.methods.CreateGuildRole(this);
}
leave() {
return this.client.rest.methods.LeaveGuild(this);
}

View File

@@ -135,6 +135,11 @@ client.on('message', message => {
}).catch(console.log);
}
if (message.content === 'makerole') {
message.guild.createRole().then(role => {
message.channel.sendMessage(`Made role ${role.name}`);
}).catch(console.log);
}
}
});