1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| const rssParser = require('rss-parser'); const firebase = require('firebase-admin'); const express = require('express'); const { Telegraf } = require('telegraf'); const serviceAccount = require('FIREBASE ADMIN FILE'); const rss = new rssParser(); const app = new express(); const bot = new Telegraf('TELEGRAM BOT TOKEN'); let data = new Array(); let times = 0;
firebase.initializeApp({ credential: firebase.credential.cert(serviceAccount) });
const db = firebase.firestore();
const getFeed = () => { return new Promise(async resolve => { const feed = await rss.parseURL('https://moe.jimmy0w0.me/atom.xml');
feed.items.forEach(res => { data[times] = { title: res.title, link: res.link, content: res.content };
times++;
if (times === feed.items.length - 1) { resolve(); } }) }) };
const sendFeed = async () => { await getFeed();
const last = data[0]; const remoteLast = (await db.collection('article').doc('last').get()).data()
if (last.title === remoteLast.title && last.link === remoteLast.link) { data = []; times = 0; } else { bot.telegram.sendMessage('@miaowu_moe', `有新的文章: ${last.title} \n ${last.link}`); db.collection('article').doc('last').set(last);
data = []; times = 0; } };
setInterval(sendFeed, 1800000);
const port = process.env.PORT;
app.get('/', (req, res) => { res.redirect('https://moe.jimmy0w0.me'); });
app.listen(port);
|