mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
Started rewrite
This commit is contained in:
@@ -1,4 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var ChannelPermissions=(function(){function ChannelPermissions(data,channel){_classCallCheck(this,ChannelPermissions);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;}ChannelPermissions.prototype.serialise = function 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};};ChannelPermissions.prototype.serialize = function serialize(){return this.serialise();};ChannelPermissions.prototype.getBit = function getBit(x){if((this.packed >>> 3 & 1) === 1){return true;}return (this.packed >>> x & 1) === 1;};ChannelPermissions.prototype.setBit = function setBit(location,value){if(value){ // allow that permission
|
||||
this.packed |= 1 << location;}else { // not allowed
|
||||
this.packed &= 1 << location;}};_createClass(ChannelPermissions,[{key:"asAllowDisallow",get:function get(){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};}},{key:"createInstantInvite",get:function get(){return this.getBit(0);},set:function set(val){this.setBit(0,val);}},{key:"manageRoles",get:function get(){return this.getBit(3);},set:function set(val){this.setBit(3,val);}},{key:"manageChannels",get:function get(){return this.getBit(4);},set:function set(val){this.setBit(4,val);}},{key:"readMessages",get:function get(){return this.getBit(10);},set:function set(val){this.setBit(10,val);}},{key:"sendMessages",get:function get(){return this.getBit(11);},set:function set(val){this.setBit(11,val);}},{key:"sendTTSMessages",get:function get(){return this.getBit(12);},set:function set(val){this.setBit(12,val);}},{key:"manageMessages",get:function get(){return this.getBit(13);},set:function set(val){this.setBit(13,val);}},{key:"embedLinks",get:function get(){return this.getBit(14);},set:function set(val){this.setBit(14,val);}},{key:"attachFiles",get:function get(){return this.getBit(15);},set:function set(val){this.setBit(15,val);}},{key:"readMessageHistory",get:function get(){return this.getBit(16);},set:function set(val){this.setBit(16,val);}},{key:"mentionEveryone",get:function get(){return this.getBit(17);},set:function set(val){this.setBit(17,val);}},{key:"voiceConnect",get:function get(){return this.getBit(20);},set:function set(val){this.setBit(20,val);}},{key:"voiceSpeak",get:function get(){return this.getBit(21);},set:function set(val){this.setBit(21,val);}},{key:"voiceMuteMembers",get:function get(){return this.getBit(22);},set:function set(val){this.setBit(22,val);}},{key:"voiceDeafenMembers",get:function get(){return this.getBit(23);},set:function set(val){this.setBit(23,val);}},{key:"voiceMoveMembers",get:function get(){return this.getBit(24);},set:function set(val){this.setBit(24,val);}},{key:"voiceUseVoiceActivation",get:function get(){return this.getBit(25);},set:function set(val){this.setBit(25,val);}}]);return ChannelPermissions;})();module.exports = ChannelPermissions;
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";
|
||||
41
lib/Client/Client.js
Normal file
41
lib/Client/Client.js
Normal file
@@ -0,0 +1,41 @@
|
||||
"use strict";
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
var InternalClient = require("./InternalClient.js");
|
||||
var EventEmitter = require("events");
|
||||
|
||||
var Client = (function (_EventEmitter) {
|
||||
_inherits(Client, _EventEmitter);
|
||||
|
||||
/*
|
||||
this class is an interface for the internal
|
||||
client.
|
||||
*/
|
||||
|
||||
function Client(options) {
|
||||
_classCallCheck(this, Client);
|
||||
|
||||
_EventEmitter.call(this, options);
|
||||
this.internal = new InternalClient(this);
|
||||
}
|
||||
|
||||
Client.prototype.login = function login(email, password) {
|
||||
var cb = arguments.length <= 2 || arguments[2] === undefined ? function (err, token) {} : arguments[2];
|
||||
|
||||
var self = this;
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
self.internal.login(email, password).then(function (token) {})["catch"](function (e) {
|
||||
cb(e);
|
||||
reject(e);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
return Client;
|
||||
})(EventEmitter);
|
||||
|
||||
module.exports = Client;
|
||||
7
lib/Client/ConnectionState.js
Normal file
7
lib/Client/ConnectionState.js
Normal file
@@ -0,0 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
exports.IDLE = 0;
|
||||
exports.LOGGING_IN = 1;
|
||||
exports.LOGGED_IN = 2;
|
||||
exports.READY = 3;
|
||||
exports.DISCONNECTED = 4;
|
||||
132
lib/Client/InternalClient.js
Normal file
132
lib/Client/InternalClient.js
Normal file
@@ -0,0 +1,132 @@
|
||||
"use strict";
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
var EventEmitter = require("events");
|
||||
var request = require("superagent");
|
||||
var ConnectionState = require("./ConnectionState.js");
|
||||
var Constants = require("../Constants.js"),
|
||||
Endpoints = Constants.Endpoints;
|
||||
|
||||
var zlib;
|
||||
|
||||
var InternalClient = (function () {
|
||||
function InternalClient(discordClient) {
|
||||
_classCallCheck(this, InternalClient);
|
||||
|
||||
this.client = discordClient;
|
||||
this.state = ConnectionState.IDLE;
|
||||
this.websocket = null;
|
||||
|
||||
if (this.client.options.compress) {
|
||||
zlib = require("zlib");
|
||||
}
|
||||
}
|
||||
|
||||
InternalClient.prototype.login = function login(email, password) {
|
||||
var self = this;
|
||||
var client = self.client;
|
||||
return new Promise(function (resolve, reject) {
|
||||
if (self.state === ConnectionState.DISCONNECTED || self.state === ConnectionState.IDLE) {
|
||||
|
||||
self.state = ConnectionState.LOGGING_IN;
|
||||
|
||||
request.post(Endpoints.LOGIN).send({ email: email, password: password }).end(function (err, res) {
|
||||
|
||||
if (err) {
|
||||
self.state = ConnectionState.DISCONNECTED;
|
||||
self.websocket = null;
|
||||
client.emit("disconnected");
|
||||
reject(new Error(err.response.text));
|
||||
} else {
|
||||
var token = res.body.token;
|
||||
self.state = ConnectionState.LOGGED_IN;
|
||||
self.token = token;
|
||||
|
||||
self.getGateway().then(function (url) {
|
||||
|
||||
self.createWS(url);
|
||||
resolve(token);
|
||||
})["catch"](function (e) {
|
||||
self.state = ConnectionState.DISCONNECTED;
|
||||
client.emit("disconnected");
|
||||
reject(new Error(err.response.text));
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
reject(new Error("already logging in/logged in/ready!"));
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
InternalClient.prototype.getGateway = function getGateway() {
|
||||
var self = this;
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
request.get(Endpoints.GATEWAY).set("authorization", self.token).end(function (err, res) {
|
||||
if (err) reject(err);else resolve(res.body.url);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
InternalClient.prototype.sendWS = function sendWS(object) {
|
||||
this.websocket.send(JSON.stringify(object));
|
||||
};
|
||||
|
||||
InternalClient.prototype.createWS = function createWS(url) {
|
||||
var self = this;
|
||||
|
||||
if (this.websocket) return false;
|
||||
|
||||
this.websocket = new WebSocket(url);
|
||||
|
||||
this.websocket.onopen = function () {
|
||||
|
||||
self.sendWS({
|
||||
op: 2,
|
||||
d: {
|
||||
token: self.token,
|
||||
v: 3,
|
||||
compress: self.client.options.compress,
|
||||
properties: {
|
||||
"$os": "discord.js",
|
||||
"$browser": "discord.js",
|
||||
"$device": "discord.js",
|
||||
"$referrer": "discord.js",
|
||||
"$referring_domain": "discord.js"
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
this.websocket.onclose = function () {
|
||||
self.websocket = null;
|
||||
self.state = ConnectionState.DISCONNECTED;
|
||||
self.client.emit("disconnected");
|
||||
};
|
||||
|
||||
this.websocket.onmessage = function (e) {
|
||||
|
||||
if (e.type === "Binary") {
|
||||
e.data = zlib.inflateSync(e.data).toString();
|
||||
}
|
||||
|
||||
var packet, data;
|
||||
try {
|
||||
packet = JSON.parse(e.data);
|
||||
data = packet.d;
|
||||
} catch (e) {
|
||||
self.client.emit("error", e);
|
||||
}
|
||||
|
||||
self.emit("raw", packet);
|
||||
|
||||
switch (packet.t) {}
|
||||
};
|
||||
};
|
||||
|
||||
return InternalClient;
|
||||
})();
|
||||
|
||||
module.exports = InternalClient;
|
||||
69
lib/Constants.js
Normal file
69
lib/Constants.js
Normal file
@@ -0,0 +1,69 @@
|
||||
"use strict";
|
||||
|
||||
var API = "https://discordapp.com/api";
|
||||
var Endpoints = {
|
||||
|
||||
// general endpoints
|
||||
LOGIN: API + "/auth/login",
|
||||
LOGOUT: API + "/auth/logout",
|
||||
ME: API + "/users/@me",
|
||||
GATEWAY: API + "/gateway",
|
||||
USER_CHANNELS: function USER_CHANNELS(userID) {
|
||||
return API + "/users/" + userID + "/channels";
|
||||
},
|
||||
|
||||
// servers
|
||||
SERVERS: API + "/guilds",
|
||||
SERVER: function SERVER(serverID) {
|
||||
return Endpoints.SERVERS + "/" + serverID;
|
||||
},
|
||||
SERVER_ICON: function SERVER_ICON(serverID, hash) {
|
||||
return Endpoints.SERVER(serverID) + "/icons/" + hash + ".jpg";
|
||||
},
|
||||
SERVER_PRUNE: function SERVER_PRUNE(serverID) {
|
||||
return Endpoints.SERVER(serverID) + "/prune";
|
||||
},
|
||||
SERVER_EMBED: function SERVER_EMBED(serverID) {
|
||||
return Endpoints.SERVER(serverID) + "/embed";
|
||||
},
|
||||
SERVER_INVITES: function SERVER_INVITES(serverID) {
|
||||
return Endpoints.SERVER(serverID) + "/invites";
|
||||
},
|
||||
SERVER_ROLES: function SERVER_ROLES(serverID) {
|
||||
return Endpoints.SERVER(serverID) + "/roles";
|
||||
},
|
||||
SERVER_BANS: function SERVER_BANS(serverID) {
|
||||
return Endpoints.SERVER(serverID) + "/bans";
|
||||
},
|
||||
SERVER_INTEGRATIONS: function SERVER_INTEGRATIONS(serverID) {
|
||||
return Endpoints.SERVER(serverID) + "/integrations";
|
||||
},
|
||||
SERVER_MEMBERS: function SERVER_MEMBERS(serverID) {
|
||||
return Endpoints.SERVER(serverID) + "/members";
|
||||
},
|
||||
SERVER_CHANNELS: function SERVER_CHANNELS(serverID) {
|
||||
return Endpoints.SERVER(serverID) + "/channels";
|
||||
},
|
||||
|
||||
// channels
|
||||
CHANNELS: API + "/channels",
|
||||
CHANNEL: function CHANNEL(channelID) {
|
||||
return Endpoints.CHANNELS + "/" + channelID;
|
||||
},
|
||||
CHANNEL_MESSAGES: function CHANNEL_MESSAGES(channelID) {
|
||||
return Endpoints.CHANNEL(channelID) + "/messages";
|
||||
},
|
||||
CHANNEL_INVITES: function CHANNEL_INVITES(channelID) {
|
||||
return Endpoints.CHANNEL(channelID) + "/invites";
|
||||
},
|
||||
CHANNEL_TYPING: function CHANNEL_TYPING(channelID) {
|
||||
return Endpoints.CHANNEL(channelID) + "/typing";
|
||||
},
|
||||
CHANNEL_PERMISSIONS: function CHANNEL_PERMISSIONS(channelID) {
|
||||
return Endpoints.CHANNEL(channelID) + "/permissions";
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
exports.API_ENDPOINT = API;
|
||||
exports.Endpoints = Endpoints;
|
||||
@@ -1,9 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
var Embed = function Embed(data) {
|
||||
_classCallCheck(this, Embed);
|
||||
};
|
||||
|
||||
module.exports = Embed;
|
||||
@@ -1,25 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
var Embed = function Embed(data) {
|
||||
_classCallCheck(this, Embed);
|
||||
|
||||
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,19 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
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,21 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
var Embed = require("./Embed.js");
|
||||
|
||||
var ImageEmbed = (function (_Embed) {
|
||||
_inherits(ImageEmbed, _Embed);
|
||||
|
||||
function ImageEmbed(data) {
|
||||
_classCallCheck(this, ImageEmbed);
|
||||
|
||||
_Embed.call(this, data);
|
||||
}
|
||||
|
||||
return ImageEmbed;
|
||||
})(Embed);
|
||||
|
||||
module.exports = ImageEmbed;
|
||||
@@ -1,21 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
var Embed = require("./Embed.js");
|
||||
|
||||
var LinkEmbed = (function (_Embed) {
|
||||
_inherits(LinkEmbed, _Embed);
|
||||
|
||||
function LinkEmbed(data) {
|
||||
_classCallCheck(this, LinkEmbed);
|
||||
|
||||
_Embed.call(this, data);
|
||||
}
|
||||
|
||||
return LinkEmbed;
|
||||
})(Embed);
|
||||
|
||||
module.exports = LinkEmbed;
|
||||
@@ -1,25 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
var Embed = require("./Embed.js");
|
||||
|
||||
var VideoEmbed = (function (_Embed) {
|
||||
_inherits(VideoEmbed, _Embed);
|
||||
|
||||
function VideoEmbed(data) {
|
||||
_classCallCheck(this, VideoEmbed);
|
||||
|
||||
_Embed.call(this, data);
|
||||
this.video = data.video;
|
||||
//width
|
||||
//height
|
||||
//url
|
||||
}
|
||||
|
||||
return VideoEmbed;
|
||||
})(Embed);
|
||||
|
||||
module.exports = VideoEmbed;
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";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,3 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var EvaluatedPermissions=(function(){function EvaluatedPermissions(data){_classCallCheck(this,EvaluatedPermissions);var self=this;this.packed = data;if(this.getBit(3))this.packed = 4294967295;}EvaluatedPermissions.prototype.serialise = function 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};};EvaluatedPermissions.prototype.serialize = function serialize(){return this.serialise();};EvaluatedPermissions.prototype.getBit = function getBit(x){if((this.packed >>> 3 & 1) === 1){return true;}return (this.packed >>> x & 1) === 1;};EvaluatedPermissions.prototype.setBit = function setBit(location,value){if(value){ // allow that permission
|
||||
this.packed |= 1 << location;}else { // not allowed
|
||||
this.packed &= 1 << location;}};_createClass(EvaluatedPermissions,[{key:"createInstantInvite",get:function get(){return this.getBit(0);},set:function set(val){this.setBit(0,val);}},{key:"manageRoles",get:function get(){return this.getBit(3);},set:function set(val){this.setBit(3,val);}},{key:"manageChannels",get:function get(){return this.getBit(4);},set:function set(val){this.setBit(4,val);}},{key:"readMessages",get:function get(){return this.getBit(10);},set:function set(val){this.setBit(10,val);}},{key:"sendMessages",get:function get(){return this.getBit(11);},set:function set(val){this.setBit(11,val);}},{key:"sendTTSMessages",get:function get(){return this.getBit(12);},set:function set(val){this.setBit(12,val);}},{key:"manageMessages",get:function get(){return this.getBit(13);},set:function set(val){this.setBit(13,val);}},{key:"embedLinks",get:function get(){return this.getBit(14);},set:function set(val){this.setBit(14,val);}},{key:"attachFiles",get:function get(){return this.getBit(15);},set:function set(val){this.setBit(15,val);}},{key:"readMessageHistory",get:function get(){return this.getBit(16);},set:function set(val){this.setBit(16,val);}},{key:"mentionEveryone",get:function get(){return this.getBit(17);},set:function set(val){this.setBit(17,val);}},{key:"voiceConnect",get:function get(){return this.getBit(20);},set:function set(val){this.setBit(20,val);}},{key:"voiceSpeak",get:function get(){return this.getBit(21);},set:function set(val){this.setBit(21,val);}},{key:"voiceMuteMembers",get:function get(){return this.getBit(22);},set:function set(val){this.setBit(22,val);}},{key:"voiceDeafenMembers",get:function get(){return this.getBit(23);},set:function set(val){this.setBit(23,val);}},{key:"voiceMoveMembers",get:function get(){return this.getBit(24);},set:function set(val){this.setBit(24,val);}},{key:"voiceUseVoiceActivation",get:function get(){return this.getBit(25);},set:function set(val){this.setBit(25,val);}}]);return EvaluatedPermissions;})();module.exports = EvaluatedPermissions;
|
||||
@@ -1,5 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _inherits(subClass,superClass){if(typeof superClass !== "function" && superClass !== null){throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var User=require("./user.js");var ServerPermissions=require("./ServerPermissions.js");var EvaluatedPermissions=require("./EvaluatedPermissions.js");var Member=(function(_User){_inherits(Member,_User);function Member(user,server,roles){_classCallCheck(this,Member);_User.call(this,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;}Member.prototype.removeRole = function removeRole(role){this.rawRoles.splice(this.rawRoles.indexOf(role.id),1);};Member.prototype.addRole = function addRole(role){if(this.rawRoles.indexOf(role.id) == -1){this.rawRoles.push(role.id);}};Member.prototype.hasRole = function hasRole(role){for(var _iterator=this.roles,_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[Symbol.iterator]();;) {var _ref;if(_isArray){if(_i >= _iterator.length)break;_ref = _iterator[_i++];}else {_i = _iterator.next();if(_i.done)break;_ref = _i.value;}var _role=_ref;if(role.id === _role.id)return true;}return false;};Member.prototype.permissionsIn = function permissionsIn(channel){if(channel.server.ownerID === this.id){return new EvaluatedPermissions(4294967295); //all perms
|
||||
}var affectingOverwrites=[];var affectingMemberOverwrites=[];for(var _iterator2=channel.roles,_isArray2=Array.isArray(_iterator2),_i2=0,_iterator2=_isArray2?_iterator2:_iterator2[Symbol.iterator]();;) {var _ref2;if(_isArray2){if(_i2 >= _iterator2.length)break;_ref2 = _iterator2[_i2++];}else {_i2 = _iterator2.next();if(_i2.done)break;_ref2 = _i2.value;}var overwrite=_ref2;if(overwrite.id == this.serverID){ // @everyone for channel
|
||||
affectingOverwrites.push(overwrite);break;}}for(var _iterator3=channel.roles,_isArray3=Array.isArray(_iterator3),_i3=0,_iterator3=_isArray3?_iterator3:_iterator3[Symbol.iterator]();;) {var _ref3;if(_isArray3){if(_i3 >= _iterator3.length)break;_ref3 = _iterator3[_i3++];}else {_i3 = _iterator3.next();if(_i3.done)break;_ref3 = _i3.value;}var overwrite=_ref3;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 _iterator4=affectingOverwrites,_isArray4=Array.isArray(_iterator4),_i4=0,_iterator4=_isArray4?_iterator4:_iterator4[Symbol.iterator]();;) {var _ref4;if(_isArray4){if(_i4 >= _iterator4.length)break;_ref4 = _iterator4[_i4++];}else {_i4 = _iterator4.next();if(_i4.done)break;_ref4 = _i4.value;}var overwrite=_ref4;finalPacked = finalPacked & ~overwrite.deny;finalPacked = finalPacked | overwrite.allow;}for(var _iterator5=affectingMemberOverwrites,_isArray5=Array.isArray(_iterator5),_i5=0,_iterator5=_isArray5?_iterator5:_iterator5[Symbol.iterator]();;) {var _ref5;if(_isArray5){if(_i5 >= _iterator5.length)break;_ref5 = _iterator5[_i5++];}else {_i5 = _iterator5.next();if(_i5.done)break;_ref5 = _i5.value;}var overwrite=_ref5;finalPacked = finalPacked & ~overwrite.deny;finalPacked = finalPacked | overwrite.allow;}return new EvaluatedPermissions(finalPacked);};_createClass(Member,[{key:"server",get:function get(){return this.client.getServer("id",this.serverID);}},{key:"roles",get:function get(){var ufRoles=[this.server.getRole("id",this.server.id)];for(var _iterator6=this.rawRoles,_isArray6=Array.isArray(_iterator6),_i6=0,_iterator6=_isArray6?_iterator6:_iterator6[Symbol.iterator]();;) {var _ref6;if(_isArray6){if(_i6 >= _iterator6.length)break;_ref6 = _iterator6[_i6++];}else {_i6 = _iterator6.next();if(_i6.done)break;_ref6 = _i6.value;}var rawRole=_ref6;ufRoles.push(this.server.getRole("id",rawRole));}return ufRoles;}},{key:"evalPerms",get:function get(){var basePerms=this.roles, //cache roles as it can be slightly expensive
|
||||
basePerm=basePerms[0].packed;basePerms = basePerms || [];for(var _iterator7=basePerms,_isArray7=Array.isArray(_iterator7),_i7=0,_iterator7=_isArray7?_iterator7:_iterator7[Symbol.iterator]();;) {var _ref7;if(_isArray7){if(_i7 >= _iterator7.length)break;_ref7 = _iterator7[_i7++];}else {_i7 = _iterator7.next();if(_i7.done)break;_ref7 = _i7.value;}var perm=_ref7;basePerm = basePerm | perm.packed;}return new EvaluatedPermissions(basePerm);}}]);return Member;})(User);module.exports = Member;
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var PMChannel=(function(){function PMChannel(data,client){_classCallCheck(this,PMChannel);this.user = client.getUser("id",data.recipient.id);this.id = data.id;this.messages = [];this.client = client;}PMChannel.prototype.addMessage = function addMessage(data){if(!this.getMessage("id",data.id)){this.messages.push(data);}return this.getMessage("id",data.id);};PMChannel.prototype.getMessage = function getMessage(key,value){if(this.messages.length > 1000){this.messages.splice(0,1);}for(var _iterator=this.messages,_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[Symbol.iterator]();;) {var _ref;if(_isArray){if(_i >= _iterator.length)break;_ref = _iterator[_i++];}else {_i = _iterator.next();if(_i.done)break;_ref = _i.value;}var message=_ref;if(message[key] === value){return message;}}return null;};_createClass(PMChannel,[{key:"isPrivate",get:function get(){return true;}}]);return PMChannel;})();module.exports = PMChannel;
|
||||
@@ -1,3 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var ServerPermissions=(function(){function ServerPermissions(data,server){_classCallCheck(this,ServerPermissions);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;}ServerPermissions.prototype.serialise = function 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};};ServerPermissions.prototype.serialize = function serialize(){return this.serialise();};ServerPermissions.prototype.getBit = function getBit(x){if((this.packed >>> 3 & 1) === 1){return true;}return (this.packed >>> x & 1) === 1;};ServerPermissions.prototype.setBit = function setBit(location,value){if(value){ // allow that permission
|
||||
this.packed |= 1 << location;}else { // not allowed
|
||||
this.packed &= ~(1 << location);}};ServerPermissions.prototype.toString = function toString(){return this.name;};_createClass(ServerPermissions,[{key:"createInstantInvite",get:function get(){return this.getBit(0);},set:function set(val){this.setBit(0,val);}},{key:"banMembers",get:function get(){return this.getBit(1);},set:function set(val){this.setBit(1,val);}},{key:"kickMembers",get:function get(){return this.getBit(2);},set:function set(val){this.setBit(2,val);}},{key:"manageRoles",get:function get(){return this.getBit(3);},set:function set(val){this.setBit(3,val);}},{key:"manageChannels",get:function get(){return this.getBit(4);},set:function set(val){this.setBit(4,val);}},{key:"manageServer",get:function get(){return this.getBit(5);},set:function set(val){this.setBit(5,val);}},{key:"readMessages",get:function get(){return this.getBit(10);},set:function set(val){this.setBit(10,val);}},{key:"sendMessages",get:function get(){return this.getBit(11);},set:function set(val){this.setBit(11,val);}},{key:"sendTTSMessages",get:function get(){return this.getBit(12);},set:function set(val){this.setBit(12,val);}},{key:"manageMessages",get:function get(){return this.getBit(13);},set:function set(val){this.setBit(13,val);}},{key:"embedLinks",get:function get(){return this.getBit(14);},set:function set(val){this.setBit(14,val);}},{key:"attachFiles",get:function get(){return this.getBit(15);},set:function set(val){this.setBit(15,val);}},{key:"readMessageHistory",get:function get(){return this.getBit(16);},set:function set(val){this.setBit(16,val);}},{key:"mentionEveryone",get:function get(){return this.getBit(17);},set:function set(val){this.setBit(17,val);}},{key:"voiceConnect",get:function get(){return this.getBit(20);},set:function set(val){this.setBit(20,val);}},{key:"voiceSpeak",get:function get(){return this.getBit(21);},set:function set(val){this.setBit(21,val);}},{key:"voiceMuteMembers",get:function get(){return this.getBit(22);},set:function set(val){this.setBit(22,val);}},{key:"voiceDeafenMembers",get:function get(){return this.getBit(23);},set:function set(val){this.setBit(23,val);}},{key:"voiceMoveMembers",get:function get(){return this.getBit(24);},set:function set(val){this.setBit(24,val);}},{key:"voiceUseVoiceActivation",get:function get(){return this.getBit(25);},set:function set(val){this.setBit(25,val);}}]);return ServerPermissions;})();module.exports = ServerPermissions;
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _inherits(subClass,superClass){if(typeof superClass !== "function" && superClass !== null){throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var Channel=require("./channel.js");var VoiceChannel=(function(_Channel){_inherits(VoiceChannel,_Channel);function VoiceChannel(data,server){_classCallCheck(this,VoiceChannel);_Channel.call(this,data,server);}return VoiceChannel;})(Channel);
|
||||
@@ -1,2 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var ChannelPermissions=require("./ChannelPermissions.js");var Channel=(function(){function Channel(data,server){_classCallCheck(this,Channel);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 _iterator=data.permission_overwrites,_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[Symbol.iterator]();;) {var _ref;if(_isArray){if(_i >= _iterator.length)break;_ref = _iterator[_i++];}else {_i = _iterator.next();if(_i.done)break;_ref = _i.value;}var role=_ref;this.roles.push(new ChannelPermissions(role,this));} //this.isPrivate = isPrivate; //not sure about the implementation of this...
|
||||
}Channel.prototype.permissionsOf = function permissionsOf(member){var mem=this.server.getMember("id",member.id);if(mem){return mem.permissionsIn(this);}else {return null;}};Channel.prototype.equals = function equals(object){return object && object.id === this.id;};Channel.prototype.addMessage = function 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);};Channel.prototype.getMessage = function getMessage(key,value){for(var _iterator2=this.messages,_isArray2=Array.isArray(_iterator2),_i2=0,_iterator2=_isArray2?_iterator2:_iterator2[Symbol.iterator]();;) {var _ref2;if(_isArray2){if(_i2 >= _iterator2.length)break;_ref2 = _iterator2[_i2++];}else {_i2 = _iterator2.next();if(_i2.done)break;_ref2 = _i2.value;}var message=_ref2;if(message[key] === value){return message;}}return null;};Channel.prototype.toString = function toString(){return "<#" + this.id + ">";};_createClass(Channel,[{key:"server",get:function get(){return this.client.getServer("id",this.serverID);}},{key:"permissionOverwrites",get:function get(){return this.roles;}},{key:"permissions",get:function get(){return this.roles;}},{key:"isPrivate",get:function get(){return false;}},{key:"users",get:function get(){return this.server.members;}},{key:"members",get:function get(){return this.server.members;}}]);return Channel;})();module.exports = Channel;
|
||||
11
lib/index.js
11
lib/index.js
@@ -1 +1,10 @@
|
||||
"use strict";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 get(){return "*" + this + "*";}});function defineProperty(name,joiner){Object.defineProperty(String.prototype,name,{get:function get(){return joiner + this + joiner;}});}};module.exports = Discord;
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
Client: require("./Client/Client.js")
|
||||
};
|
||||
|
||||
var a = new module.exports.Client();
|
||||
a.login("email", "password")["catch"](function (e) {
|
||||
return console.log(e);
|
||||
});
|
||||
@@ -1,4 +0,0 @@
|
||||
/*
|
||||
this file is deprecated and should only be used as
|
||||
reference.
|
||||
*/"use strict";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 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var Invite=(function(){function Invite(data,client){_classCallCheck(this,Invite);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);}_createClass(Invite,[{key:"URL",get:function get(){var code=this.xkcd?this.xkcdpass:this.code;return "https://discord.gg/" + code;}}]);return Invite;})();module.exports = Invite;
|
||||
@@ -1,3 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var PMChannel=require("./PMChannel.js");var Embeddable=require("./Embeds/IEmbed.js");var Message=(function(){function Message(data,channel,mentions,author){_classCallCheck(this,Message);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 _iterator=data.embeds,_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[Symbol.iterator]();;) {var _ref;if(_isArray){if(_i >= _iterator.length)break;_ref = _iterator[_i++];}else {_i = _iterator.next();if(_i.done)break;_ref = _i.value;}var embed=_ref;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;} /*exports.Message.prototype.isPM = function() {
|
||||
return ( this.channel instanceof PMChannel );
|
||||
}*/Message.prototype.isMentioned = function isMentioned(user){var id=user.id?user.id:user;for(var _iterator2=this.mentions,_isArray2=Array.isArray(_iterator2),_i2=0,_iterator2=_isArray2?_iterator2:_iterator2[Symbol.iterator]();;) {var _ref2;if(_isArray2){if(_i2 >= _iterator2.length)break;_ref2 = _iterator2[_i2++];}else {_i2 = _iterator2.next();if(_i2.done)break;_ref2 = _i2.value;}var mention=_ref2;if(mention.id === id){return true;}}return false;};_createClass(Message,[{key:"sender",get:function get(){return this.author;}},{key:"isPrivate",get:function get(){return this.channel.isPrivate;}}]);return Message;})();module.exports = Message;
|
||||
@@ -1,7 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var ServerPermissions=require("./ServerPermissions.js");var Member=require("./Member.js");var Server=(function(){function Server(data,client){_classCallCheck(this,Server);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 _iterator=data.roles,_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[Symbol.iterator]();;) {var _ref;if(_isArray){if(_i >= _iterator.length)break;_ref = _iterator[_i++];}else {_i = _iterator.next();if(_i.done)break;_ref = _i.value;}var permissionGroup=_ref;this.roles.push(new ServerPermissions(permissionGroup,this));}if(!data.members){data.members = [client.user];return;}for(var _iterator2=data.members,_isArray2=Array.isArray(_iterator2),_i2=0,_iterator2=_isArray2?_iterator2:_iterator2[Symbol.iterator]();;) {var _ref2;if(_isArray2){if(_i2 >= _iterator2.length)break;_ref2 = _iterator2[_i2++];}else {_i2 = _iterator2.next();if(_i2.done)break;_ref2 = _i2.value;}var member=_ref2; // 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/set
|
||||
Server.prototype.getRole = function getRole(key,value){for(var _iterator3=this.roles,_isArray3=Array.isArray(_iterator3),_i3=0,_iterator3=_isArray3?_iterator3:_iterator3[Symbol.iterator]();;) {var _ref3;if(_isArray3){if(_i3 >= _iterator3.length)break;_ref3 = _iterator3[_i3++];}else {_i3 = _iterator3.next();if(_i3.done)break;_ref3 = _i3.value;}var role=_ref3;if(role[key] === value){return role;}}return null;};Server.prototype.addRole = function 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;};Server.prototype.updateRole = function 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;}};Server.prototype.removeRole = function removeRole(id){for(var roleId in this.roles) {if(this.roles[roleId].id === id){this.roles.splice(roleId,1);}}for(var _iterator4=this.members,_isArray4=Array.isArray(_iterator4),_i4=0,_iterator4=_isArray4?_iterator4:_iterator4[Symbol.iterator]();;) {var _ref4;if(_isArray4){if(_i4 >= _iterator4.length)break;_ref4 = _iterator4[_i4++];}else {_i4 = _iterator4.next();if(_i4.done)break;_ref4 = _i4.value;}var member=_ref4;for(var roleId in member.rawRoles) {if(member.rawRoles[roleId] === id){member.rawRoles.splice(roleId,1);}}}};Server.prototype.getChannel = function getChannel(key,value){for(var _iterator5=this.channels,_isArray5=Array.isArray(_iterator5),_i5=0,_iterator5=_isArray5?_iterator5:_iterator5[Symbol.iterator]();;) {var _ref5;if(_isArray5){if(_i5 >= _iterator5.length)break;_ref5 = _iterator5[_i5++];}else {_i5 = _iterator5.next();if(_i5.done)break;_ref5 = _i5.value;}var channel=_ref5;if(channel[key] === value){return channel;}}return null;};Server.prototype.getMember = function getMember(key,value){for(var _iterator6=this.members,_isArray6=Array.isArray(_iterator6),_i6=0,_iterator6=_isArray6?_iterator6:_iterator6[Symbol.iterator]();;) {var _ref6;if(_isArray6){if(_i6 >= _iterator6.length)break;_ref6 = _iterator6[_i6++];}else {_i6 = _iterator6.next();if(_i6.done)break;_ref6 = _i6.value;}var member=_ref6;if(member[key] === value){return member;}}return null;};Server.prototype.removeMember = function removeMember(key,value){for(var _iterator7=this.members,_isArray7=Array.isArray(_iterator7),_i7=0,_iterator7=_isArray7?_iterator7:_iterator7[Symbol.iterator]();;) {var _ref7;if(_isArray7){if(_i7 >= _iterator7.length)break;_ref7 = _iterator7[_i7++];}else {_i7 = _iterator7.next();if(_i7.done)break;_ref7 = _i7.value;}var member=_ref7;if(member[key] === value){this.members.splice(key,1);return member;}}return false;};Server.prototype.addChannel = function addChannel(chann){if(!this.getChannel("id",chann.id)){this.channels.push(chann);}return chann;};Server.prototype.addMember = function addMember(user,roles){if(!this.getMember("id",user.id)){var mem=new Member(user,this,roles);this.members.push(mem);}return mem;};Server.prototype.toString = function toString(){return this.name;};Server.prototype.equals = function equals(object){return object.id === this.id;};_createClass(Server,[{key:"permissionGroups",get:function get(){return this.roles;}},{key:"permissions",get:function get(){return this.roles;}},{key:"iconURL",get:function get(){if(!this.icon)return null;return "https://discordapp.com/api/guilds/" + this.id + "/icons/" + this.icon + ".jpg";}},{key:"afkChannel",get:function get(){if(!this.afkChannelId)return false;return this.getChannel("id",this.afkChannelId);}},{key:"defaultChannel",get:function get(){return this.getChannel("name","general");}},{key:"owner",get:function get(){return this.client.getUser("id",this.ownerID);}},{key:"users",get:function get(){return this.members;}}]);return Server;})();module.exports = Server;
|
||||
@@ -1,7 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var User=(function(){function User(data){_classCallCheck(this,User);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;
|
||||
User.prototype.mention = function mention(){return "<@" + this.id + ">";};User.prototype.toString = function 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();};User.prototype.equals = function equals(object){return object.id === this.id;};User.prototype.equalsStrict = function equalsStrict(object){return object.id === this.id && object.avatar === this.avatar && object.username === this.username && object.discriminator === this.discriminator;};_createClass(User,[{key:"avatarURL",get:function get(){if(!this.avatar)return null;return "https://discordapp.com/api/users/" + this.id + "/avatars/" + this.avatar + ".jpg";}}]);return User;})();module.exports = User;
|
||||
34
src/Client/Client.js
Normal file
34
src/Client/Client.js
Normal file
@@ -0,0 +1,34 @@
|
||||
"use strict";
|
||||
|
||||
var InternalClient = require("./InternalClient.js");
|
||||
var EventEmitter = require("events");
|
||||
|
||||
class Client extends EventEmitter{
|
||||
/*
|
||||
this class is an interface for the internal
|
||||
client.
|
||||
*/
|
||||
constructor(options){
|
||||
super(options);
|
||||
this.internal = new InternalClient(this);
|
||||
}
|
||||
|
||||
login(email, password, cb=function(err, token){}){
|
||||
var self = this;
|
||||
return new Promise(function(resolve, reject){
|
||||
|
||||
self.internal.login(email, password)
|
||||
.then((token)=>{
|
||||
|
||||
})
|
||||
.catch((e)=>{
|
||||
cb(e);
|
||||
reject(e);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module.exports = Client;
|
||||
5
src/Client/ConnectionState.js
Normal file
5
src/Client/ConnectionState.js
Normal file
@@ -0,0 +1,5 @@
|
||||
exports.IDLE = 0;
|
||||
exports.LOGGING_IN = 1;
|
||||
exports.LOGGED_IN = 2;
|
||||
exports.READY = 3;
|
||||
exports.DISCONNECTED = 4;
|
||||
144
src/Client/InternalClient.js
Normal file
144
src/Client/InternalClient.js
Normal file
@@ -0,0 +1,144 @@
|
||||
"use strict";
|
||||
|
||||
var EventEmitter = require("events");
|
||||
var request = require("superagent");
|
||||
var ConnectionState = require("./ConnectionState.js");
|
||||
var Constants = require("../Constants.js"),
|
||||
Endpoints = Constants.Endpoints;
|
||||
|
||||
var zlib;
|
||||
|
||||
class InternalClient {
|
||||
constructor(discordClient) {
|
||||
this.client = discordClient;
|
||||
this.state = ConnectionState.IDLE;
|
||||
this.websocket = null;
|
||||
|
||||
if (this.client.options.compress) {
|
||||
zlib = require("zlib");
|
||||
}
|
||||
}
|
||||
|
||||
login(email, password) {
|
||||
var self = this;
|
||||
var client = self.client;
|
||||
return new Promise((resolve, reject) => {
|
||||
if (self.state === ConnectionState.DISCONNECTED || self.state === ConnectionState.IDLE) {
|
||||
|
||||
self.state = ConnectionState.LOGGING_IN;
|
||||
|
||||
request
|
||||
.post(Endpoints.LOGIN)
|
||||
.send({ email, password })
|
||||
.end(function (err, res) {
|
||||
|
||||
if (err) {
|
||||
self.state = ConnectionState.DISCONNECTED;
|
||||
self.websocket = null;
|
||||
client.emit("disconnected");
|
||||
reject(new Error(err.response.text));
|
||||
} else {
|
||||
var token = res.body.token;
|
||||
self.state = ConnectionState.LOGGED_IN;
|
||||
self.token = token;
|
||||
|
||||
self.getGateway().then((url) => {
|
||||
|
||||
self.createWS(url);
|
||||
resolve(token);
|
||||
|
||||
}).catch((e) => {
|
||||
self.state = ConnectionState.DISCONNECTED;
|
||||
client.emit("disconnected");
|
||||
reject(new Error(err.response.text));
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
} else {
|
||||
reject(new Error("already logging in/logged in/ready!"));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getGateway() {
|
||||
var self = this;
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
request
|
||||
.get(Endpoints.GATEWAY)
|
||||
.set("authorization", self.token)
|
||||
.end(function (err, res) {
|
||||
if (err)
|
||||
reject(err);
|
||||
else
|
||||
resolve(res.body.url);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
sendWS(object) {
|
||||
this.websocket.send(JSON.stringify(object));
|
||||
}
|
||||
|
||||
createWS(url) {
|
||||
var self = this;
|
||||
|
||||
if (this.websocket)
|
||||
return false;
|
||||
|
||||
this.websocket = new WebSocket(url);
|
||||
|
||||
this.websocket.onopen = () => {
|
||||
|
||||
self.sendWS({
|
||||
op: 2,
|
||||
d: {
|
||||
token: self.token,
|
||||
v: 3,
|
||||
compress: self.client.options.compress,
|
||||
properties: {
|
||||
"$os": "discord.js",
|
||||
"$browser": "discord.js",
|
||||
"$device": "discord.js",
|
||||
"$referrer": "discord.js",
|
||||
"$referring_domain": "discord.js"
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this.websocket.onclose = () => {
|
||||
self.websocket = null;
|
||||
self.state = ConnectionState.DISCONNECTED;
|
||||
self.client.emit("disconnected");
|
||||
}
|
||||
|
||||
this.websocket.onmessage = (e) => {
|
||||
|
||||
if (e.type === "Binary") {
|
||||
e.data = zlib.inflateSync(e.data).toString();
|
||||
}
|
||||
|
||||
var packet, data;
|
||||
try {
|
||||
packet = JSON.parse(e.data);
|
||||
data = packet.d;
|
||||
} catch (e) {
|
||||
self.client.emit("error", e);
|
||||
}
|
||||
|
||||
self.emit("raw", packet);
|
||||
|
||||
switch(packet.t){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = InternalClient;
|
||||
35
src/Constants.js
Normal file
35
src/Constants.js
Normal file
@@ -0,0 +1,35 @@
|
||||
var API = "https://discordapp.com/api";
|
||||
var Endpoints = {
|
||||
|
||||
// general endpoints
|
||||
LOGIN: `${API}/auth/login`,
|
||||
LOGOUT: `${API}/auth/logout`,
|
||||
ME: `${API}/users/@me`,
|
||||
GATEWAY: `${API}/gateway`,
|
||||
USER_CHANNELS: (userID) => `${API}/users/${userID}/channels`,
|
||||
|
||||
// servers
|
||||
SERVERS: `${API}/guilds`,
|
||||
SERVER: (serverID) => `${Endpoints.SERVERS}/${serverID}`,
|
||||
SERVER_ICON: (serverID, hash) => `${Endpoints.SERVER(serverID) }/icons/${hash}.jpg`,
|
||||
SERVER_PRUNE: (serverID) => `${Endpoints.SERVER(serverID) }/prune`,
|
||||
SERVER_EMBED: (serverID) => `${Endpoints.SERVER(serverID) }/embed`,
|
||||
SERVER_INVITES: (serverID) => `${Endpoints.SERVER(serverID) }/invites`,
|
||||
SERVER_ROLES: (serverID) => `${Endpoints.SERVER(serverID) }/roles`,
|
||||
SERVER_BANS: (serverID) => `${Endpoints.SERVER(serverID) }/bans`,
|
||||
SERVER_INTEGRATIONS: (serverID) => `${Endpoints.SERVER(serverID) }/integrations`,
|
||||
SERVER_MEMBERS: (serverID) => `${Endpoints.SERVER(serverID) }/members`,
|
||||
SERVER_CHANNELS: (serverID) => `${Endpoints.SERVER(serverID) }/channels`,
|
||||
|
||||
// channels
|
||||
CHANNELS: `${API}/channels`,
|
||||
CHANNEL: (channelID) => `${Endpoints.CHANNELS}/${channelID}`,
|
||||
CHANNEL_MESSAGES: (channelID) => `${Endpoints.CHANNEL(channelID) }/messages`,
|
||||
CHANNEL_INVITES: (channelID) => `${Endpoints.CHANNEL(channelID) }/invites`,
|
||||
CHANNEL_TYPING: (channelID) => `${Endpoints.CHANNEL(channelID) }/typing`,
|
||||
CHANNEL_PERMISSIONS: (channelID) => `${Endpoints.CHANNEL(channelID) }/permissions`,
|
||||
|
||||
}
|
||||
|
||||
exports.API_ENDPOINT = API;
|
||||
exports.Endpoints = Endpoints;
|
||||
6
src/index.js
Normal file
6
src/index.js
Normal file
@@ -0,0 +1,6 @@
|
||||
module.exports = {
|
||||
Client : require("./Client/Client.js")
|
||||
}
|
||||
|
||||
var a = new module.exports.Client();
|
||||
a.login("email", "password").catch((e)=>console.log(e));
|
||||
Reference in New Issue
Block a user