mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-16 03:23:29 +01:00
Fixed typing and added createChannel
This commit is contained in:
@@ -251,6 +251,8 @@ var Client = (function (_EventEmitter) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// def leaveServer
|
||||||
|
|
||||||
Client.prototype.leaveServer = function leaveServer(server) {
|
Client.prototype.leaveServer = function leaveServer(server) {
|
||||||
var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1];
|
var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1];
|
||||||
|
|
||||||
@@ -265,6 +267,26 @@ var Client = (function (_EventEmitter) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// def createChannel
|
||||||
|
|
||||||
|
Client.prototype.createChannel = function createChannel(server, name) {
|
||||||
|
var type = arguments.length <= 2 || arguments[2] === undefined ? "text" : arguments[2];
|
||||||
|
var callback = arguments.length <= 3 || arguments[3] === undefined ? function (err, channel) {} : arguments[3];
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
return new Promise(function (resolve, reject) {
|
||||||
|
if (typeof type === "function") {
|
||||||
|
// options is the callback
|
||||||
|
callback = type;
|
||||||
|
}
|
||||||
|
self.internal.createChannel(server, name, type).then(function (channel) {
|
||||||
|
callback(channel);resolve(channel);
|
||||||
|
})["catch"](function (e) {
|
||||||
|
callback(e);reject(e);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
return Client;
|
return Client;
|
||||||
})(EventEmitter);
|
})(EventEmitter);
|
||||||
|
|
||||||
|
|||||||
@@ -384,6 +384,35 @@ var InternalClient = (function () {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// def createChannel
|
||||||
|
|
||||||
|
InternalClient.prototype.createChannel = function createChannel(server, name) {
|
||||||
|
var type = arguments.length <= 2 || arguments[2] === undefined ? "text" : arguments[2];
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
return new Promise(function (resolve, reject) {
|
||||||
|
|
||||||
|
server = self.resolver.resolveServer(server);
|
||||||
|
|
||||||
|
request.post(Endpoints.SERVER_CHANNELS(server.id)).set("authorization", self.token).send({
|
||||||
|
name: name, type: type
|
||||||
|
}).end(function (err, res) {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
} else {
|
||||||
|
var channel;
|
||||||
|
if (res.body.type === "text") {
|
||||||
|
channel = new TextChannel(res.body, self.client, server);
|
||||||
|
} else {
|
||||||
|
channel = new VoiceChannel(res.body, self.client, server);
|
||||||
|
}
|
||||||
|
resolve(server.channels.add(self.channels.add(channel)));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
InternalClient.prototype.sendWS = function sendWS(object) {
|
InternalClient.prototype.sendWS = function sendWS(object) {
|
||||||
if (this.websocket) this.websocket.send(JSON.stringify(object));
|
if (this.websocket) this.websocket.send(JSON.stringify(object));
|
||||||
};
|
};
|
||||||
@@ -760,11 +789,14 @@ var InternalClient = (function () {
|
|||||||
var channel = self.channels.get("id", data.channel_id);
|
var channel = self.channels.get("id", data.channel_id);
|
||||||
|
|
||||||
if (user && channel) {
|
if (user && channel) {
|
||||||
|
if (user.typing.since) {
|
||||||
user.typing.since = Date.now();
|
user.typing.since = Date.now();
|
||||||
user.typing.channel = channel;
|
user.typing.channel = channel;
|
||||||
client.emit("userTypingStart", user, channel);
|
} else {
|
||||||
|
user.typing.since = Date.now();
|
||||||
|
user.typing.channel = channel;
|
||||||
|
client.emit("userTypingStart", user, channel);
|
||||||
|
}
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
if (Date.now() - user.typing.since > 5990) {
|
if (Date.now() - user.typing.since > 5990) {
|
||||||
// they haven't typed since
|
// they haven't typed since
|
||||||
|
|||||||
@@ -13,7 +13,10 @@ a.on("warn", function (m) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
a.on("message", function (m) {
|
a.on("message", function (m) {
|
||||||
if (m.content === "$$$") a.reply(m, "I have you cached as being " + m.author.status);
|
if (m.content === "$$$") a.createChannel(m.channel.server, "quackducks").then(function (c) {
|
||||||
|
|
||||||
|
a.sendMessage(c, "I'm alive!");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
a.on("userTypingStart", function (user, chan) {
|
a.on("userTypingStart", function (user, chan) {
|
||||||
console.log(user.username + " typing");
|
console.log(user.username + " typing");
|
||||||
|
|||||||
@@ -227,6 +227,7 @@ class Client extends EventEmitter {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// def leaveServer
|
||||||
leaveServer(server, callback=function(err){}){
|
leaveServer(server, callback=function(err){}){
|
||||||
var self = this;
|
var self = this;
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
@@ -241,6 +242,25 @@ class Client extends EventEmitter {
|
|||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// def createChannel
|
||||||
|
createChannel(server, name, type="text", callback=function(err,channel){}){
|
||||||
|
var self = this;
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (typeof type === "function") {
|
||||||
|
// options is the callback
|
||||||
|
callback = type;
|
||||||
|
}
|
||||||
|
self.internal.createChannel(server, name, type)
|
||||||
|
.then((channel) => {
|
||||||
|
callback(channel); resolve(channel);
|
||||||
|
})
|
||||||
|
.catch(e => {
|
||||||
|
callback(e); reject(e);
|
||||||
|
})
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = Client;
|
module.exports = Client;
|
||||||
@@ -413,9 +413,41 @@ class InternalClient {
|
|||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// def createChannel
|
||||||
|
createChannel(server, name, type = "text") {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
|
||||||
|
server = self.resolver.resolveServer(server);
|
||||||
|
|
||||||
|
request
|
||||||
|
.post(Endpoints.SERVER_CHANNELS(server.id))
|
||||||
|
.set("authorization", self.token)
|
||||||
|
.send({
|
||||||
|
name, type
|
||||||
|
})
|
||||||
|
.end((err, res) => {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
} else {
|
||||||
|
var channel;
|
||||||
|
if (res.body.type === "text") {
|
||||||
|
channel = new TextChannel(res.body, self.client, server);
|
||||||
|
} else {
|
||||||
|
channel = new VoiceChannel(res.body, self.client, server);
|
||||||
|
}
|
||||||
|
resolve(server.channels.add(self.channels.add(channel)));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
sendWS(object) {
|
sendWS(object) {
|
||||||
if(this.websocket)
|
if (this.websocket)
|
||||||
this.websocket.send(JSON.stringify(object));
|
this.websocket.send(JSON.stringify(object));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -703,7 +735,7 @@ class InternalClient {
|
|||||||
case PacketType.SERVER_MEMBER_ADD:
|
case PacketType.SERVER_MEMBER_ADD:
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = self.servers.get("id", data.guild_id);
|
||||||
if (server) {
|
if (server) {
|
||||||
|
|
||||||
server.memberMap[data.user.id] = {
|
server.memberMap[data.user.id] = {
|
||||||
roles: data.roles.map((pid) => server.roles.get("id", pid)),
|
roles: data.roles.map((pid) => server.roles.get("id", pid)),
|
||||||
mute: false,
|
mute: false,
|
||||||
@@ -715,7 +747,7 @@ class InternalClient {
|
|||||||
"serverNewMember",
|
"serverNewMember",
|
||||||
server,
|
server,
|
||||||
server.members.add(self.users.add(new User(data.user, client)))
|
server.members.add(self.users.add(new User(data.user, client)))
|
||||||
);
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "server member added but server doesn't exist in cache");
|
client.emit("warn", "server member added but server doesn't exist in cache");
|
||||||
@@ -723,106 +755,109 @@ class InternalClient {
|
|||||||
break;
|
break;
|
||||||
case PacketType.SERVER_MEMBER_REMOVE:
|
case PacketType.SERVER_MEMBER_REMOVE:
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = self.servers.get("id", data.guild_id);
|
||||||
if(server){
|
if (server) {
|
||||||
var user = self.users.get("id", data.user.id);
|
var user = self.users.get("id", data.user.id);
|
||||||
if(user){
|
if (user) {
|
||||||
server.memberMap[data.user.id] = null;
|
server.memberMap[data.user.id] = null;
|
||||||
server.members.remove(user);
|
server.members.remove(user);
|
||||||
client.emit("serverMemberRemoved", server, user);
|
client.emit("serverMemberRemoved", server, user);
|
||||||
}else{
|
} else {
|
||||||
client.emit("warn", "server member removed but user doesn't exist in cache");
|
client.emit("warn", "server member removed but user doesn't exist in cache");
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
client.emit("warn", "server member removed but server doesn't exist in cache");
|
client.emit("warn", "server member removed but server doesn't exist in cache");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.SERVER_MEMBER_UPDATE:
|
case PacketType.SERVER_MEMBER_UPDATE:
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = self.servers.get("id", data.guild_id);
|
||||||
if(server){
|
if (server) {
|
||||||
var user = self.users.get("id", data.user.id);
|
var user = self.users.get("id", data.user.id);
|
||||||
if(user){
|
if (user) {
|
||||||
server.memberMap[data.user.id].roles = data.roles.map((pid) => server.roles.get("id", pid));
|
server.memberMap[data.user.id].roles = data.roles.map((pid) => server.roles.get("id", pid));
|
||||||
server.memberMap[data.user.id].mute = data.mute;
|
server.memberMap[data.user.id].mute = data.mute;
|
||||||
server.memberMap[data.user.id].deaf = data.deaf;
|
server.memberMap[data.user.id].deaf = data.deaf;
|
||||||
client.emit("serverMemberUpdated", server, user);
|
client.emit("serverMemberUpdated", server, user);
|
||||||
}else{
|
} else {
|
||||||
client.emit("warn", "server member removed but user doesn't exist in cache");
|
client.emit("warn", "server member removed but user doesn't exist in cache");
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
client.emit("warn", "server member updated but server doesn't exist in cache");
|
client.emit("warn", "server member updated but server doesn't exist in cache");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.PRESENCE_UPDATE:
|
case PacketType.PRESENCE_UPDATE:
|
||||||
|
|
||||||
var user = self.users.get("id", data.user.id);
|
var user = self.users.get("id", data.user.id);
|
||||||
|
|
||||||
if(user){
|
if (user) {
|
||||||
|
|
||||||
data.user.username = data.user.username || user.username;
|
data.user.username = data.user.username || user.username;
|
||||||
data.user.id = data.user.id || user.id;
|
data.user.id = data.user.id || user.id;
|
||||||
data.user.avatar = data.user.avatar || user.avatar;
|
data.user.avatar = data.user.avatar || user.avatar;
|
||||||
data.user.discriminator = data.user.discriminator || user.discriminator;
|
data.user.discriminator = data.user.discriminator || user.discriminator;
|
||||||
|
|
||||||
var presenceUser = new User(data.user, client);
|
var presenceUser = new User(data.user, client);
|
||||||
|
|
||||||
if(presenceUser.equalsStrict(user)){
|
if (presenceUser.equalsStrict(user)) {
|
||||||
// a real presence update
|
// a real presence update
|
||||||
client.emit("presence", user, data.status, data.game_id);
|
client.emit("presence", user, data.status, data.game_id);
|
||||||
user.status = data.status;
|
user.status = data.status;
|
||||||
user.gameID = data.game_id;
|
user.gameID = data.game_id;
|
||||||
|
|
||||||
}else{
|
} else {
|
||||||
// a name change or avatar change
|
// a name change or avatar change
|
||||||
client.emit("userUpdate", user, presenceUser);
|
client.emit("userUpdate", user, presenceUser);
|
||||||
self.users.update(user, presenceUser);
|
self.users.update(user, presenceUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
}else{
|
} else {
|
||||||
client.emit("warn", "presence update but user not in cache");
|
client.emit("warn", "presence update but user not in cache");
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case PacketType.TYPING:
|
case PacketType.TYPING:
|
||||||
|
|
||||||
var user = self.users.get("id", data.user_id);
|
var user = self.users.get("id", data.user_id);
|
||||||
var channel = self.channels.get("id", data.channel_id);
|
var channel = self.channels.get("id", data.channel_id);
|
||||||
|
|
||||||
if(user && channel){
|
if (user && channel) {
|
||||||
|
if (user.typing.since) {
|
||||||
user.typing.since = Date.now();
|
user.typing.since = Date.now();
|
||||||
user.typing.channel = channel;
|
user.typing.channel = channel;
|
||||||
client.emit("userTypingStart", user, channel);
|
} else {
|
||||||
|
user.typing.since = Date.now();
|
||||||
setTimeout( () => {
|
user.typing.channel = channel;
|
||||||
if(Date.now() - user.typing.since > 5990){
|
client.emit("userTypingStart", user, channel);
|
||||||
|
}
|
||||||
|
setTimeout(() => {
|
||||||
|
if (Date.now() - user.typing.since > 5990) {
|
||||||
// they haven't typed since
|
// they haven't typed since
|
||||||
user.typing.since = null;
|
user.typing.since = null;
|
||||||
user.typing.channel = null;
|
user.typing.channel = null;
|
||||||
client.emit("userTypingStop", user, channel);
|
client.emit("userTypingStop", user, channel);
|
||||||
}
|
}
|
||||||
}, 6000);
|
}, 6000);
|
||||||
|
|
||||||
}else{
|
} else {
|
||||||
client.emit("warn", "user typing but user or channel not existant in cache");
|
client.emit("warn", "user typing but user or channel not existant in cache");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.SERVER_BAN_ADD:
|
case PacketType.SERVER_BAN_ADD:
|
||||||
var user = self.users.get("id", data.user.id);
|
var user = self.users.get("id", data.user.id);
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = self.servers.get("id", data.guild_id);
|
||||||
|
|
||||||
if(user && server){
|
if (user && server) {
|
||||||
client.emit("userBanned", user, server);
|
client.emit("userBanned", user, server);
|
||||||
}else{
|
} else {
|
||||||
client.emit("warn", "user banned but user/server not in cache.");
|
client.emit("warn", "user banned but user/server not in cache.");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.SERVER_BAN_REMOVE:
|
case PacketType.SERVER_BAN_REMOVE:
|
||||||
var user = self.users.get("id", data.user.id);
|
var user = self.users.get("id", data.user.id);
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = self.servers.get("id", data.guild_id);
|
||||||
|
|
||||||
if(user && server){
|
if (user && server) {
|
||||||
client.emit("userUnbanned", user, server);
|
client.emit("userUnbanned", user, server);
|
||||||
}else{
|
} else {
|
||||||
client.emit("warn", "user unbanned but user/server not in cache.");
|
client.emit("warn", "user unbanned but user/server not in cache.");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -8,7 +8,11 @@ a.on("warn", (m) => console.log("[warn]", m));
|
|||||||
|
|
||||||
a.on("message", m => {
|
a.on("message", m => {
|
||||||
if(m.content === "$$$")
|
if(m.content === "$$$")
|
||||||
a.reply(m, "I have you cached as being " + m.author.status);
|
a.createChannel(m.channel.server, "quackducks").then( c => {
|
||||||
|
|
||||||
|
a.sendMessage(c, "I'm alive!");
|
||||||
|
|
||||||
|
} );
|
||||||
});
|
});
|
||||||
a.on("userTypingStart", (user, chan) => {
|
a.on("userTypingStart", (user, chan) => {
|
||||||
console.log(user.username + " typing");
|
console.log(user.username + " typing");
|
||||||
|
|||||||
Reference in New Issue
Block a user