uses a 10 minute scheduler, my trovo connector api and keyvalue
// type `await lib.` to display API autocomplete
const lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN});
let streamer_list = ['Akanixon'];
let channel_id = '';
let live = await lib.keyvalue.store['@0.1.16'].get({
key: `trovo_live_list`,
defaultValue: [],
});
for (let streamer of streamer_list) {
streamer = await lib.Akanixon.trovo['@release'].main.get.channel_info({
username: `${streamer}`,
});
if (streamer.is_live) {
if (live.some((x) => x == streamer.username)) {
console.log(`Streamer ${streamer.username} is already live`);
} else {
console.log(`sending notification for ${streamer.username}`);
categories = await lib.Akanixon.trovo[
'@release'
].main.get.game_categories();
category = categories.category_info.find(
(c) => c.id == streamer.category_id
);
components = [
{
type: 1,
components: [
{
style: 5,
label: `๐๐
ฐ๐๐
ฒ๐
ท`,
url: `${streamer.channel_url}`,
disabled: false,
type: 2,
},
],
},
];
try {
await lib.discord.channels['@0.3.2'].messages.create({
guild_id: server.guildID,
channel_id: channel_id,
content: '', // required
embeds: [
{
type: 'rich',
title: '',
description: `Streaming: ${streamer.category_name}\n${
streamer.live_title
}${
streamerList[streamer.username].text
? '\n' + streamerList[streamer.username].text
: ''
}`,
color: 0xaaff00,
image: {
url: `${streamer.thumbnail}`,
height: 0,
width: 0,
},
thumbnail: {
url: `${category.icon_url}`,
height: 0,
width: 0,
},
author: {
name: `${streamer.username} went LIVE:`,
url: `${streamer.channel_url}`,
icon_url: `${streamer.profile_pic}`,
},
url: `${streamer.channel_url}`,
},
],
components: components,
});
live.push(streamer.username);
} catch (e) {
console.log(`Missing Access: message.create ${e.type}`);
}
}
} else {
live.filter((s) => s != streamer.username);
}
await lib.keyvalue.store['@0.1.16'].set({
key: `trovo_live_list`,
value: live,
});
}