Статус потока Twitch отображается онлайн. пока пользователь не в сети

#javascript #node.js #bots #twitch

#javascript #node.js #боты #Twitch

Вопрос:

Я написал бота в NODE JS, который будет постоянно отслеживать пользователей twitch, и когда какой-либо пользователь подключится к Сети, он отправит сообщение в приложение «group me», в котором пользователь находится в Сети. Он работает нормально. Моя проблема в том, что иногда он отправляет сообщение о том, что пользователь подключен к сети, но на самом деле пользователь отключен. Есть идеи о том, как это решить?

Смотрите скриншот

 var users = ["Statelinejay", "Ad_914", "Houssam06" ];
var messages = ["notsent", "notsent", "notsent" ];
var Client = require('node-rest-client').Client;
var client = new Client();
var express = require('express');
var request = require('request');

var app = express();

app.set('port', (process.env.PORT || 5000));


function theCall(index) {
    console.log('Processing '   users[index]);

    client.get('https://api.twitch.tv/kraken/streams/'   users[index]   '?client_id=xxxxxxxxxxxxxxxxxxxxxxx', function (data, response) {
        if (data["stream"] === null) {
            messages[index] = 'notsent';
            console.log(users[index]   'is offline');
        } else 
            //// Start of sending message
            var myJSONObject = {
                "bot_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                "text": " https://www.twitch.tv/"   users[index]
            };
            if (messages[index] === 'notsent') {
                request.post({
                        url: " https://api.groupme.com/v3/bots/post",
                        method: "POST",
                        json: true, // <--Very important!!!
                        body: myJSONObject
                    },

                    function (error, response, body) {
                        console.log(error);
                    }
                );
                messages[index] = 'sent';
                console.log('message sent');
            }
            //// End of sending message
            console.log(users[index]   '  is online') ;
        }
        theCall((  index % users.length));
    });
	
	
	 
	
}

app.listen(app.get('port'), function() {
  console.log('Node app is running on port', app.get('port'));
  theCall(0);
});
   

Ответ №1:

Вы уверены, что data [«stream»] всегда равен нулю, когда стример находится в автономном режиме? Может ли это быть неопределенным? Не могли бы вы попробовать

 if (!data["stream"])
  

вместо

 if (data["stream"] === null)
  

?

Если это не сработает, можете ли вы утешить.зарегистрируйте свои данные и переменные ответа для ложного онлайн-стримера и обновите вопрос?

Комментарии:

1. Да, он будет равен нулю, когда пользователь находится в автономном режиме. переменная данных состоит из разных