discord-bot-rss-feed/app/index.js

44 lines
1.4 KiB
JavaScript
Raw Normal View History

const Core = require("../discord-bot-core");
const GetUrls = require("get-urls");
const GuildData = require("./models/guild-data.js");
// @ts-ignore
const Config = require("./config.json");
const token = require("../" + process.argv[2]).token,
dataFile = process.argv[3];
const client = new Core.Client(token, dataFile, __dirname + "/commands", GuildData);
client.on("beforeLogin", () => {
setInterval(() => checkFeedsInGuilds(client.guilds, client.guildsData), Config.feedCheckIntervalSec * 1000);
});
client.on("ready", (coreClient) => {
parseLinksInGuilds(coreClient.actual.guilds, coreClient.guildsData)
.then(() => checkFeedsInGuilds(coreClient.actual.guilds, coreClient.guildsData));
});
client.on("message", message => {
const guildData = client.guildsData[message.guild.id];
guildData.feeds.forEach(feedData => {
if (message.channel.name === feedData.channelName)
feedData.cachedLinks.push(...GetUrls(message.content));
});
});
2017-09-01 17:51:05 +03:00
client.bootstrap();
2017-09-01 17:51:05 +03:00
//INTERNAL FUNCTIONS//
function checkFeedsInGuilds(guilds, guildsData) {
Object.keys(guildsData).forEach(key => guildsData[key].checkFeeds(guilds));
}
2017-09-01 17:51:05 +03:00
function parseLinksInGuilds(guilds, guildsData) {
const promises = [];
for (let guildId of guilds.keys()) {
const guildData = guildsData[guildId];
if (guildData)
promises.push(guildData.cachePastPostedLinks(guilds.get(guildId)));
}
return Promise.all(promises);
}