mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-11 17:13:31 +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