mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
Added createServer
This commit is contained in:
@@ -235,6 +235,22 @@ var Client = (function (_EventEmitter) {
|
||||
});
|
||||
};
|
||||
|
||||
Client.prototype.createServer = function createServer(name) {
|
||||
var region = arguments.length <= 1 || arguments[1] === undefined ? "london" : arguments[1];
|
||||
var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err, srv) {} : arguments[2];
|
||||
|
||||
var self = this;
|
||||
return new Promise(function (resolve, reject) {
|
||||
self.internal.createServer(name, region).then(function (srv) {
|
||||
callback(null, srv);
|
||||
resolve(srv);
|
||||
})["catch"](function (e) {
|
||||
callback(e);
|
||||
reject(e);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
return Client;
|
||||
})(EventEmitter);
|
||||
|
||||
|
||||
@@ -44,6 +44,31 @@ var InternalClient = (function () {
|
||||
this.resolver = new Resolver(this);
|
||||
}
|
||||
|
||||
// def createServer
|
||||
|
||||
InternalClient.prototype.createServer = function createServer(name) {
|
||||
var region = arguments.length <= 1 || arguments[1] === undefined ? "london" : arguments[1];
|
||||
|
||||
var self = this;
|
||||
return new Promise(function (resolve, reject) {
|
||||
name = self.resolver.resolveString(name);
|
||||
|
||||
request.post(Endpoints.SERVERS).set("authorization", self.token).send({ name: name, region: region }).end(function (err, res) {
|
||||
if (err) {
|
||||
reject(new Error(err.response.text));
|
||||
} else {
|
||||
// valid server, wait until it is cached
|
||||
var inter = setInterval(function () {
|
||||
if (self.servers.get("id", res.body.id)) {
|
||||
clearInterval(inter);
|
||||
resolve(self.servers.get("id", res.body.id));
|
||||
}
|
||||
}, 20);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// def login
|
||||
|
||||
InternalClient.prototype.login = function login(email, password) {
|
||||
@@ -251,6 +276,8 @@ var InternalClient = (function () {
|
||||
});
|
||||
};
|
||||
|
||||
// def sendFile
|
||||
|
||||
InternalClient.prototype.sendFile = function sendFile(where, _file) {
|
||||
var name = arguments.length <= 2 || arguments[2] === undefined ? "image.png" : arguments[2];
|
||||
|
||||
@@ -403,7 +430,51 @@ var InternalClient = (function () {
|
||||
client.emit("warn", "message created but channel is not cached");
|
||||
}
|
||||
break;
|
||||
case PacketType.MESSAGE_DELETE:
|
||||
// format https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-delete
|
||||
var channel = self.channels.get("id", data.channel_id);
|
||||
if (channel) {
|
||||
// potentially blank
|
||||
var msg = channel.messages.get("id", data.id);
|
||||
client.emit("messageDeleted", msg);
|
||||
if (msg) {
|
||||
channel.messages.remove(msg);
|
||||
}
|
||||
} else {
|
||||
client.emit("warn", "message was deleted but channel is not cached");
|
||||
}
|
||||
break;
|
||||
case PacketType.MESSAGE_UPDATE:
|
||||
// format https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-format
|
||||
var channel = self.channels.get("id", data.channel_id);
|
||||
if (channel) {
|
||||
// potentially blank
|
||||
var msg = channel.messages.get("id", data.id);
|
||||
|
||||
if (msg) {
|
||||
// old message exists
|
||||
data.nonce = data.nonce || msg.nonce;
|
||||
data.attachments = data.attachments || msg.attachments;
|
||||
data.tts = data.tts || msg.tts;
|
||||
data.embeds = data.embeds || msg.embeds;
|
||||
data.timestamp = data.timestamp || msg.timestamp;
|
||||
data.mention_everyone = data.mention_everyone || msg.everyoneMentioned;
|
||||
data.content = data.content || msg.content;
|
||||
data.mentions = data.mentions || msg.mentions;
|
||||
data.author = data.author || msg.author;
|
||||
var nmsg = channel.messages.update(msg, new Message(data, channel, client));
|
||||
client.emit("messageUpdated", nmsg, msg);
|
||||
}
|
||||
} else {
|
||||
client.emit("warn", "message was updated but channel is not cached");
|
||||
}
|
||||
break;
|
||||
case PacketType.SERVER_CREATE:
|
||||
var server = self.servers.get("id", data.id);
|
||||
if (!server) {
|
||||
self.servers.add(new Server(data, client));
|
||||
}
|
||||
break;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -102,7 +102,8 @@ var PacketType = {
|
||||
READY: "READY",
|
||||
MESSAGE_CREATE: "MESSAGE_CREATE",
|
||||
MESSAGE_UPDATE: "MESSAGE_UPDATE",
|
||||
MESSAGE_DELETE: "MESSAGE_DELETE"
|
||||
MESSAGE_DELETE: "MESSAGE_DELETE",
|
||||
SERVER_CREATE: "GUILD_CREATE"
|
||||
};
|
||||
|
||||
exports.API_ENDPOINT = API;
|
||||
|
||||
@@ -13,7 +13,7 @@ var Message = (function () {
|
||||
|
||||
this.channel = channel;
|
||||
this.client = client;
|
||||
|
||||
console.log("update", data);
|
||||
this.nonce = data.nonce;
|
||||
this.attachments = data.attachments;
|
||||
this.tts = data.tts;
|
||||
@@ -23,7 +23,9 @@ var Message = (function () {
|
||||
this.id = data.id;
|
||||
|
||||
if (data.edited_timestamp) this.editedTimestamp = Date.parse(data.edited_timestamp);
|
||||
this.author = client.internal.users.add(new User(data.author, client));
|
||||
|
||||
if (data.author instanceof User) this.author = data.author;else this.author = client.internal.users.add(new User(data.author, client));
|
||||
|
||||
this.content = data.content;
|
||||
this.mentions = new Cache();
|
||||
|
||||
@@ -31,7 +33,7 @@ var Message = (function () {
|
||||
// this is .add and not .get because it allows the bot to cache
|
||||
// users from messages from logs who may have left the server and were
|
||||
// not previously cached.
|
||||
_this.mentions.add(client.internal.users.add(new User(mention, client)));
|
||||
if (mention instanceof User) _this.mentions.push(mention);else _this.mentions.add(client.internal.users.add(new User(mention, client)));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,12 @@ a.on("debug", function (m) {
|
||||
return console.log("[debug]", m);
|
||||
});
|
||||
|
||||
a.on("message", function (m) {});
|
||||
a.on("message", function (m) {
|
||||
if (m.content === "$$$") a.internal.createServer("H a h").then(function (srv) {
|
||||
console.log(srv);
|
||||
a.reply(m, srv);
|
||||
});
|
||||
});
|
||||
|
||||
a.login(process.env["discordEmail"], process.env["discordPass"])["catch"](function (e) {
|
||||
return console.log(e);
|
||||
|
||||
@@ -211,6 +211,21 @@ class Client extends EventEmitter {
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
createServer(name, region="london", callback=function(err, srv){}){
|
||||
var self = this;
|
||||
return new Promise((resolve, reject) => {
|
||||
self.internal.createServer(name, region)
|
||||
.then(srv => {
|
||||
callback(null, srv);
|
||||
resolve(srv);
|
||||
})
|
||||
.catch(e => {
|
||||
callback(e);
|
||||
reject(e);
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Client;
|
||||
@@ -39,6 +39,32 @@ class InternalClient {
|
||||
this.private_channels = new Cache();
|
||||
this.resolver = new Resolver(this);
|
||||
}
|
||||
// def createServer
|
||||
createServer(name, region="london") {
|
||||
var self = this;
|
||||
return new Promise((resolve, reject) => {
|
||||
name = self.resolver.resolveString(name);
|
||||
|
||||
request
|
||||
.post(Endpoints.SERVERS)
|
||||
.set("authorization", self.token)
|
||||
.send({name, region})
|
||||
.end((err, res)=>{
|
||||
if(err){
|
||||
reject(new Error(err.response.text));
|
||||
}else{
|
||||
// valid server, wait until it is cached
|
||||
var inter = setInterval(() => {
|
||||
if(self.servers.get("id", res.body.id)){
|
||||
clearInterval(inter);
|
||||
resolve(self.servers.get("id", res.body.id));
|
||||
}
|
||||
}, 20);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// def login
|
||||
login(email, password) {
|
||||
var self = this;
|
||||
@@ -281,6 +307,7 @@ class InternalClient {
|
||||
|
||||
}
|
||||
|
||||
// def sendFile
|
||||
sendFile(where, _file, name="image.png"){
|
||||
var self = this;
|
||||
return new Promise((resolve, reject) => {
|
||||
@@ -442,7 +469,52 @@ class InternalClient {
|
||||
client.emit("warn", "message created but channel is not cached");
|
||||
}
|
||||
break;
|
||||
|
||||
case PacketType.MESSAGE_DELETE:
|
||||
// format https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-delete
|
||||
var channel = self.channels.get("id", data.channel_id);
|
||||
if (channel) {
|
||||
// potentially blank
|
||||
var msg = channel.messages.get("id", data.id);
|
||||
client.emit("messageDeleted", msg);
|
||||
if(msg){
|
||||
channel.messages.remove(msg);
|
||||
}
|
||||
} else {
|
||||
client.emit("warn", "message was deleted but channel is not cached");
|
||||
}
|
||||
break;
|
||||
case PacketType.MESSAGE_UPDATE:
|
||||
// format https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-format
|
||||
var channel = self.channels.get("id", data.channel_id);
|
||||
if (channel) {
|
||||
// potentially blank
|
||||
var msg = channel.messages.get("id", data.id);
|
||||
|
||||
|
||||
if(msg){
|
||||
// old message exists
|
||||
data.nonce = data.nonce || msg.nonce;
|
||||
data.attachments = data.attachments || msg.attachments;
|
||||
data.tts = data.tts || msg.tts;
|
||||
data.embeds = data.embeds || msg.embeds;
|
||||
data.timestamp = data.timestamp || msg.timestamp;
|
||||
data.mention_everyone = data.mention_everyone || msg.everyoneMentioned;
|
||||
data.content = data.content || msg.content;
|
||||
data.mentions = data.mentions || msg.mentions;
|
||||
data.author = data.author || msg.author;
|
||||
var nmsg = channel.messages.update(msg, new Message(data, channel, client));
|
||||
client.emit("messageUpdated", nmsg, msg);
|
||||
}
|
||||
} else {
|
||||
client.emit("warn", "message was updated but channel is not cached");
|
||||
}
|
||||
break;
|
||||
case PacketType.SERVER_CREATE:
|
||||
var server = self.servers.get("id", data.id);
|
||||
if(!server){
|
||||
self.servers.add(new Server(data, client));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,6 +65,7 @@ var PacketType = {
|
||||
MESSAGE_CREATE : "MESSAGE_CREATE",
|
||||
MESSAGE_UPDATE : "MESSAGE_UPDATE",
|
||||
MESSAGE_DELETE : "MESSAGE_DELETE",
|
||||
SERVER_CREATE : "GUILD_CREATE"
|
||||
}
|
||||
|
||||
exports.API_ENDPOINT = API;
|
||||
|
||||
@@ -7,7 +7,7 @@ class Message{
|
||||
constructor(data, channel, client){
|
||||
this.channel = channel;
|
||||
this.client = client;
|
||||
|
||||
console.log("update", data);
|
||||
this.nonce = data.nonce;
|
||||
this.attachments = data.attachments;
|
||||
this.tts = data.tts;
|
||||
@@ -18,7 +18,12 @@ class Message{
|
||||
|
||||
if(data.edited_timestamp)
|
||||
this.editedTimestamp = Date.parse(data.edited_timestamp);
|
||||
this.author = client.internal.users.add(new User(data.author, client));
|
||||
|
||||
if(data.author instanceof User)
|
||||
this.author = data.author;
|
||||
else
|
||||
this.author = client.internal.users.add(new User(data.author, client));
|
||||
|
||||
this.content = data.content;
|
||||
this.mentions = new Cache();
|
||||
|
||||
@@ -26,7 +31,10 @@ class Message{
|
||||
// this is .add and not .get because it allows the bot to cache
|
||||
// users from messages from logs who may have left the server and were
|
||||
// not previously cached.
|
||||
this.mentions.add(client.internal.users.add(new User(mention, client)));
|
||||
if(mention instanceof User)
|
||||
this.mentions.push(mention);
|
||||
else
|
||||
this.mentions.add(client.internal.users.add(new User(mention, client)));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,11 @@ var a = new module.exports.Client();
|
||||
a.on("debug", (m) => console.log("[debug]",m));
|
||||
|
||||
a.on("message", m => {
|
||||
if(m.content === "$$$")
|
||||
a.internal.createServer("H a h").then(srv => {
|
||||
console.log(srv);
|
||||
a.reply(m, srv);
|
||||
});
|
||||
});
|
||||
|
||||
a.login(process.env["discordEmail"], process.env["discordPass"]).catch((e)=>console.log(e));
|
||||
Reference in New Issue
Block a user