Не возвращая URL в раздоре - PullRequest
0 голосов
/ 15 апреля 2020

в конце моей веревки. Я довольно новичок, когда дело доходит до кода, который я отчаянно пытался заставить, чтобы опубликовать URL-адрес в твиттере на мои разногласия. пока он только публикует основной текст твита, но если бы я мог заставить его опубликовать ссылку на твит, то я мог бы использовать предварительный просмотр твита вместо базового текста

, вот он. посмотрите и скажите мне, что вы думаете, я должен сделать, пожалуйста \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\

const E = require('events');
const request = require('request');
const separateReqPool = {maxSockets: 15};
const async = require('async');
const _ = require('lodash');
let tweets={},apiurls=[],N=[];


var THandlers=[
    {
        name:'',
        url:"",
        webhook:"",
        avatar_url:"",
        keywords:"*",
    }
];



THandlers.forEach((th,i) => {
    tweets[th.url] = [];
    apiurls.push(th.url);
});


const sendDiscordMessage = (pl) => {
    const {content,turl} = pl;
    const {name,webhook,avatar_url} = THandlers.filter((d,i) => d.url === turl)[0];
    request.post(webhook).form({username:name,avatar_url:avatar_url,content:content});
}

console.log('Twitter => Discord program is running');


setInterval(() => {
    async.map(apiurls, function(item, callback){
        request({url: item, pool: separateReqPool}, function (error, response, body) {
            try {
                const $ = cheerio.load(body);
                var turl = "https://twitter.com" + response.req.path;
                const th_name = THandlers.filter((d,i) => d.url === turl)[0].name;
                if(!tweets[turl].length){
                    //FIRST LOAD
                    const turls = $('div.js-tweet-text-container').map((i,d) => d["attribs"]["data-permalink-path"]);
                    tweets[turl] = _.difference($('div.js-tweet-text-container p').map((i,d) => {return {url:turls[i],text:$('div.js-tweet-text-container p').eq(i).text()}}));
                }
                else{
                    //EVERY OTHER TIME
                    const turls = $('div.js-tweet-text-container').map((i,d) => d["attribs"]["data-permalink-path"]);
                    const ctweets = _.difference($('div.js-tweet-text-container').map((i,d) => {return {url:turls[i],text:$('div.js-tweet-text-container p').eq(i).text()}}));
                    const ntweets = ctweets.filter(t => !_.find(tweets[turl],t));

                    ntweets.filter(d => {
                      const th_kw = THandlers.filter((d,i) => d.url === turl)[0].keywords.split(',');
                      if(th_kw.includes('*')){
                        return true;
                      } else{
                        const checkTexts = th_kw.map(kw => d.text.includes(kw) ? true : false);
                        return checkTexts.includes(false) ? false : true;
                      }
                    }).forEach(t => {
                      const {text:content} = t;
                      sendDiscordMessage({content,turl});
                    });

                   tweets[turl] = [...tweets[turl],...ntweets];
                }

            } catch (e) {
                  console.log('Error =>' + e);
            }
        });
    }, function(err, results){

    });
},1000);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...