Finished embeds

This commit is contained in:
hydrabolt
2015-10-29 14:48:39 +00:00
parent cefbcd05af
commit 0938382e51
13 changed files with 146 additions and 28 deletions

View File

@@ -17,6 +17,7 @@ var PMChannel = require("./PMChannel.js");
var ServerPermissions = require("./ServerPermissions.js"); var ServerPermissions = require("./ServerPermissions.js");
var gameMap = require("../ref/gameMap.json"); var gameMap = require("../ref/gameMap.json");
var Color = require("../ref/colours.js"); var Color = require("../ref/colours.js");
var Embeddable = require("./Embeds/IEmbed.js");
var zlib; var zlib;
var EventEmitter = require('events'); var EventEmitter = require('events');

View File

@@ -4,6 +4,22 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
var Embed = function Embed(data) { var Embed = function Embed(data) {
_classCallCheck(this, Embed); _classCallCheck(this, Embed);
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; module.exports = Embed;

19
lib/Embeds/IEmbed.js Normal file
View File

@@ -0,0 +1,19 @@
"use strict";
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;
}
};

View File

@@ -13,6 +13,10 @@ var VideoEmbed = (function (_Embed) {
_classCallCheck(this, VideoEmbed); _classCallCheck(this, VideoEmbed);
_Embed.call(this, data); _Embed.call(this, data);
this.video = data.video;
//width
//height
//url
} }
return VideoEmbed; return VideoEmbed;

View File

@@ -19,7 +19,11 @@ var Discord = {
ChannelPermissions: require("./ChannelPermissions.js"), ChannelPermissions: require("./ChannelPermissions.js"),
EvaluatedPermissiosn: require("./EvaluatedPermissions.js"), EvaluatedPermissiosn: require("./EvaluatedPermissions.js"),
VoiceChannel: require("./VoiceChannel.js"), VoiceChannel: require("./VoiceChannel.js"),
gameMap: require("../ref/gameMap.json") 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 () { Discord.patchStrings = function () {

View File

@@ -5,6 +5,7 @@ var _createClass = (function () { function defineProperties(target, props) { for
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var PMChannel = require("./PMChannel.js"); var PMChannel = require("./PMChannel.js");
var Embeddable = require("./Embeds/IEmbed.js");
var Message = (function () { var Message = (function () {
function Message(data, channel, mentions, author) { function Message(data, channel, mentions, author) {
@@ -16,7 +17,27 @@ var Message = (function () {
this.mentions = mentions; this.mentions = mentions;
this.everyoneMentioned = data.mention_everyone; this.everyoneMentioned = data.mention_everyone;
this.id = data.id; this.id = data.id;
this.embeds = data.embeds; this.embeds = [];
if (data.embeds) {
for (var _iterator = data.embeds, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var embed = _ref;
this.embeds.push(Embeddable.createEmbed(embed));
}
}
this.editedTimestamp = data.edited_timestamp; this.editedTimestamp = data.edited_timestamp;
this.content = data.content.trim(); this.content = data.content.trim();
this.channel = channel; this.channel = channel;
@@ -36,19 +57,19 @@ var Message = (function () {
Message.prototype.isMentioned = function isMentioned(user) { Message.prototype.isMentioned = function isMentioned(user) {
var id = user.id ? user.id : user; var id = user.id ? user.id : user;
for (var _iterator = this.mentions, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { for (var _iterator2 = this.mentions, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref; var _ref2;
if (_isArray) { if (_isArray2) {
if (_i >= _iterator.length) break; if (_i2 >= _iterator2.length) break;
_ref = _iterator[_i++]; _ref2 = _iterator2[_i2++];
} else { } else {
_i = _iterator.next(); _i2 = _iterator2.next();
if (_i.done) break; if (_i2.done) break;
_ref = _i.value; _ref2 = _i2.value;
} }
var mention = _ref; var mention = _ref2;
if (mention.id === id) { if (mention.id === id) {
return true; return true;

View File

@@ -9,6 +9,7 @@ var PMChannel = require("./PMChannel.js");
var ServerPermissions = require("./ServerPermissions.js"); var ServerPermissions = require("./ServerPermissions.js");
var gameMap = require("../ref/gameMap.json"); var gameMap = require("../ref/gameMap.json");
var Color = require("../ref/colours.js"); var Color = require("../ref/colours.js");
var Embeddable = require("./Embeds/IEmbed.js");
var zlib; var zlib;
var EventEmitter = require('events'); var EventEmitter = require('events');

View File

@@ -1,6 +1,20 @@
class Embed{ class Embed{
constructor(data){ 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
} }
} }

17
src/Embeds/IEmbed.js Normal file
View File

@@ -0,0 +1,17 @@
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;
}
}

View File

@@ -3,6 +3,10 @@ var Embed = require("./Embed.js");
class VideoEmbed extends Embed{ class VideoEmbed extends Embed{
constructor(data){ constructor(data){
super(data); super(data);
this.video = data.video;
//width
//height
//url
} }
} }

View File

@@ -17,7 +17,11 @@ var Discord = {
ChannelPermissions : require("./ChannelPermissions.js"), ChannelPermissions : require("./ChannelPermissions.js"),
EvaluatedPermissiosn : require("./EvaluatedPermissions.js"), EvaluatedPermissiosn : require("./EvaluatedPermissions.js"),
VoiceChannel : require("./VoiceChannel.js"), VoiceChannel : require("./VoiceChannel.js"),
gameMap : require("../ref/gameMap.json") 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 () { Discord.patchStrings = function () {

View File

@@ -1,42 +1,50 @@
var PMChannel = require("./PMChannel.js"); var PMChannel = require("./PMChannel.js");
var Embeddable = require("./Embeds/IEmbed.js");
class Message{ class Message {
constructor(data, channel, mentions, author){ constructor(data, channel, mentions, author) {
this.tts = data.tts; this.tts = data.tts;
this.timestamp = Date.parse(data.timestamp); this.timestamp = Date.parse(data.timestamp);
this.nonce = data.nonce; this.nonce = data.nonce;
this.mentions = mentions; this.mentions = mentions;
this.everyoneMentioned = data.mention_everyone; this.everyoneMentioned = data.mention_everyone;
this.id = data.id; this.id = data.id;
this.embeds = data.embeds; this.embeds = [];
if (data.embeds) {
for (var embed of data.embeds) {
this.embeds.push( Embeddable.createEmbed(embed) );
}
}
this.editedTimestamp = data.edited_timestamp; this.editedTimestamp = data.edited_timestamp;
this.content = data.content.trim(); this.content = data.content.trim();
this.channel = channel; this.channel = channel;
if(this.isPrivate){ if (this.isPrivate) {
this.author = this.channel.client.getUser("id", author.id); this.author = this.channel.client.getUser("id", author.id);
}else{ } else {
this.author = this.channel.server.getMember("id", author.id) || this.channel.client.getUser("id", author.id); this.author = this.channel.server.getMember("id", author.id) || this.channel.client.getUser("id", author.id);
} }
this.attachments = data.attachments; this.attachments = data.attachments;
} }
isMentioned( user ){ isMentioned(user) {
var id = (user.id ? user.id : user); var id = (user.id ? user.id : user);
for(var mention of this.mentions){ for (var mention of this.mentions) {
if(mention.id === id){ if (mention.id === id) {
return true; return true;
} }
} }
return false; return false;
} }
get sender(){ get sender() {
return this.author; return this.author;
} }
get isPrivate(){ get isPrivate() {
return this.channel.isPrivate; return this.channel.isPrivate;
} }
} }

View File

@@ -40,6 +40,11 @@ mybot.once("ready", function () {
}); });
mybot.on("messageUpdate", function(newMessage, oldMessage){
// links and videos will create a loop
mybot.reply(newMessage, JSON.stringify(newMessage.embeds, null, 4));
})
mybot.on("serverUpdate", function (oldserver, newserver) { mybot.on("serverUpdate", function (oldserver, newserver) {
console.log("server changed! " + mybot.servers.length); console.log("server changed! " + mybot.servers.length);
}) })