|
@@ -3,6 +3,17 @@ const TOKEN = require("./token.js");
|
|
const db = require("./db.js");
|
|
const db = require("./db.js");
|
|
const RSSParser = require("rss-parser");
|
|
const RSSParser = require("rss-parser");
|
|
const interval = require("interval-promise");
|
|
const interval = require("interval-promise");
|
|
|
|
+const TurndownService = require("turndown");
|
|
|
|
+
|
|
|
|
+const turndown = new TurndownService();
|
|
|
|
+turndown.addRule("image", {
|
|
|
|
+ filter: "img",
|
|
|
|
+ replacement: () => ""
|
|
|
|
+});
|
|
|
|
+turndown.addRule("link", {
|
|
|
|
+ filter: node => node.nodeName === "A" &&node.getAttribute("href"),
|
|
|
|
+ replacement: (content, node) => node.getAttribute("href")
|
|
|
|
+});
|
|
|
|
|
|
const client = new Discord.Client();
|
|
const client = new Discord.Client();
|
|
const parser = new RSSParser();
|
|
const parser = new RSSParser();
|
|
@@ -17,7 +28,7 @@ async function checkFeeds() {
|
|
continue;
|
|
continue;
|
|
feed.items.filter(i => i.isoDate > feedEntry.lastUpdate).forEach(item => {
|
|
feed.items.filter(i => i.isoDate > feedEntry.lastUpdate).forEach(item => {
|
|
outlets.forEach(ch => {
|
|
outlets.forEach(ch => {
|
|
- client.channels.get(ch).send(`**${item.title}**\nPosted by ${item.creator}\n${item.link}`);
|
|
|
|
|
|
+ client.channels.get(ch).send(`**${item.title}**\nPosted by ${item.creator}\n${item.link}\n\n${turndown.turndown(item[feedEntry.contentElement]).replace(/( {2}\n|\n\n){2,}/gm, "\n").replace(item.link, "")}`);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
db.get("rssFeeds").find({ url: feedEntry.url}).assign({lastUpdate: feed.items[0].isoDate}).write();
|
|
db.get("rssFeeds").find({ url: feedEntry.url}).assign({lastUpdate: feed.items[0].isoDate}).write();
|