mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
Added promises and logout
This commit is contained in:
@@ -107,34 +107,50 @@ var Client = (function () {
|
|||||||
value: function login() {
|
value: function login() {
|
||||||
var email = arguments.length <= 0 || arguments[0] === undefined ? "foo@bar.com" : arguments[0];
|
var email = arguments.length <= 0 || arguments[0] === undefined ? "foo@bar.com" : arguments[0];
|
||||||
var password = arguments.length <= 1 || arguments[1] === undefined ? "pass1234" : arguments[1];
|
var password = arguments.length <= 1 || arguments[1] === undefined ? "pass1234" : arguments[1];
|
||||||
var callback = arguments.length <= 2 || arguments[2] === undefined ? function () {} : arguments[2];
|
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
this.createws();
|
this.createws();
|
||||||
|
return new Promise(function (resolve, reject) {
|
||||||
|
if (self.state === 0 || self.state === 4) {
|
||||||
|
|
||||||
if (this.state === 0 || this.state === 4) {
|
self.state = 1; //set the state to logging in
|
||||||
|
|
||||||
this.state = 1; //set the state to logging in
|
request.post(Endpoints.LOGIN).send({
|
||||||
|
email: email,
|
||||||
|
password: password
|
||||||
|
}).end(function (err, res) {
|
||||||
|
|
||||||
request.post(Endpoints.LOGIN).send({
|
if (err) {
|
||||||
email: email,
|
self.state = 4; //set state to disconnected
|
||||||
password: password
|
self.trigger("disconnected");
|
||||||
}).end(function (err, res) {
|
self.websocket.close();
|
||||||
|
reject(err);
|
||||||
|
} else {
|
||||||
|
self.state = 2; //set state to logged in (not yet ready)
|
||||||
|
self.token = res.body.token; //set our token
|
||||||
|
self.trySendConnData();
|
||||||
|
resolve(self.token);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
reject(new Error("Client already logging in or ready"));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: "logout",
|
||||||
|
value: function logout() {
|
||||||
|
|
||||||
if (err) {
|
var self = this;
|
||||||
self.state = 4; //set state to disconnected
|
|
||||||
self.trigger("disconnected");
|
return new Promise(function (resolve, reject) {
|
||||||
self.websocket.close();
|
|
||||||
callback(err);
|
request.post(Endpoints.LOGOUT).set("authorization", self.token).end(function (err, res) {
|
||||||
} else {
|
|
||||||
self.state = 2; //set state to logged in (not yet ready)
|
if (err) reject(err);else resolve();
|
||||||
self.token = res.body.token; //set our token
|
|
||||||
self.trySendConnData();
|
|
||||||
callback(null, self.token);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
//def createws
|
//def createws
|
||||||
|
|||||||
227
src/Client.js
227
src/Client.js
@@ -42,11 +42,11 @@ class Client {
|
|||||||
this.serverCache = [];
|
this.serverCache = [];
|
||||||
this.readyTime = null;
|
this.readyTime = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
get uptime(){
|
get uptime() {
|
||||||
|
|
||||||
return (this.readyTime ? Date.now() - this.readyTime : null);
|
return (this.readyTime ? Date.now() - this.readyTime : null);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get ready() {
|
get ready() {
|
||||||
@@ -115,39 +115,64 @@ class Client {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//def login
|
//def login
|
||||||
login(email = "foo@bar.com", password = "pass1234", callback = function () { }) {
|
login(email = "foo@bar.com", password = "pass1234") {
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
this.createws();
|
this.createws();
|
||||||
|
return new Promise(function (resolve, reject) {
|
||||||
|
if (self.state === 0 || self.state === 4) {
|
||||||
|
|
||||||
|
self.state = 1; //set the state to logging in
|
||||||
|
|
||||||
|
request
|
||||||
|
.post(Endpoints.LOGIN)
|
||||||
|
.send({
|
||||||
|
email: email,
|
||||||
|
password: password
|
||||||
|
}).end(function (err, res) {
|
||||||
|
|
||||||
if (this.state === 0 || this.state === 4) {
|
if (err) {
|
||||||
|
self.state = 4; //set state to disconnected
|
||||||
|
self.trigger("disconnected");
|
||||||
|
self.websocket.close();
|
||||||
|
reject(err);
|
||||||
|
} else {
|
||||||
|
self.state = 2; //set state to logged in (not yet ready)
|
||||||
|
self.token = res.body.token; //set our token
|
||||||
|
self.trySendConnData();
|
||||||
|
resolve(self.token);
|
||||||
|
}
|
||||||
|
|
||||||
this.state = 1; //set the state to logging in
|
});
|
||||||
|
|
||||||
|
}else{
|
||||||
|
reject(new Error("Client already logging in or ready"));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
logout(){
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
return new Promise(function(resolve, reject){
|
||||||
|
|
||||||
request
|
request
|
||||||
.post(Endpoints.LOGIN)
|
.post(Endpoints.LOGOUT)
|
||||||
.send({
|
.set( "authorization", self.token )
|
||||||
email: email,
|
.end(function(err, res){
|
||||||
password: password
|
|
||||||
}).end(function (err, res) {
|
if(err)
|
||||||
|
reject(err);
|
||||||
if (err) {
|
else
|
||||||
self.state = 4; //set state to disconnected
|
resolve();
|
||||||
self.trigger("disconnected");
|
|
||||||
self.websocket.close();
|
|
||||||
callback(err);
|
|
||||||
} else {
|
|
||||||
self.state = 2; //set state to logged in (not yet ready)
|
|
||||||
self.token = res.body.token; //set our token
|
|
||||||
self.trySendConnData();
|
|
||||||
callback(null, self.token);
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//def createws
|
//def createws
|
||||||
@@ -274,148 +299,148 @@ class Client {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "GUILD_DELETE":
|
case "GUILD_DELETE":
|
||||||
|
|
||||||
var server = self.getServer("id", data.id);
|
var server = self.getServer("id", data.id);
|
||||||
|
|
||||||
if(server){
|
if (server) {
|
||||||
self.serverCache.splice(self.serverCache.indexOf(server), 1);
|
self.serverCache.splice(self.serverCache.indexOf(server), 1);
|
||||||
self.trigger("serverDelete", server);
|
self.trigger("serverDelete", server);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "CHANNEL_DELETE":
|
case "CHANNEL_DELETE":
|
||||||
|
|
||||||
var channel = self.getChannel("id", data.id);
|
var channel = self.getChannel("id", data.id);
|
||||||
|
|
||||||
if(channel){
|
if (channel) {
|
||||||
|
|
||||||
var server = channel.server;
|
var server = channel.server;
|
||||||
|
|
||||||
if(server){
|
if (server) {
|
||||||
|
|
||||||
server.channels.splice( server.channels.indexOf(channel), 1 );
|
server.channels.splice(server.channels.indexOf(channel), 1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.trigger("channelDelete", channel);
|
self.trigger("channelDelete", channel);
|
||||||
|
|
||||||
self.serverCache.splice( self.serverCache.indexOf(channel), 1 );
|
self.serverCache.splice(self.serverCache.indexOf(channel), 1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "GUILD_CREATE":
|
case "GUILD_CREATE":
|
||||||
|
|
||||||
var server = self.getServer("id", data.id);
|
var server = self.getServer("id", data.id);
|
||||||
|
|
||||||
if(!server){
|
if (!server) {
|
||||||
//if server doesn't already exist because duh
|
//if server doesn't already exist because duh
|
||||||
|
|
||||||
var serv = self.addServer(data);
|
var serv = self.addServer(data);
|
||||||
|
|
||||||
for (var channel of data.channels) {
|
for (var channel of data.channels) {
|
||||||
serv.channels.push(self.addChannel(channel, serv.id));
|
serv.channels.push(self.addChannel(channel, serv.id));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.trigger("serverCreate", server);
|
self.trigger("serverCreate", server);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "CHANNEL_CREATE":
|
case "CHANNEL_CREATE":
|
||||||
|
|
||||||
var channel = self.getChannel("id", data.id);
|
var channel = self.getChannel("id", data.id);
|
||||||
|
|
||||||
if(!channel){
|
if (!channel) {
|
||||||
|
|
||||||
var chann = self.addChannel( data, data.guild_id );
|
var chann = self.addChannel(data, data.guild_id);
|
||||||
var srv = self.getServer( "id", data.guild_id );
|
var srv = self.getServer("id", data.guild_id);
|
||||||
if(srv){
|
if (srv) {
|
||||||
srv.channels.push( chann );
|
srv.channels.push(chann);
|
||||||
}
|
}
|
||||||
self.trigger("channelCreate", chann);
|
self.trigger("channelCreate", chann);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "GUILD_MEMBER_ADD":
|
case "GUILD_MEMBER_ADD":
|
||||||
|
|
||||||
var server = self.getServer("id", data.guild_id);
|
var server = self.getServer("id", data.guild_id);
|
||||||
|
|
||||||
if(server){
|
if (server) {
|
||||||
|
|
||||||
var user = self.addUser(data.user); //if for whatever reason it doesn't exist..
|
var user = self.addUser(data.user); //if for whatever reason it doesn't exist..
|
||||||
|
|
||||||
if( !~server.members.indexOf(user) ){
|
if (!~server.members.indexOf(user)) {
|
||||||
server.members.push(user);
|
server.members.push(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.trigger("serverNewMember", user);
|
self.trigger("serverNewMember", user);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "GUILD_MEMBER_REMOVE":
|
case "GUILD_MEMBER_REMOVE":
|
||||||
|
|
||||||
var server = self.getServer("id", data.guild_id);
|
var server = self.getServer("id", data.guild_id);
|
||||||
|
|
||||||
if(server){
|
if (server) {
|
||||||
|
|
||||||
var user = self.addUser(data.user); //if for whatever reason it doesn't exist..
|
var user = self.addUser(data.user); //if for whatever reason it doesn't exist..
|
||||||
|
|
||||||
if( ~server.members.indexOf(user) ){
|
if (~server.members.indexOf(user)) {
|
||||||
server.members.splice( server.members.indexOf(user), 1 );
|
server.members.splice(server.members.indexOf(user), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.trigger("serverRemoveMember", user);
|
self.trigger("serverRemoveMember", user);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "USER_UPDATE":
|
case "USER_UPDATE":
|
||||||
|
|
||||||
if(self.user && data.id === self.user.id){
|
if (self.user && data.id === self.user.id) {
|
||||||
|
|
||||||
var newUser = new User(data); //not actually adding to the cache
|
var newUser = new User(data); //not actually adding to the cache
|
||||||
|
|
||||||
self.trigger("userUpdate", newUser, self.user);
|
self.trigger("userUpdate", newUser, self.user);
|
||||||
|
|
||||||
if( ~self.userCache.indexOf(self.user) ){
|
if (~self.userCache.indexOf(self.user)) {
|
||||||
self.userCache[self.userCache.indexOf(self.user)] = newUser;
|
self.userCache[self.userCache.indexOf(self.user)] = newUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.user = newUser;
|
self.user = newUser;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "PRESENCE_UPDATE":
|
case "PRESENCE_UPDATE":
|
||||||
|
|
||||||
var userInCache = self.getUser("id", data.user.id);
|
var userInCache = self.getUser("id", data.user.id);
|
||||||
|
|
||||||
if(userInCache){
|
if (userInCache) {
|
||||||
//user exists
|
//user exists
|
||||||
var presenceUser = new User(data.user);
|
var presenceUser = new User(data.user);
|
||||||
if(presenceUser.equalsStrict(userInCache)){
|
if (presenceUser.equalsStrict(userInCache)) {
|
||||||
//they're exactly the same, an actual presence update
|
//they're exactly the same, an actual presence update
|
||||||
self.trigger("presence", {
|
self.trigger("presence", {
|
||||||
user : userInCache,
|
user: userInCache,
|
||||||
status : data.status,
|
status: data.status,
|
||||||
server : self.getServer("id", data.guild_id),
|
server: self.getServer("id", data.guild_id),
|
||||||
gameId : data.game_id
|
gameId: data.game_id
|
||||||
});
|
});
|
||||||
}else{
|
} else {
|
||||||
//one of their details changed.
|
//one of their details changed.
|
||||||
self.trigger("userUpdate", userInCache, presenceUser);
|
self.trigger("userUpdate", userInCache, presenceUser);
|
||||||
self.userCache[self.userCache.indexOf(userInCache)] = presenceUser;
|
self.userCache[self.userCache.indexOf(userInCache)] = presenceUser;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
36
test/bot.js
36
test/bot.js
@@ -2,36 +2,40 @@ var Discord = require("../lib/index.js");
|
|||||||
var Auth = require("./auth.json");
|
var Auth = require("./auth.json");
|
||||||
var mybot = new Discord.Client();
|
var mybot = new Discord.Client();
|
||||||
|
|
||||||
mybot.login(Auth.email, Auth.password, function(err, res){
|
mybot.login(Auth.email+"a", Auth.password)
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
mybot.on("ready", function(){
|
.then(function (token) {
|
||||||
|
console.log("wooo!");
|
||||||
|
}).catch(function (error) {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
|
||||||
|
mybot.on("ready", function () {
|
||||||
console.log("Ready!");
|
console.log("Ready!");
|
||||||
})
|
})
|
||||||
|
|
||||||
mybot.on("message", function(msg){
|
mybot.on("message", function (msg) {
|
||||||
console.log("Another message by "+msg.author.username+"... now I have "+mybot.messages.length + " I have been online for " + mybot.uptime);
|
console.log("Another message by " + msg.author.username + "... now I have " + mybot.messages.length + " I have been online for " + mybot.uptime);
|
||||||
})
|
})
|
||||||
|
|
||||||
mybot.on("messageDelete", function(channel, message){
|
mybot.on("messageDelete", function (channel, message) {
|
||||||
|
|
||||||
console.log("MESSAGE WAS DELETED BY " + ( message ? message.author.username : channel.name ));
|
console.log("MESSAGE WAS DELETED BY " + (message ? message.author.username : channel.name));
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
mybot.on("messageUpdate", function(message, formerMessage){
|
mybot.on("messageUpdate", function (message, formerMessage) {
|
||||||
|
|
||||||
console.log(message.author.username, "changed", formerMessage.content, "to", message.content);
|
console.log(message.author.username, "changed", formerMessage.content, "to", message.content);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
mybot.on("serverNewMember", function(user){
|
mybot.on("serverNewMember", function (user) {
|
||||||
console.log("new user", user.username);
|
console.log("new user", user.username);
|
||||||
});
|
});
|
||||||
mybot.on("serverRemoveMember", function(user){
|
mybot.on("serverRemoveMember", function (user) {
|
||||||
console.log("left user", user.username);
|
console.log("left user", user.username);
|
||||||
});
|
});
|
||||||
mybot.on("userUpdate", function(oldUser, newUser){
|
mybot.on("userUpdate", function (oldUser, newUser) {
|
||||||
console.log(oldUser, "vs", newUser);
|
console.log(oldUser, "vs", newUser);
|
||||||
});
|
});
|
||||||
Reference in New Issue
Block a user