mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-19 04:53:30 +01:00
Started again
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -1,162 +0,0 @@
|
|||||||
class ChannelPermissions {
|
|
||||||
constructor(data, channel) {
|
|
||||||
|
|
||||||
var self = this;
|
|
||||||
|
|
||||||
function getBit(x) {
|
|
||||||
return ((self.packed >>> x) & 1) === 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.type = data.type; //either member or role
|
|
||||||
this.id = data.id;
|
|
||||||
|
|
||||||
if (this.type === "member") {
|
|
||||||
this.packed = channel.server.getMember("id", data.id).evalPerms.packed;
|
|
||||||
} else {
|
|
||||||
this.packed = channel.server.getRole("id", data.id).packed;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.packed = this.packed & ~data.deny;
|
|
||||||
this.packed = this.packed | data.allow;
|
|
||||||
|
|
||||||
this.deny = data.deny;
|
|
||||||
this.allow = data.allow;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
serialise() {
|
|
||||||
return {
|
|
||||||
createInstantInvite: this.createInstantInvite,
|
|
||||||
manageRoles: this.manageRoles,
|
|
||||||
manageChannels: this.manageChannels,
|
|
||||||
readMessages: this.readMessages,
|
|
||||||
sendMessages: this.sendMessages,
|
|
||||||
sendTTSMessages: this.sendTTSMessages,
|
|
||||||
manageMessages: this.manageMessages,
|
|
||||||
embedLinks: this.embedLinks,
|
|
||||||
attachFiles: this.attachFiles,
|
|
||||||
readMessageHistory: this.readMessageHistory,
|
|
||||||
mentionEveryone: this.mentionEveryone,
|
|
||||||
voiceConnect: this.voiceConnect,
|
|
||||||
voiceSpeak: this.voiceSpeak,
|
|
||||||
voiceMuteMembers: this.voiceMuteMembers,
|
|
||||||
voiceDeafenMembers: this.voiceDeafenMembers,
|
|
||||||
voiceMoveMember: this.voiceMoveMembers,
|
|
||||||
voiceUseVoiceActivation: this.voiceUseVoiceActivation
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
serialize(){
|
|
||||||
return this.serialise();
|
|
||||||
}
|
|
||||||
|
|
||||||
get asAllowDisallow() {
|
|
||||||
|
|
||||||
var allow = 0, disallow = 0;
|
|
||||||
|
|
||||||
function ad(value, position) {
|
|
||||||
if (value) {
|
|
||||||
allow |= (1 << position);
|
|
||||||
} else {
|
|
||||||
disallow |= (1 << position);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ad(this.createInstantInvite, 0);
|
|
||||||
ad(this.manageRoles, 3);
|
|
||||||
ad(this.manageChannels, 4);
|
|
||||||
ad(this.readMessages, 10);
|
|
||||||
ad(this.sendMessages, 11);
|
|
||||||
ad(this.sendTTSMessages, 12);
|
|
||||||
ad(this.manageMessages, 13);
|
|
||||||
ad(this.embedLinks, 14);
|
|
||||||
ad(this.attachFiles, 15);
|
|
||||||
ad(this.readMessageHistory, 16);
|
|
||||||
ad(this.mentionEveryone, 17);
|
|
||||||
ad(this.voiceConnect, 20);
|
|
||||||
ad(this.voiceSpeak, 21);
|
|
||||||
ad(this.voiceMuteMembers, 22);
|
|
||||||
ad(this.voiceDeafenMembers, 23);
|
|
||||||
ad(this.voiceMoveMembers, 24);
|
|
||||||
ad(this.voiceUseVoiceActivation, 25);
|
|
||||||
|
|
||||||
|
|
||||||
return {
|
|
||||||
allow : allow,
|
|
||||||
deny : disallow
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
get createInstantInvite() { return this.getBit(0); }
|
|
||||||
set createInstantInvite(val) { this.setBit(0, val); }
|
|
||||||
|
|
||||||
get manageRoles() { return this.getBit(3); }
|
|
||||||
set manageRoles(val) { this.setBit(3, val); }
|
|
||||||
|
|
||||||
get manageChannels() { return this.getBit(4); }
|
|
||||||
set manageChannels(val) { this.setBit(4, val); }
|
|
||||||
|
|
||||||
get readMessages() { return this.getBit(10); }
|
|
||||||
set readMessages(val) { this.setBit(10, val); }
|
|
||||||
|
|
||||||
get sendMessages() { return this.getBit(11); }
|
|
||||||
set sendMessages(val) { this.setBit(11, val); }
|
|
||||||
|
|
||||||
get sendTTSMessages() { return this.getBit(12); }
|
|
||||||
set sendTTSMessages(val) { this.setBit(12, val); }
|
|
||||||
|
|
||||||
get manageMessages() { return this.getBit(13); }
|
|
||||||
set manageMessages(val) { this.setBit(13, val); }
|
|
||||||
|
|
||||||
get embedLinks() { return this.getBit(14); }
|
|
||||||
set embedLinks(val) { this.setBit(14, val); }
|
|
||||||
|
|
||||||
get attachFiles() { return this.getBit(15); }
|
|
||||||
set attachFiles(val) { this.setBit(15, val); }
|
|
||||||
|
|
||||||
get readMessageHistory() { return this.getBit(16); }
|
|
||||||
set readMessageHistory(val) { this.setBit(16, val); }
|
|
||||||
|
|
||||||
get mentionEveryone() { return this.getBit(17); }
|
|
||||||
set mentionEveryone(val) { this.setBit(17, val); }
|
|
||||||
|
|
||||||
get voiceConnect() { return this.getBit(20); }
|
|
||||||
set voiceConnect(val) { this.setBit(20, val); }
|
|
||||||
|
|
||||||
get voiceSpeak() { return this.getBit(21); }
|
|
||||||
set voiceSpeak(val) { this.setBit(21, val); }
|
|
||||||
|
|
||||||
get voiceMuteMembers() { return this.getBit(22); }
|
|
||||||
set voiceMuteMembers(val) { this.setBit(22, val); }
|
|
||||||
|
|
||||||
get voiceDeafenMembers() { return this.getBit(23); }
|
|
||||||
set voiceDeafenMembers(val) { this.setBit(23, val); }
|
|
||||||
|
|
||||||
get voiceMoveMembers() { return this.getBit(24); }
|
|
||||||
set voiceMoveMembers(val) { this.setBit(24, val); }
|
|
||||||
|
|
||||||
get voiceUseVoiceActivation() { return this.getBit(25); }
|
|
||||||
set voiceUseVoiceActivation(val) { this.setBit(25, val); }
|
|
||||||
|
|
||||||
getBit(x) {
|
|
||||||
if (((this.packed >>> 3) & 1) === 1) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return ((this.packed >>> x) & 1) === 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
setBit(location, value) {
|
|
||||||
|
|
||||||
if (value) {
|
|
||||||
// allow that permission
|
|
||||||
this.packed |= (1 << location);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// not allowed
|
|
||||||
this.packed &= (1 << location);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = ChannelPermissions;
|
|
||||||
2158
src/Client.js
2158
src/Client.js
File diff suppressed because it is too large
Load Diff
@@ -1,21 +0,0 @@
|
|||||||
class Embed{
|
|
||||||
constructor(data){
|
|
||||||
this.url = data.url;
|
|
||||||
this.type = data.type;
|
|
||||||
this.title = data.title;
|
|
||||||
this.thumbnail = data.thumbnail;
|
|
||||||
//width
|
|
||||||
//height
|
|
||||||
//url
|
|
||||||
//proxy_url
|
|
||||||
this.provider = data.provider;
|
|
||||||
//url
|
|
||||||
//name
|
|
||||||
this.description = data.description;
|
|
||||||
this.author = data.author;
|
|
||||||
//url
|
|
||||||
//name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = Embed;
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
var ImageEmbed = require("./ImageEmbed.js"),
|
|
||||||
VideoEmbed = require("./VideoEmbed.js"),
|
|
||||||
LinkEmbed = require("./LinkEmbed.js");
|
|
||||||
|
|
||||||
exports.createEmbed = function(data){
|
|
||||||
switch(data.type){
|
|
||||||
case "image":
|
|
||||||
return new ImageEmbed(data);
|
|
||||||
break;
|
|
||||||
case "video":
|
|
||||||
return new VideoEmbed(data);
|
|
||||||
break;
|
|
||||||
case "link":
|
|
||||||
return new LinkEmbed(data);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
var Embed = require("./Embed.js");
|
|
||||||
|
|
||||||
class ImageEmbed extends Embed{
|
|
||||||
constructor(data){
|
|
||||||
super(data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = ImageEmbed;
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
var Embed = require("./Embed.js");
|
|
||||||
|
|
||||||
class LinkEmbed extends Embed{
|
|
||||||
constructor(data){
|
|
||||||
super(data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = LinkEmbed;
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
var Embed = require("./Embed.js");
|
|
||||||
|
|
||||||
class VideoEmbed extends Embed{
|
|
||||||
constructor(data){
|
|
||||||
super(data);
|
|
||||||
this.video = data.video;
|
|
||||||
//width
|
|
||||||
//height
|
|
||||||
//url
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = VideoEmbed;
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
exports.BASE_DOMAIN = "discordapp.com";
|
|
||||||
exports.BASE = `https://${exports.BASE_DOMAIN}`;
|
|
||||||
exports.WEBSOCKET_HUB = `wss://${exports.BASE_DOMAIN}/hub`;
|
|
||||||
|
|
||||||
exports.API = `${exports.BASE}/api`;
|
|
||||||
exports.AUTH = `${exports.API}/auth`;
|
|
||||||
exports.LOGIN = `${exports.AUTH}/login`;
|
|
||||||
exports.LOGOUT = `${exports.AUTH}/logout`;
|
|
||||||
exports.USERS = `${exports.API}/users`;
|
|
||||||
exports.SERVERS = `${exports.API}/guilds`;
|
|
||||||
exports.CHANNELS = `${exports.API}/channels`;
|
|
||||||
@@ -1,110 +0,0 @@
|
|||||||
class EvaluatedPermissions {
|
|
||||||
constructor(data) {
|
|
||||||
|
|
||||||
var self = this;
|
|
||||||
|
|
||||||
this.packed = data;
|
|
||||||
|
|
||||||
if(this.getBit(3))
|
|
||||||
this.packed = 4294967295;
|
|
||||||
}
|
|
||||||
|
|
||||||
serialise() {
|
|
||||||
return {
|
|
||||||
createInstantInvite : this.createInstantInvite,
|
|
||||||
manageRoles : this.manageRoles,
|
|
||||||
manageChannels : this.manageChannels,
|
|
||||||
readMessages : this.readMessages,
|
|
||||||
sendMessages : this.sendMessage,
|
|
||||||
sendTTSMessages : this.sendTTSMessages,
|
|
||||||
manageMessages : this.manageMessages,
|
|
||||||
embedLinks : this.embedLinks,
|
|
||||||
attachFiles : this.attachFiles,
|
|
||||||
readMessageHistory : this.readMessageHistory,
|
|
||||||
mentionEveryone : this.mentionEveryone,
|
|
||||||
voiceConnect : this.voiceConnect,
|
|
||||||
voiceSpeak : this.voiceSpeak,
|
|
||||||
voiceMuteMembers : this.voiceMuteMembers,
|
|
||||||
voiceDeafenMembers : this.voiceDeafenMembers,
|
|
||||||
voiceMoveMember : this.voiceMoveMembers,
|
|
||||||
voiceUseVoiceActivation : this.voiceUseVoiceActivation
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
serialize(){
|
|
||||||
return this.serialise();
|
|
||||||
}
|
|
||||||
|
|
||||||
get createInstantInvite() { return this.getBit(0); }
|
|
||||||
set createInstantInvite(val) { this.setBit(0, val); }
|
|
||||||
|
|
||||||
get manageRoles() { return this.getBit(3); }
|
|
||||||
set manageRoles(val) { this.setBit(3, val); }
|
|
||||||
|
|
||||||
get manageChannels() { return this.getBit(4); }
|
|
||||||
set manageChannels(val) { this.setBit(4, val); }
|
|
||||||
|
|
||||||
get readMessages() { return this.getBit(10); }
|
|
||||||
set readMessages(val) { this.setBit(10, val); }
|
|
||||||
|
|
||||||
get sendMessages() { return this.getBit(11); }
|
|
||||||
set sendMessages(val) { this.setBit(11, val); }
|
|
||||||
|
|
||||||
get sendTTSMessages() { return this.getBit(12); }
|
|
||||||
set sendTTSMessages(val) { this.setBit(12, val); }
|
|
||||||
|
|
||||||
get manageMessages() { return this.getBit(13); }
|
|
||||||
set manageMessages(val) { this.setBit(13, val); }
|
|
||||||
|
|
||||||
get embedLinks() { return this.getBit(14); }
|
|
||||||
set embedLinks(val) { this.setBit(14, val); }
|
|
||||||
|
|
||||||
get attachFiles() { return this.getBit(15); }
|
|
||||||
set attachFiles(val) { this.setBit(15, val); }
|
|
||||||
|
|
||||||
get readMessageHistory() { return this.getBit(16); }
|
|
||||||
set readMessageHistory(val) { this.setBit(16, val); }
|
|
||||||
|
|
||||||
get mentionEveryone() { return this.getBit(17); }
|
|
||||||
set mentionEveryone(val) { this.setBit(17, val); }
|
|
||||||
|
|
||||||
get voiceConnect() { return this.getBit(20); }
|
|
||||||
set voiceConnect(val) { this.setBit(20, val); }
|
|
||||||
|
|
||||||
get voiceSpeak() { return this.getBit(21); }
|
|
||||||
set voiceSpeak(val) { this.setBit(21, val); }
|
|
||||||
|
|
||||||
get voiceMuteMembers() { return this.getBit(22); }
|
|
||||||
set voiceMuteMembers(val) { this.setBit(22, val); }
|
|
||||||
|
|
||||||
get voiceDeafenMembers() { return this.getBit(23); }
|
|
||||||
set voiceDeafenMembers(val) { this.setBit(23, val); }
|
|
||||||
|
|
||||||
get voiceMoveMembers() { return this.getBit(24); }
|
|
||||||
set voiceMoveMembers(val) { this.setBit(24, val); }
|
|
||||||
|
|
||||||
get voiceUseVoiceActivation() { return this.getBit(25); }
|
|
||||||
set voiceUseVoiceActivation(val) { this.setBit(25, val); }
|
|
||||||
|
|
||||||
getBit(x) {
|
|
||||||
if( ((this.packed >>> 3) & 1) === 1 ){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return ((this.packed >>> x) & 1) === 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
setBit(location, value){
|
|
||||||
|
|
||||||
if(value){
|
|
||||||
// allow that permission
|
|
||||||
this.packed |= (1 << location);
|
|
||||||
|
|
||||||
}else{
|
|
||||||
// not allowed
|
|
||||||
this.packed &= (1 << location);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = EvaluatedPermissions;
|
|
||||||
107
src/Member.js
107
src/Member.js
@@ -1,107 +0,0 @@
|
|||||||
var User = require("./user.js");
|
|
||||||
var ServerPermissions = require("./ServerPermissions.js");
|
|
||||||
var EvaluatedPermissions = require("./EvaluatedPermissions.js");
|
|
||||||
|
|
||||||
class Member extends User{
|
|
||||||
|
|
||||||
constructor(user, server, roles){
|
|
||||||
super(user); // should work, we are basically creating a Member that has the same properties as user and a few more
|
|
||||||
this.serverID = server.id;
|
|
||||||
this.client = server.client;
|
|
||||||
this.rawRoles = roles;
|
|
||||||
}
|
|
||||||
|
|
||||||
get server(){
|
|
||||||
return this.client.getServer("id", this.serverID);
|
|
||||||
}
|
|
||||||
|
|
||||||
get roles(){
|
|
||||||
|
|
||||||
var ufRoles = [ this.server.getRole("id", this.server.id) ];
|
|
||||||
|
|
||||||
for(var rawRole of this.rawRoles){
|
|
||||||
ufRoles.push( this.server.getRole("id", rawRole) );
|
|
||||||
}
|
|
||||||
|
|
||||||
return ufRoles;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
get evalPerms(){
|
|
||||||
var basePerms = this.roles, //cache roles as it can be slightly expensive
|
|
||||||
basePerm = basePerms[0].packed;
|
|
||||||
|
|
||||||
|
|
||||||
basePerms = basePerms || [];
|
|
||||||
for(var perm of basePerms){
|
|
||||||
basePerm = basePerm | perm.packed;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new EvaluatedPermissions(basePerm);
|
|
||||||
}
|
|
||||||
|
|
||||||
removeRole(role){
|
|
||||||
this.rawRoles.splice(this.rawRoles.indexOf(role.id), 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
addRole(role){
|
|
||||||
if(this.rawRoles.indexOf(role.id) == -1){
|
|
||||||
this.rawRoles.push(role.id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
hasRole(role){
|
|
||||||
for(var _role of this.roles){
|
|
||||||
if(role.id === _role.id)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
permissionsIn(channel){
|
|
||||||
|
|
||||||
if(channel.server.ownerID === this.id){
|
|
||||||
return new EvaluatedPermissions(4294967295); //all perms
|
|
||||||
}
|
|
||||||
|
|
||||||
var affectingOverwrites = [];
|
|
||||||
var affectingMemberOverwrites = [];
|
|
||||||
|
|
||||||
for(var overwrite of channel.roles) {
|
|
||||||
if(overwrite.id == this.serverID) { // @everyone for channel
|
|
||||||
affectingOverwrites.push(overwrite);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(var overwrite of channel.roles){
|
|
||||||
if(overwrite.id === this.id && overwrite.type === "member"){
|
|
||||||
affectingMemberOverwrites.push(overwrite);
|
|
||||||
}else if( this.rawRoles.indexOf(overwrite.id) !== -1 ){
|
|
||||||
affectingOverwrites.push(overwrite);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(affectingOverwrites.length === 0 && affectingMemberOverwrites.length === 0){
|
|
||||||
return this.evalPerms;
|
|
||||||
}
|
|
||||||
|
|
||||||
var finalPacked = (affectingOverwrites.length !== 0 ? affectingOverwrites[0].packed : affectingMemberOverwrites[0].packed);
|
|
||||||
|
|
||||||
for(var overwrite of affectingOverwrites){
|
|
||||||
finalPacked = finalPacked & ~overwrite.deny;
|
|
||||||
finalPacked = finalPacked | overwrite.allow;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(var overwrite of affectingMemberOverwrites){
|
|
||||||
finalPacked = finalPacked & ~overwrite.deny;
|
|
||||||
finalPacked = finalPacked | overwrite.allow;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new EvaluatedPermissions(finalPacked);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = Member;
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
class PMChannel {
|
|
||||||
constructor(data, client) {
|
|
||||||
this.user = client.getUser("id", data.recipient.id);
|
|
||||||
this.id = data.id;
|
|
||||||
this.messages = [];
|
|
||||||
this.client = client;
|
|
||||||
}
|
|
||||||
|
|
||||||
addMessage(data){
|
|
||||||
if(!this.getMessage("id", data.id)){
|
|
||||||
this.messages.push(data);
|
|
||||||
}
|
|
||||||
return this.getMessage("id", data.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
getMessage(key, value){
|
|
||||||
|
|
||||||
if(this.messages.length > 1000){
|
|
||||||
this.messages.splice(0,1);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(var message of this.messages){
|
|
||||||
if(message[key] === value){
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
get isPrivate(){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = PMChannel;
|
|
||||||
@@ -1,132 +0,0 @@
|
|||||||
class ServerPermissions {
|
|
||||||
|
|
||||||
constructor(data, server) {
|
|
||||||
|
|
||||||
var self = this;
|
|
||||||
|
|
||||||
function getBit(x) {
|
|
||||||
return ((self.packed >>> x) & 1) === 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.managed = data.managed || false;
|
|
||||||
this.position = data.position || 1;
|
|
||||||
this.hoist = data.hoist || false;
|
|
||||||
this.color = data.color || 0;
|
|
||||||
this.packed = data.permissions || (data.name === "@everyone" ? 36953089 : 0);
|
|
||||||
this.name = data.name || "new role";
|
|
||||||
this.id = data.id || null;
|
|
||||||
this.server = server;
|
|
||||||
}
|
|
||||||
|
|
||||||
serialise() {
|
|
||||||
return {
|
|
||||||
createInstantInvite: this.createInstantInvite,
|
|
||||||
manageRoles: this.manageRoles,
|
|
||||||
manageChannels: this.manageChannels,
|
|
||||||
readMessages: this.readMessages,
|
|
||||||
sendMessages: this.sendMessages,
|
|
||||||
sendTTSMessages: this.sendTTSMessages,
|
|
||||||
manageMessages: this.manageMessages,
|
|
||||||
embedLinks: this.embedLinks,
|
|
||||||
attachFiles: this.attachFiles,
|
|
||||||
readMessageHistory: this.readMessageHistory,
|
|
||||||
mentionEveryone: this.mentionEveryone,
|
|
||||||
voiceConnect: this.voiceConnect,
|
|
||||||
voiceSpeak: this.voiceSpeak,
|
|
||||||
voiceMuteMembers: this.voiceMuteMembers,
|
|
||||||
voiceDeafenMembers: this.voiceDeafenMembers,
|
|
||||||
voiceMoveMembers: this.voiceMoveMembers,
|
|
||||||
voiceUseVoiceActivation: this.voiceUseVoiceActivation
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
serialize(){
|
|
||||||
return this.serialise();
|
|
||||||
}
|
|
||||||
|
|
||||||
get createInstantInvite() { return this.getBit(0); }
|
|
||||||
set createInstantInvite(val) { this.setBit(0, val); }
|
|
||||||
|
|
||||||
get banMembers() { return this.getBit(1); }
|
|
||||||
set banMembers(val) { this.setBit(1, val); }
|
|
||||||
|
|
||||||
get kickMembers() { return this.getBit(2); }
|
|
||||||
set kickMembers(val) { this.setBit(2, val); }
|
|
||||||
|
|
||||||
get manageRoles() { return this.getBit(3); }
|
|
||||||
set manageRoles(val) { this.setBit(3, val); }
|
|
||||||
|
|
||||||
get manageChannels() { return this.getBit(4); }
|
|
||||||
set manageChannels(val) { this.setBit(4, val); }
|
|
||||||
|
|
||||||
get manageServer() { return this.getBit(5); }
|
|
||||||
set manageServer(val) { this.setBit(5, val); }
|
|
||||||
|
|
||||||
get readMessages() { return this.getBit(10); }
|
|
||||||
set readMessages(val) { this.setBit(10, val); }
|
|
||||||
|
|
||||||
get sendMessages() { return this.getBit(11); }
|
|
||||||
set sendMessages(val) { this.setBit(11, val); }
|
|
||||||
|
|
||||||
get sendTTSMessages() { return this.getBit(12); }
|
|
||||||
set sendTTSMessages(val) { this.setBit(12, val); }
|
|
||||||
|
|
||||||
get manageMessages() { return this.getBit(13); }
|
|
||||||
set manageMessages(val) { this.setBit(13, val); }
|
|
||||||
|
|
||||||
get embedLinks() { return this.getBit(14); }
|
|
||||||
set embedLinks(val) { this.setBit(14, val); }
|
|
||||||
|
|
||||||
get attachFiles() { return this.getBit(15); }
|
|
||||||
set attachFiles(val) { this.setBit(15, val); }
|
|
||||||
|
|
||||||
get readMessageHistory() { return this.getBit(16); }
|
|
||||||
set readMessageHistory(val) { this.setBit(16, val); }
|
|
||||||
|
|
||||||
get mentionEveryone() { return this.getBit(17); }
|
|
||||||
set mentionEveryone(val) { this.setBit(17, val); }
|
|
||||||
|
|
||||||
get voiceConnect() { return this.getBit(20); }
|
|
||||||
set voiceConnect(val) { this.setBit(20, val); }
|
|
||||||
|
|
||||||
get voiceSpeak() { return this.getBit(21); }
|
|
||||||
set voiceSpeak(val) { this.setBit(21, val); }
|
|
||||||
|
|
||||||
get voiceMuteMembers() { return this.getBit(22); }
|
|
||||||
set voiceMuteMembers(val) { this.setBit(22, val); }
|
|
||||||
|
|
||||||
get voiceDeafenMembers() { return this.getBit(23); }
|
|
||||||
set voiceDeafenMembers(val) { this.setBit(23, val); }
|
|
||||||
|
|
||||||
get voiceMoveMembers() { return this.getBit(24); }
|
|
||||||
set voiceMoveMembers(val) { this.setBit(24, val); }
|
|
||||||
|
|
||||||
get voiceUseVoiceActivation() { return this.getBit(25); }
|
|
||||||
set voiceUseVoiceActivation(val) { this.setBit(25, val); }
|
|
||||||
|
|
||||||
getBit(x) {
|
|
||||||
if (((this.packed >>> 3) & 1) === 1) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return ((this.packed >>> x) & 1) === 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
setBit(location, value) {
|
|
||||||
|
|
||||||
if (value) {
|
|
||||||
// allow that permission
|
|
||||||
this.packed |= (1 << location);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// not allowed
|
|
||||||
this.packed &= ~(1 << location);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
toString() {
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = ServerPermissions;
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
var Channel = require("./channel.js");
|
|
||||||
|
|
||||||
class VoiceChannel extends Channel{
|
|
||||||
|
|
||||||
constructor(data, server){
|
|
||||||
|
|
||||||
super(data, server);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
var ChannelPermissions = require("./ChannelPermissions.js");
|
|
||||||
|
|
||||||
class Channel {
|
|
||||||
|
|
||||||
constructor(data, server) {
|
|
||||||
this.serverID = server.id;
|
|
||||||
this.client = server.client;
|
|
||||||
this.name = data.name;
|
|
||||||
this.type = data.type;
|
|
||||||
this.topic = data.topic;
|
|
||||||
this.id = data.id;
|
|
||||||
this.messages = [];
|
|
||||||
this.roles = [];
|
|
||||||
|
|
||||||
if(data.permission_overwrites)
|
|
||||||
for (var role of data.permission_overwrites) {
|
|
||||||
this.roles.push( new ChannelPermissions(role, this) );
|
|
||||||
}
|
|
||||||
|
|
||||||
//this.isPrivate = isPrivate; //not sure about the implementation of this...
|
|
||||||
}
|
|
||||||
|
|
||||||
get server(){
|
|
||||||
return this.client.getServer("id", this.serverID);
|
|
||||||
}
|
|
||||||
|
|
||||||
get permissionOverwrites() {
|
|
||||||
return this.roles;
|
|
||||||
}
|
|
||||||
|
|
||||||
get permissions() {
|
|
||||||
return this.roles;
|
|
||||||
}
|
|
||||||
|
|
||||||
permissionsOf(member){
|
|
||||||
|
|
||||||
var mem = this.server.getMember("id", member.id);
|
|
||||||
|
|
||||||
if(mem){
|
|
||||||
return mem.permissionsIn(this);
|
|
||||||
}else{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
equals(object) {
|
|
||||||
return (object && object.id === this.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
addMessage(data) {
|
|
||||||
|
|
||||||
if (this.messages.length > 1000) {
|
|
||||||
this.messages.splice(0, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.getMessage("id", data.id)) {
|
|
||||||
this.messages.push(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.getMessage("id", data.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
getMessage(key, value) {
|
|
||||||
for (var message of this.messages) {
|
|
||||||
if (message[key] === value) {
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
toString() {
|
|
||||||
return "<#" + this.id + ">";
|
|
||||||
}
|
|
||||||
|
|
||||||
get isPrivate() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
get users() {
|
|
||||||
return this.server.members;
|
|
||||||
}
|
|
||||||
|
|
||||||
get members() {
|
|
||||||
return this.server.members;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = Channel;
|
|
||||||
51
src/index.js
51
src/index.js
@@ -1,51 +0,0 @@
|
|||||||
var request = require("superagent");
|
|
||||||
var Endpoints = require("./Endpoints.js");
|
|
||||||
var Client = require("./Client.js");
|
|
||||||
var Color = require("../ref/colours.js");
|
|
||||||
|
|
||||||
var Discord = {
|
|
||||||
Endpoints : Endpoints,
|
|
||||||
Client : Client,
|
|
||||||
Color : Color,
|
|
||||||
User : require("./user.js"),
|
|
||||||
Server : require("./server.js"),
|
|
||||||
Channel : require("./channel.js"),
|
|
||||||
Message : require("./message.js"),
|
|
||||||
Invite : require("./invite.js"),
|
|
||||||
PMChannel : require("./PMChannel.js"),
|
|
||||||
ServerPermissions : require("./ServerPermissions.js"),
|
|
||||||
ChannelPermissions : require("./ChannelPermissions.js"),
|
|
||||||
EvaluatedPermissiosn : require("./EvaluatedPermissions.js"),
|
|
||||||
VoiceChannel : require("./VoiceChannel.js"),
|
|
||||||
gameMap : require("../ref/gameMap.json"),
|
|
||||||
Embed : require("./Embeds/Embed.js"),
|
|
||||||
LinkEmbed : require("./Embeds/LinkEmbed.js"),
|
|
||||||
VideoEmbed : require("./Embeds/VideoEmbed.js"),
|
|
||||||
ImageEmbed : require("./Embeds/ImageEmbed.js"),
|
|
||||||
}
|
|
||||||
|
|
||||||
Discord.patchStrings = function () {
|
|
||||||
|
|
||||||
defineProperty("bold", "**");
|
|
||||||
defineProperty("underline", "__");
|
|
||||||
defineProperty("strike", "~~");
|
|
||||||
defineProperty("code", "`");
|
|
||||||
defineProperty("codeblock", "```");
|
|
||||||
defineProperty("newline", "\n");
|
|
||||||
|
|
||||||
Object.defineProperty(String.prototype, "italic", {
|
|
||||||
get: function () {
|
|
||||||
return "*" + this + "*";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
function defineProperty(name, joiner) {
|
|
||||||
Object.defineProperty(String.prototype, name, {
|
|
||||||
get: function () {
|
|
||||||
return joiner + this + joiner;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = Discord;
|
|
||||||
282
src/internal.js
282
src/internal.js
@@ -1,282 +0,0 @@
|
|||||||
/*
|
|
||||||
this file is deprecated and should only be used as
|
|
||||||
reference.
|
|
||||||
*/
|
|
||||||
|
|
||||||
var request = require( "superagent" );
|
|
||||||
var Endpoints = require( "./endpoints.js" );
|
|
||||||
|
|
||||||
var Internal = {};
|
|
||||||
|
|
||||||
Internal.XHR = {};
|
|
||||||
Internal.WebSocket = {};
|
|
||||||
|
|
||||||
Internal.WebSocket.properties = {
|
|
||||||
"$os": "discord.js",
|
|
||||||
"$browser": "discord.js",
|
|
||||||
"$device": "discord.js",
|
|
||||||
"$referrer": "",
|
|
||||||
"$referring_domain": ""
|
|
||||||
};
|
|
||||||
|
|
||||||
Internal.XHR.login = function( email, password, callback ) {
|
|
||||||
|
|
||||||
request
|
|
||||||
.post( Endpoints.LOGIN )
|
|
||||||
.send( {
|
|
||||||
email: email,
|
|
||||||
password: password
|
|
||||||
} )
|
|
||||||
.end( function( err, res ) {
|
|
||||||
if ( err ) {
|
|
||||||
callback( err );
|
|
||||||
} else {
|
|
||||||
callback( null, res.body.token );
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.logout = function( token, callback ) {
|
|
||||||
|
|
||||||
request
|
|
||||||
.post( Endpoints.LOGOUT )
|
|
||||||
.end( function( err, res ) {
|
|
||||||
|
|
||||||
err ? callback( err ) : callback( null );
|
|
||||||
|
|
||||||
} );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.createServer = function( token, name, region, callback ) {
|
|
||||||
|
|
||||||
request
|
|
||||||
.post( Endpoints.SERVERS )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.send( {
|
|
||||||
name: name,
|
|
||||||
region: region
|
|
||||||
} )
|
|
||||||
.end( function( err, res ) {
|
|
||||||
if ( err ) {
|
|
||||||
callback( err );
|
|
||||||
} else {
|
|
||||||
callback( null, res.body );
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.leaveServer = function( token, serverId, callback ) {
|
|
||||||
|
|
||||||
request
|
|
||||||
.del( Endpoints.SERVERS + "/" + serverId )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.end( function( err, res ) {
|
|
||||||
|
|
||||||
err ? callback( err ) : callback( null );
|
|
||||||
|
|
||||||
} );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.createInvite = function( token, channelId, options, callback ) {
|
|
||||||
request
|
|
||||||
.post( Endpoints.CHANNELS + "/" + channelId + "/invites" )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.send( options )
|
|
||||||
.end( function( err, res ) {
|
|
||||||
if ( err ) {
|
|
||||||
callback( err );
|
|
||||||
} else {
|
|
||||||
callback( null, res.body );
|
|
||||||
}
|
|
||||||
} )
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.startPM = function( token, selfID, userID, callback ) {
|
|
||||||
|
|
||||||
request
|
|
||||||
.post( Endpoints.USERS + "/" + selfID + "/channels" )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.send( {
|
|
||||||
recipient_id: userID
|
|
||||||
} )
|
|
||||||
.end( function( err, res ) {
|
|
||||||
if ( err ) {
|
|
||||||
callback( err );
|
|
||||||
} else {
|
|
||||||
callback( null, res.body );
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.sendMessage = function( token, channelID, messageParameters, callback ) {
|
|
||||||
request
|
|
||||||
.post( Endpoints.CHANNELS + "/" + channelID + "/messages" )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.send( messageParameters )
|
|
||||||
.end( function( err, res ) {
|
|
||||||
|
|
||||||
if ( err ) {
|
|
||||||
callback( err );
|
|
||||||
} else {
|
|
||||||
callback( null, res.body );
|
|
||||||
}
|
|
||||||
|
|
||||||
} );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.sendFile = function( token, channelID, file, fileName, callback ) {
|
|
||||||
request
|
|
||||||
.post( Endpoints.CHANNELS + "/" + channelID + "/messages" )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.attach("file", file, fileName)
|
|
||||||
.end( function( err, res ) {
|
|
||||||
|
|
||||||
if ( err ) {
|
|
||||||
callback( err );
|
|
||||||
} else {
|
|
||||||
callback( null, res.body );
|
|
||||||
}
|
|
||||||
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.deleteMessage = function( token, channelID, messageID, callback ) {
|
|
||||||
request
|
|
||||||
.del( Endpoints.CHANNELS + "/" + channelID + "/messages/" + messageID )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.end( function( err ) {
|
|
||||||
err ? callback( err ) : callback( null );
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.updateMessage = function( token, channelID, messageID, messageParameters, callback ) {
|
|
||||||
|
|
||||||
request
|
|
||||||
.patch( Endpoints.CHANNELS + "/" + channelID + "/messages/" + messageID )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.send( messageParameters )
|
|
||||||
.end( function( err, res ) {
|
|
||||||
if ( err ) {
|
|
||||||
callback( err );
|
|
||||||
} else {
|
|
||||||
callback( null, res.body );
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.getChannelLogs = function( token, channelID, amount, callback ) {
|
|
||||||
request
|
|
||||||
.get( Endpoints.CHANNELS + "/" + channelID + "/messages?limit=" + amount )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.end( function( err, res ) {
|
|
||||||
|
|
||||||
if ( err ) {
|
|
||||||
callback( err );
|
|
||||||
} else {
|
|
||||||
callback( null, res.body );
|
|
||||||
}
|
|
||||||
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.createChannel = function( token, serverID, name, type, callback ) {
|
|
||||||
request
|
|
||||||
.post( Endpoints.SERVERS + "/" + serverID + "/channels" )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.send( {
|
|
||||||
name: name,
|
|
||||||
type: type
|
|
||||||
} )
|
|
||||||
.end( function( err, res ) {
|
|
||||||
if ( err ) {
|
|
||||||
callback( err );
|
|
||||||
} else {
|
|
||||||
callback( null, res.body );
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.deleteChannel = function( token, channelID, callback ) {
|
|
||||||
|
|
||||||
request
|
|
||||||
.del( Endpoints.CHANNELS + "/" + channelID )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.end( function( err ) {
|
|
||||||
err ? callback( err ) : callback( null );
|
|
||||||
} );
|
|
||||||
|
|
||||||
}
|
|
||||||
Internal.XHR.deleteServer = function( token, serverID, callback ) {
|
|
||||||
request
|
|
||||||
.del( Endpoints.SERVERS + "/" + serverID )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.end( function( err ) {
|
|
||||||
err ? callback( err ) : callback( null );
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.getChannels = function( token, serverID, callback ) {
|
|
||||||
request
|
|
||||||
.get( Endpoints.SERVERS + "/" + serverID + "/channels" )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.end( function( err ) {
|
|
||||||
err ? callback( err ) : callback( null );
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.getServer = function( token, serverID, callback ) {
|
|
||||||
|
|
||||||
request
|
|
||||||
.get( Endpoints.SERVERS + "/" + serverID )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.end( function( err, res ) {
|
|
||||||
|
|
||||||
if ( err ) {
|
|
||||||
callback( err );
|
|
||||||
} else {
|
|
||||||
callback( null, res.body );
|
|
||||||
}
|
|
||||||
|
|
||||||
} );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.acceptInvite = function( token, inviteID, callback ) {
|
|
||||||
|
|
||||||
request
|
|
||||||
.post( Endpoints.API + "/invite/" + inviteID )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.end( function( err, res ) {
|
|
||||||
if ( err ) {
|
|
||||||
callback( err );
|
|
||||||
} else {
|
|
||||||
callback( null, res.body )
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Internal.XHR.setUsername = function( token, avatar, email, newPassword, password, username, callback ) {
|
|
||||||
|
|
||||||
request
|
|
||||||
.patch( Endpoints.API + "/users/@me" )
|
|
||||||
.set( "authorization", token )
|
|
||||||
.send( {
|
|
||||||
avatar: avatar,
|
|
||||||
email: email,
|
|
||||||
new_password: newPassword,
|
|
||||||
password: password,
|
|
||||||
username: username
|
|
||||||
} )
|
|
||||||
.end( function( err ) {
|
|
||||||
callback( err );
|
|
||||||
} );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.Internal = Internal;
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
class Invite {
|
|
||||||
constructor(data, client) {
|
|
||||||
this.max_age = data.max_age;
|
|
||||||
this.code = data.code;
|
|
||||||
this.server = client.getServer("id", data.guild.id);
|
|
||||||
this.revoked = data.revoked;
|
|
||||||
this.created_at = Date.parse(data.created_at);
|
|
||||||
this.temporary = data.temporary;
|
|
||||||
this.uses = data.uses;
|
|
||||||
this.max_uses = data.uses;
|
|
||||||
this.inviter = client.addUser(data.inviter);
|
|
||||||
this.xkcd = data.xkcdpass;
|
|
||||||
this.channel = client.getChannel("id", data.channel.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
get URL() {
|
|
||||||
var code = (this.xkcd ? this.xkcdpass : this.code);
|
|
||||||
return "https://discord.gg/" + code;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = Invite;
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
var PMChannel = require("./PMChannel.js");
|
|
||||||
var Embeddable = require("./Embeds/IEmbed.js");
|
|
||||||
|
|
||||||
class Message {
|
|
||||||
constructor(data, channel, mentions, author) {
|
|
||||||
this.tts = data.tts;
|
|
||||||
this.timestamp = Date.parse(data.timestamp);
|
|
||||||
this.nonce = data.nonce;
|
|
||||||
this.mentions = mentions;
|
|
||||||
this.everyoneMentioned = data.mention_everyone;
|
|
||||||
this.id = data.id;
|
|
||||||
this.embeds = [];
|
|
||||||
if (data.embeds) {
|
|
||||||
for (var embed of data.embeds) {
|
|
||||||
this.embeds.push( Embeddable.createEmbed(embed) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.editedTimestamp = data.edited_timestamp;
|
|
||||||
this.content = data.content.trim();
|
|
||||||
this.channel = channel;
|
|
||||||
|
|
||||||
if (this.isPrivate) {
|
|
||||||
this.author = this.channel.client.getUser("id", author.id);
|
|
||||||
} else {
|
|
||||||
this.author = this.channel.server ? this.channel.server.getMember("id", author.id) : this.channel.client.getUser("id", author.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.attachments = data.attachments;
|
|
||||||
}
|
|
||||||
|
|
||||||
isMentioned(user) {
|
|
||||||
var id = (user.id ? user.id : user);
|
|
||||||
for (var mention of this.mentions) {
|
|
||||||
if (mention.id === id) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
get sender() {
|
|
||||||
return this.author;
|
|
||||||
}
|
|
||||||
|
|
||||||
get isPrivate() {
|
|
||||||
return this.channel.isPrivate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*exports.Message.prototype.isPM = function() {
|
|
||||||
return ( this.channel instanceof PMChannel );
|
|
||||||
}*/
|
|
||||||
|
|
||||||
module.exports = Message;
|
|
||||||
185
src/server.js
185
src/server.js
@@ -1,185 +0,0 @@
|
|||||||
var ServerPermissions = require("./ServerPermissions.js");
|
|
||||||
var Member = require("./Member.js");
|
|
||||||
|
|
||||||
class Server {
|
|
||||||
constructor(data, client) {
|
|
||||||
this.client = client;
|
|
||||||
this.region = data.region;
|
|
||||||
this.ownerID = data.owner_id;
|
|
||||||
this.name = data.name;
|
|
||||||
this.id = data.id;
|
|
||||||
this.members = [];
|
|
||||||
this.channels = [];
|
|
||||||
this.icon = data.icon;
|
|
||||||
this.afkTimeout = data.afk_timeout;
|
|
||||||
this.afkChannelId = data.afk_channel_id;
|
|
||||||
|
|
||||||
this.roles = [];
|
|
||||||
|
|
||||||
for(var permissionGroup of data.roles){
|
|
||||||
this.roles.push( new ServerPermissions(permissionGroup, this) );
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!data.members){
|
|
||||||
data.members = [ client.user ];
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var member of data.members) {
|
|
||||||
|
|
||||||
// first we cache the user in our Discord Client,
|
|
||||||
// then we add it to our list. This way when we
|
|
||||||
// get a user from this server's member list,
|
|
||||||
// it will be identical (unless an async change occurred)
|
|
||||||
// to the client's cache.
|
|
||||||
if(member.user)
|
|
||||||
this.addMember(client.addUser(member.user), member.roles);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
get permissionGroups(){
|
|
||||||
return this.roles;
|
|
||||||
}
|
|
||||||
|
|
||||||
get permissions(){
|
|
||||||
return this.roles;
|
|
||||||
}
|
|
||||||
|
|
||||||
get iconURL() {
|
|
||||||
if (!this.icon)
|
|
||||||
return null;
|
|
||||||
return `https://discordapp.com/api/guilds/${this.id}/icons/${this.icon}.jpg`;
|
|
||||||
}
|
|
||||||
|
|
||||||
get afkChannel() {
|
|
||||||
if (!this.afkChannelId)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return this.getChannel("id", this.afkChannelId);
|
|
||||||
}
|
|
||||||
|
|
||||||
get defaultChannel() {
|
|
||||||
return this.getChannel("name", "general");
|
|
||||||
}
|
|
||||||
|
|
||||||
get owner() {
|
|
||||||
return this.client.getUser("id", this.ownerID);
|
|
||||||
}
|
|
||||||
|
|
||||||
get users() {
|
|
||||||
return this.members;
|
|
||||||
}
|
|
||||||
|
|
||||||
// get/set
|
|
||||||
|
|
||||||
getRole(key, value){
|
|
||||||
for (var role of this.roles) {
|
|
||||||
if (role[key] === value) {
|
|
||||||
return role;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
addRole(data){
|
|
||||||
|
|
||||||
if(this.getRole("id", data.id)){
|
|
||||||
return this.getRole("id", data.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
var perms = new ServerPermissions(data, this);
|
|
||||||
this.roles.push(perms);
|
|
||||||
return perms;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
updateRole(data){
|
|
||||||
|
|
||||||
var oldRole = this.getRole("id", data.id);
|
|
||||||
|
|
||||||
if(oldRole){
|
|
||||||
var index = this.roles.indexOf(oldRole);
|
|
||||||
this.roles[index] = new ServerPermissions(data, this);
|
|
||||||
|
|
||||||
return this.roles[index];
|
|
||||||
|
|
||||||
}else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
removeRole(id){
|
|
||||||
for (var roleId in this.roles) {
|
|
||||||
if (this.roles[roleId].id === id) {
|
|
||||||
this.roles.splice(roleId, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(var member of this.members){
|
|
||||||
for(var roleId in member.rawRoles){
|
|
||||||
if(member.rawRoles[roleId] === id){
|
|
||||||
member.rawRoles.splice(roleId, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
getChannel(key, value) {
|
|
||||||
for (var channel of this.channels) {
|
|
||||||
if (channel[key] === value) {
|
|
||||||
return channel;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
getMember(key, value){
|
|
||||||
for (var member of this.members) {
|
|
||||||
if (member[key] === value) {
|
|
||||||
return member;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
removeMember(key, value){
|
|
||||||
for (var member of this.members) {
|
|
||||||
if (member[key] === value) {
|
|
||||||
this.members.splice(key, 1);
|
|
||||||
return member;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
addChannel(chann) {
|
|
||||||
if (!this.getChannel("id", chann.id)) {
|
|
||||||
this.channels.push(chann);
|
|
||||||
}
|
|
||||||
return chann;
|
|
||||||
}
|
|
||||||
|
|
||||||
addMember(user, roles){
|
|
||||||
if (!this.getMember("id", user.id)){
|
|
||||||
var mem = new Member(user, this, roles);
|
|
||||||
this.members.push(mem);
|
|
||||||
}
|
|
||||||
return mem;
|
|
||||||
}
|
|
||||||
|
|
||||||
toString(){
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
equals(object){
|
|
||||||
return object.id === this.id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = Server;
|
|
||||||
41
src/user.js
41
src/user.js
@@ -1,41 +0,0 @@
|
|||||||
class User{
|
|
||||||
constructor( data ){
|
|
||||||
this.username = data.username;
|
|
||||||
this.discriminator = data.discriminator;
|
|
||||||
this.id = data.id;
|
|
||||||
this.avatar = data.avatar;
|
|
||||||
this.status = data.status || "offline";
|
|
||||||
this.gameId = data.game_id || null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// access using user.avatarURL;
|
|
||||||
get avatarURL(){
|
|
||||||
if( !this.avatar )
|
|
||||||
return null;
|
|
||||||
return `https://discordapp.com/api/users/${this.id}/avatars/${this.avatar}.jpg`;
|
|
||||||
}
|
|
||||||
|
|
||||||
mention(){
|
|
||||||
return `<@${this.id}>`;
|
|
||||||
}
|
|
||||||
|
|
||||||
toString(){
|
|
||||||
/*
|
|
||||||
if we embed a user in a String - like so:
|
|
||||||
"Yo " + user + " what's up?"
|
|
||||||
It would generate something along the lines of:
|
|
||||||
"Yo @hydrabolt what's up?"
|
|
||||||
*/
|
|
||||||
return this.mention();
|
|
||||||
}
|
|
||||||
|
|
||||||
equals(object){
|
|
||||||
return object.id === this.id;
|
|
||||||
}
|
|
||||||
|
|
||||||
equalsStrict(object){
|
|
||||||
return object.id === this.id && object.avatar === this.avatar && object.username === this.username && object.discriminator === this.discriminator;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = User;
|
|
||||||
Reference in New Issue
Block a user