const fs = require('fs')
|
|
let rssParser = require('rss-parser');
|
|
const Discord = require('discord.js');
|
|
const Client = require('./client');
|
|
const fetch = require("node-fetch");
|
|
let feeds = {
|
|
"REDDIT": ['https://www.reddit.com/.rss', 'https://i.redd.it/rq36kl1xjxr01.png', "https://reddit.com"],
|
|
"WIRED": ['https://www.wired.com/feed/rss', "https://www.wired.com/wp-content/themes/Phoenix/assets/images/article-icon.jpg", "https://www.wired.com"]
|
|
};
|
|
const threshold = 3;
|
|
var CronJob = require('cron').CronJob;
|
|
const {
|
|
prefix,
|
|
token,
|
|
} = require('./config.json');
|
|
var channels = '734387503464710165';
|
|
async function execute() {
|
|
let channel = "734687050707632239";
|
|
let parser = new rssParser();
|
|
let news = []
|
|
for (item in feeds) {
|
|
let feed = await parser.parseURL(feeds[item][0]);
|
|
for (var i = feed.items.length - 1; i > feed.items.length - 1 - threshold; i--) {
|
|
let data = feed.items[i];
|
|
news.push({
|
|
title: data.title,
|
|
url: data.link,
|
|
author: item,
|
|
author_img: feeds[item][1],
|
|
author_url: feeds[item][2],
|
|
content: data.contentSnippet
|
|
});
|
|
}
|
|
};
|
|
news.forEach((item) => {
|
|
let newsEmbed = new Discord.MessageEmbed()
|
|
.setColor('#0099ff')
|
|
.setTitle(item.title)
|
|
.setURL(item.url)
|
|
.setAuthor(item.author, item.author_img, item.author_url)
|
|
.setDescription(item.content)
|
|
.setTimestamp();
|
|
client.channels.cache.get(`734687050707632239`).send(newsEmbed);
|
|
});
|
|
};
|
|
const client = new Client();
|
|
client.commands = new Discord.Collection();
|
|
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
|
|
for (const file of commandFiles) {
|
|
const command = require(`./commands/${file}`);
|
|
client.commands.set(command.name, command);
|
|
}
|
|
console.log(client.commands);
|
|
client.once('ready', () => {
|
|
console.log('Ready!');
|
|
console.log('Before job instantiation');
|
|
const job = new CronJob('00 21 13 * * *', function () {
|
|
client.channels.cache.get(`734387503464710165`).send(`rss time`);
|
|
execute();
|
|
|
|
const d = new Date();
|
|
console.log('onTick:', d);
|
|
});
|
|
console.log('After job instantiation');
|
|
job.start();
|
|
});
|
|
|
|
client.once('reconnecting', () => {
|
|
console.log('Reconnecting!');
|
|
});
|
|
|
|
client.once('disconnect', () => {
|
|
console.log('Disconnect!');
|
|
});
|
|
|
|
client.on('message', async message => {
|
|
if (message.author.bot) return;
|
|
if (!message.content.startsWith(prefix)) return;
|
|
|
|
const args = message.content.slice(prefix.length).split(/ +/);
|
|
const commandName = args.shift().toLowerCase();
|
|
if (!client.commands.has(commandName)) return;
|
|
const command = client.commands.get(commandName);
|
|
const permitted_roles = client.commands.get(commandName)["roles"];
|
|
const permitted_channels = client.commands.get(commandName)["channels"]
|
|
|
|
has_roles = false
|
|
|
|
if (permitted_roles) {
|
|
for (i = 0; i < permitted_roles.length; i++) {
|
|
if (message.member.roles.cache.has(permitted_roles[i])) {
|
|
has_roles = true
|
|
}
|
|
}
|
|
|
|
if (!has_roles && permitted_roles.length != 0) {
|
|
message.reply('You are not allowed to run this command!');
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (permitted_channels) {
|
|
msg_channel = message.channel;
|
|
channel_allowed = false
|
|
for (i = 0; i < permitted_channels.length; i++) {
|
|
if (permitted_channels[i] == "dm" && msg_channel instanceof Discord.DMChannel) {
|
|
channel_allowed = true;
|
|
break;
|
|
} else if (permitted_channels[i] == msg_channel.id) {
|
|
channel_allowed = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!channel_allowed) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
try {
|
|
command.execute(message);
|
|
} catch (error) {
|
|
console.error(error);
|
|
message.reply('There was an error trying to execute that command!');
|
|
}
|
|
});
|
|
|
|
|
|
client.login(token);
|