如何在nodejs中创建uptime命令tmijs chat bot

时间:2018-04-18 15:58:44

标签: node.js chatbot twitch

你如何使用tmi.js制作正常运行命令,我认为它会如此简单;

client.on("chat", function(channel, user, message, self, uptime){ 
client.say("CHANNEL", "Channel has been live for " + uptime
})

你将如何制作这个命令,我给出的例子不起作用,我会请你告诉我。

1 个答案:

答案 0 :(得分:0)

看起来Twitch WebSocket API上的频道元数据不可用。如果您想获取该信息,则需要浏览“New Twitch API”并使用/streams端点。

您还需要Client-ID向此端点发出请求。您可以按照此处的说明获取一个:Apps & Authentication Guide

获得Client-ID后,您可以提出请求。我正在使用node-fetch模块来简化请求。此示例将获得2个最活跃的流。您可以调整查询字符串参数以获取适当的流。

const querystring = require("querystring"),
    fetch = require("node-fetch");

const CLIENT_ID = "YOUR_CLIENT_ID";
const STREAMS_URL = "https://api.twitch.tv/helix/streams";

const qs = querystring.stringify({
    first: 2
});

const qUrl = `${STREAMS_URL}?${qs}`;

const fetchArgs = {
    headers: {
        "Client-ID": CLIENT_ID
    }
};

fetch(qUrl, fetchArgs)
    .then(res => res.json())
    .then(data => console.log(data))
    .catch(err => console.error(err));

这将打印出如下内容:

{
    data: [{
            id: '28378863024',
            user_id: '19571641',
            game_id: '33214',
            community_ids: [],
            type: 'live',
            title: 'Morning Stream! | @Ninja on Twitter and Insta ;)',
            viewer_count: 107350,
            started_at: '2018-04-18T14:58:45Z',
            language: 'en',
            thumbnail_url: 'https://static-cdn.jtvnw.net/previews-ttv/live_user_ninja-{width}x{height}.jpg'
        },
        {
            id: '28379115264',
            user_id: '22859264',
            game_id: '32399',
            community_ids: [Array],
            type: 'live',
            title: 'LIVE: Astralis vs. Space Soldiers - BO1 - CORSAIR DreamHack Masters Marseille 2018 - Day 1',
            viewer_count: 54354,
            started_at: '2018-04-18T15:28:44Z',
            language: 'nl',
            thumbnail_url: 'https://static-cdn.jtvnw.net/previews-ttv/live_user_dreamhackcs-{width}x{height}.jpg'
        }]
}

started_at属性是流开始的时间戳。请记住,此API受速率限制,因此您可能应该缓存started_at,这样您就不会立即用完请求。