mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-14 18:43:31 +01:00
Added message deletion
This commit is contained in:
174
lib/Client.js
174
lib/Client.js
@@ -9,6 +9,7 @@ var Endpoints = require("./Endpoints.js");
|
|||||||
var User = require("./User.js");
|
var User = require("./User.js");
|
||||||
var Server = require("./Server.js");
|
var Server = require("./Server.js");
|
||||||
var Channel = require("./Channel.js");
|
var Channel = require("./Channel.js");
|
||||||
|
var Message = require("./Message.js");
|
||||||
|
|
||||||
//node modules
|
//node modules
|
||||||
var request = require("superagent");
|
var request = require("superagent");
|
||||||
@@ -237,6 +238,53 @@ var Client = (function () {
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case "MESSAGE_CREATE":
|
case "MESSAGE_CREATE":
|
||||||
|
self.debug("received message");
|
||||||
|
|
||||||
|
var mentions = [];
|
||||||
|
var _iteratorNormalCompletion3 = true;
|
||||||
|
var _didIteratorError3 = false;
|
||||||
|
var _iteratorError3 = undefined;
|
||||||
|
|
||||||
|
try {
|
||||||
|
for (var _iterator3 = data.mentions[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
|
||||||
|
var mention = _step3.value;
|
||||||
|
|
||||||
|
mentions.push(self.addUser(mention));
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
_didIteratorError3 = true;
|
||||||
|
_iteratorError3 = err;
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (!_iteratorNormalCompletion3 && _iterator3["return"]) {
|
||||||
|
_iterator3["return"]();
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (_didIteratorError3) {
|
||||||
|
throw _iteratorError3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var channel = self.getChannel("id", data.channel_id);
|
||||||
|
var msg = channel.addMessage(new Message(data, channel, mentions, self.addUser(data.author)));
|
||||||
|
|
||||||
|
self.trigger("message", msg);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "MESSAGE_DELETE":
|
||||||
|
self.debug("message deleted");
|
||||||
|
|
||||||
|
var channel = self.getChannel("id", data.channel_id);
|
||||||
|
var message = channel.getMessage("id", data.id);
|
||||||
|
if (message) {
|
||||||
|
self.trigger("messageDelete", channel, message);
|
||||||
|
channel.messages.splice(channel.messages.indexOf(message), 1);
|
||||||
|
} else {
|
||||||
|
//don't have the cache of that message ;(
|
||||||
|
self.trigger("messageDelete", channel);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
self.debug("received unknown packet");
|
self.debug("received unknown packet");
|
||||||
@@ -281,50 +329,16 @@ var Client = (function () {
|
|||||||
}, {
|
}, {
|
||||||
key: "getUser",
|
key: "getUser",
|
||||||
value: function getUser(key, value) {
|
value: function getUser(key, value) {
|
||||||
var _iteratorNormalCompletion3 = true;
|
|
||||||
var _didIteratorError3 = false;
|
|
||||||
var _iteratorError3 = undefined;
|
|
||||||
|
|
||||||
try {
|
|
||||||
for (var _iterator3 = this.userCache[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
|
|
||||||
var user = _step3.value;
|
|
||||||
|
|
||||||
if (user[key] === value) {
|
|
||||||
return user;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
_didIteratorError3 = true;
|
|
||||||
_iteratorError3 = err;
|
|
||||||
} finally {
|
|
||||||
try {
|
|
||||||
if (!_iteratorNormalCompletion3 && _iterator3["return"]) {
|
|
||||||
_iterator3["return"]();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
if (_didIteratorError3) {
|
|
||||||
throw _iteratorError3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
//def getChannel
|
|
||||||
}, {
|
|
||||||
key: "getChannel",
|
|
||||||
value: function getChannel(key, value) {
|
|
||||||
var _iteratorNormalCompletion4 = true;
|
var _iteratorNormalCompletion4 = true;
|
||||||
var _didIteratorError4 = false;
|
var _didIteratorError4 = false;
|
||||||
var _iteratorError4 = undefined;
|
var _iteratorError4 = undefined;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
for (var _iterator4 = this.channelCache[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
|
for (var _iterator4 = this.userCache[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
|
||||||
var channel = _step4.value;
|
var user = _step4.value;
|
||||||
|
|
||||||
if (channel[key] === value) {
|
if (user[key] === value) {
|
||||||
return channel;
|
return user;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@@ -345,22 +359,20 @@ var Client = (function () {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//def getServer
|
//def getChannel
|
||||||
}, {
|
}, {
|
||||||
key: "getServer",
|
key: "getChannel",
|
||||||
value: function getServer() {
|
value: function getChannel(key, value) {
|
||||||
var key = arguments.length <= 0 || arguments[0] === undefined ? "id" : arguments[0];
|
|
||||||
var value = arguments.length <= 1 || arguments[1] === undefined ? "abc123" : arguments[1];
|
|
||||||
var _iteratorNormalCompletion5 = true;
|
var _iteratorNormalCompletion5 = true;
|
||||||
var _didIteratorError5 = false;
|
var _didIteratorError5 = false;
|
||||||
var _iteratorError5 = undefined;
|
var _iteratorError5 = undefined;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
for (var _iterator5 = this.serverCache[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
|
for (var _iterator5 = this.channelCache[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
|
||||||
var server = _step5.value;
|
var channel = _step5.value;
|
||||||
|
|
||||||
if (server[key] === value) {
|
if (channel[key] === value) {
|
||||||
return server;
|
return channel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@@ -381,6 +393,42 @@ var Client = (function () {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//def getServer
|
||||||
|
}, {
|
||||||
|
key: "getServer",
|
||||||
|
value: function getServer() {
|
||||||
|
var key = arguments.length <= 0 || arguments[0] === undefined ? "id" : arguments[0];
|
||||||
|
var value = arguments.length <= 1 || arguments[1] === undefined ? "abc123" : arguments[1];
|
||||||
|
var _iteratorNormalCompletion6 = true;
|
||||||
|
var _didIteratorError6 = false;
|
||||||
|
var _iteratorError6 = undefined;
|
||||||
|
|
||||||
|
try {
|
||||||
|
for (var _iterator6 = this.serverCache[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
|
||||||
|
var server = _step6.value;
|
||||||
|
|
||||||
|
if (server[key] === value) {
|
||||||
|
return server;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
_didIteratorError6 = true;
|
||||||
|
_iteratorError6 = err;
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (!_iteratorNormalCompletion6 && _iterator6["return"]) {
|
||||||
|
_iterator6["return"]();
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (_didIteratorError6) {
|
||||||
|
throw _iteratorError6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
//def trySendConnData
|
//def trySendConnData
|
||||||
}, {
|
}, {
|
||||||
key: "trySendConnData",
|
key: "trySendConnData",
|
||||||
@@ -427,6 +475,38 @@ var Client = (function () {
|
|||||||
get: function get() {
|
get: function get() {
|
||||||
return this.userCache;
|
return this.userCache;
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
key: "messages",
|
||||||
|
get: function get() {
|
||||||
|
|
||||||
|
var msgs = [];
|
||||||
|
var _iteratorNormalCompletion7 = true;
|
||||||
|
var _didIteratorError7 = false;
|
||||||
|
var _iteratorError7 = undefined;
|
||||||
|
|
||||||
|
try {
|
||||||
|
for (var _iterator7 = this.channelCache[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {
|
||||||
|
var channel = _step7.value;
|
||||||
|
|
||||||
|
msgs = msgs.concat(channel.messages);
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
_didIteratorError7 = true;
|
||||||
|
_iteratorError7 = err;
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (!_iteratorNormalCompletion7 && _iterator7["return"]) {
|
||||||
|
_iterator7["return"]();
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (_didIteratorError7) {
|
||||||
|
throw _iteratorError7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return msgs;
|
||||||
|
}
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
return Client;
|
return Client;
|
||||||
|
|||||||
@@ -1,41 +1,76 @@
|
|||||||
"use strict";
|
"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 = require("./user.js").User;
|
var User = require("./user.js").User;
|
||||||
var List = require("./list.js").List;
|
var List = require("./list.js").List;
|
||||||
var PMChannel = require("./PMChannel.js").PMChannel;
|
var PMChannel = require("./PMChannel.js").PMChannel;
|
||||||
|
|
||||||
exports.Message = function (time, author, content, channel, id, mentions, everyoneMentioned, embeds) {
|
var Message = (function () {
|
||||||
|
function Message(data, channel, mentions, author) {
|
||||||
|
_classCallCheck(this, Message);
|
||||||
|
|
||||||
if (!content) {
|
this.tts = data.tts;
|
||||||
message = time;
|
this.timestamp = Date.parse(data.timestamp);
|
||||||
channel = author;
|
this.nonce = data.nonce;
|
||||||
time = message.timestamp;
|
this.mentions = mentions;
|
||||||
author = message.author;
|
this.everyoneMentioned = data.mention_everyone;
|
||||||
content = message.content;
|
this.id = data.id;
|
||||||
id = message.id;
|
this.embeds = data.embeds;
|
||||||
mentions = message.mentions;
|
this.editedTimestamp = data.edited_timestamp;
|
||||||
everyoneMentioned = message.mention_everyone;
|
this.content = data.content.trim();
|
||||||
embeds = message.embeds;
|
this.channel = channel;
|
||||||
|
this.author = author;
|
||||||
|
this.attachments = data.attachments;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.time = Date.parse(time);
|
/*exports.Message.prototype.isPM = function() {
|
||||||
this.author = new User(author);
|
return ( this.channel instanceof PMChannel );
|
||||||
this.content = content.replace(/\s+/g, ' ').trim(); //content.replace(/<[^>]*>/g, "").replace(/\s+/g, ' ').trim();
|
}*/
|
||||||
this.channel = channel;
|
|
||||||
this.id = id;
|
|
||||||
this.mentions = new List("id");
|
|
||||||
this.everyoneMentioned = everyoneMentioned;
|
|
||||||
this.embeds = embeds;
|
|
||||||
for (x in mentions) {
|
|
||||||
var _mention = mentions[x];
|
|
||||||
this.mentions.add(new User(_mention));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.Message.prototype.isPM = function () {
|
_createClass(Message, [{
|
||||||
return this.channel instanceof PMChannel;
|
key: "isMentioned",
|
||||||
};
|
value: function isMentioned(user) {
|
||||||
|
var id = user.id ? user.id : user;
|
||||||
|
var _iteratorNormalCompletion = true;
|
||||||
|
var _didIteratorError = false;
|
||||||
|
var _iteratorError = undefined;
|
||||||
|
|
||||||
exports.Message.prototype.isMentioned = function (user) {
|
try {
|
||||||
return this.mentions.filter("id", user.id).length > 0;
|
for (var _iterator = this.mentions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
||||||
};
|
var mention = _step.value;
|
||||||
|
|
||||||
|
if (mention.id === id) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
_didIteratorError = true;
|
||||||
|
_iteratorError = err;
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (!_iteratorNormalCompletion && _iterator["return"]) {
|
||||||
|
_iterator["return"]();
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (_didIteratorError) {
|
||||||
|
throw _iteratorError;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: "sender",
|
||||||
|
get: function get() {
|
||||||
|
return this.author;
|
||||||
|
}
|
||||||
|
}]);
|
||||||
|
|
||||||
|
return Message;
|
||||||
|
})();
|
||||||
|
|
||||||
|
module.exports = Message;
|
||||||
@@ -3,6 +3,7 @@ var Endpoints = require("./Endpoints.js");
|
|||||||
var User = require("./User.js");
|
var User = require("./User.js");
|
||||||
var Server = require("./Server.js");
|
var Server = require("./Server.js");
|
||||||
var Channel = require("./Channel.js");
|
var Channel = require("./Channel.js");
|
||||||
|
var Message = require("./Message.js");
|
||||||
|
|
||||||
//node modules
|
//node modules
|
||||||
var request = require("superagent");
|
var request = require("superagent");
|
||||||
@@ -57,6 +58,16 @@ class Client {
|
|||||||
return this.userCache;
|
return this.userCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get messages() {
|
||||||
|
|
||||||
|
var msgs = [];
|
||||||
|
for (var channel of this.channelCache) {
|
||||||
|
msgs = msgs.concat(channel.messages);
|
||||||
|
}
|
||||||
|
return msgs;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
sendPacket(JSONObject) {
|
sendPacket(JSONObject) {
|
||||||
if (this.websocket.readyState === 1) {
|
if (this.websocket.readyState === 1) {
|
||||||
this.websocket.send(JSON.stringify(JSONObject));
|
this.websocket.send(JSON.stringify(JSONObject));
|
||||||
@@ -191,6 +202,32 @@ class Client {
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case "MESSAGE_CREATE":
|
case "MESSAGE_CREATE":
|
||||||
|
self.debug("received message");
|
||||||
|
|
||||||
|
var mentions = [];
|
||||||
|
for (var mention of data.mentions) {
|
||||||
|
mentions.push(self.addUser(mention));
|
||||||
|
}
|
||||||
|
|
||||||
|
var channel = self.getChannel("id", data.channel_id);
|
||||||
|
var msg = channel.addMessage(new Message(data, channel, mentions, self.addUser(data.author)));
|
||||||
|
|
||||||
|
self.trigger("message", msg);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "MESSAGE_DELETE":
|
||||||
|
self.debug("message deleted");
|
||||||
|
|
||||||
|
var channel = self.getChannel("id", data.channel_id);
|
||||||
|
var message = channel.getMessage("id", data.id);
|
||||||
|
if (message) {
|
||||||
|
self.trigger("messageDelete", channel, message);
|
||||||
|
channel.messages.splice(channel.messages.indexOf(message), 1);
|
||||||
|
}else{
|
||||||
|
//don't have the cache of that message ;(
|
||||||
|
self.trigger("messageDelete", channel);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
self.debug("received unknown packet");
|
self.debug("received unknown packet");
|
||||||
|
|||||||
@@ -2,38 +2,39 @@ var User = require( "./user.js" ).User;
|
|||||||
var List = require( "./list.js" ).List;
|
var List = require( "./list.js" ).List;
|
||||||
var PMChannel = require( "./PMChannel.js" ).PMChannel;
|
var PMChannel = require( "./PMChannel.js" ).PMChannel;
|
||||||
|
|
||||||
exports.Message = function( time, author, content, channel, id, mentions, everyoneMentioned, embeds ) {
|
class Message{
|
||||||
|
constructor(data, channel, mentions, author){
|
||||||
if ( !content ) {
|
this.tts = data.tts;
|
||||||
message = time;
|
this.timestamp = Date.parse(data.timestamp);
|
||||||
channel = author;
|
this.nonce = data.nonce;
|
||||||
time = message.timestamp;
|
this.mentions = mentions;
|
||||||
author = message.author;
|
this.everyoneMentioned = data.mention_everyone;
|
||||||
content = message.content;
|
this.id = data.id;
|
||||||
id = message.id;
|
this.embeds = data.embeds;
|
||||||
mentions = message.mentions;
|
this.editedTimestamp = data.edited_timestamp;
|
||||||
everyoneMentioned = message.mention_everyone;
|
this.content = data.content.trim();
|
||||||
embeds = message.embeds;
|
this.channel = channel;
|
||||||
|
this.author = author;
|
||||||
|
this.attachments = data.attachments;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.time = Date.parse( time );
|
isMentioned( user ){
|
||||||
this.author = new User( author );
|
var id = (user.id ? user.id : user);
|
||||||
this.content = content.replace( /\s+/g, ' ' ).trim(); //content.replace(/<[^>]*>/g, "").replace(/\s+/g, ' ').trim();
|
for(var mention of this.mentions){
|
||||||
this.channel = channel;
|
if(mention.id === id){
|
||||||
this.id = id;
|
return true;
|
||||||
this.mentions = new List( "id" );
|
}
|
||||||
this.everyoneMentioned = everyoneMentioned;
|
}
|
||||||
this.embeds = embeds;
|
return false;
|
||||||
for ( x in mentions ) {
|
}
|
||||||
var _mention = mentions[ x ];
|
|
||||||
this.mentions.add( new User( _mention ) );
|
get sender(){
|
||||||
|
return this.author;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.Message.prototype.isPM = function() {
|
/*exports.Message.prototype.isPM = function() {
|
||||||
return ( this.channel instanceof PMChannel );
|
return ( this.channel instanceof PMChannel );
|
||||||
}
|
}*/
|
||||||
|
|
||||||
exports.Message.prototype.isMentioned = function( user ) {
|
module.exports = Message;
|
||||||
return ( this.mentions.filter( "id", user.id ).length > 0 );
|
|
||||||
}
|
|
||||||
12
test/bot.js
12
test/bot.js
@@ -8,4 +8,14 @@ mybot.login(Auth.email, Auth.password, function(err, res){
|
|||||||
|
|
||||||
mybot.on("ready", function(){
|
mybot.on("ready", function(){
|
||||||
console.log("Ready!");
|
console.log("Ready!");
|
||||||
})
|
})
|
||||||
|
|
||||||
|
mybot.on("message", function(msg){
|
||||||
|
console.log("Another message by "+msg.author.username+"... now I have "+mybot.messages.length);
|
||||||
|
})
|
||||||
|
|
||||||
|
mybot.on("messageDelete", function(channel, message){
|
||||||
|
|
||||||
|
console.log("MESSAGE WAS DELETED BY " + ( message ? message.author.username : channel.name ));
|
||||||
|
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user