// PACKAGES const tmi = require('tmi.js') const WebSocketClient = require('websocket').client const axios = require('axios') require('dotenv').config() // UTILS const getAccessToken = require('./utils/getAccessToken') const subscribeToEvent = require('./utils/subscribeToEvent') // CHATBOT const chatBotC = new tmi.Client({ options: { debug: true }, identity: { username: process.env.TWITCH_USERNAME, password: `oauth:${process.env.TWITCH_TOKEN}` }, channels: [ process.env.TWITCH_CHANNEL ] }) chatBotC.on('message', async (channel, tags, message, self) => { if (self) return if (message.toLowerCase() === '!hello') { console.log('Command "hello" was triggered in channel: ' + channel) chatBotC.say(channel, `@${tags.username}, heya!`) } }) //chatBotC.connect() // EVENTSUB const eventSubC = new WebSocketClient() eventSubC.on('connect', async connection => { console.log('WebSocket eventSub Connected') connection.sendUTF('CAP REQ :twitch.tv/membership twitch.tv/tags twitch.tv/commands') connection.sendUTF(`PASS oauth:${process.env.TWITCH_APP_SECRET}`) connection.sendUTF('NICK bot_Laytho') connection.sendUTF('JOIN #liveAngels') connection.on('message', async message => { if (message.type === 'utf8') { console.log("Received: '" + message.utf8Data + "'") try { let data = JSON.parse(message.utf8Data) console.log(data) if (data.metadata.message_type === 'session_welcome') { let access_token = await getAccessToken(process.env.TWITCH_APP_ID, process.env.TWITCH_APP_SECRET) await subscribeToEvent(access_token, data.payload.session.id, process.env.TWITCH_APP_ID) } } catch (e) { console.log(e) } } }) .on('error', error => { console.log("Connection Error: " + error.toString()) }) .on('close', () => { console.log('echo-protocol Connection Closed') }) }).on('connectFailed', error => { console.log('Connect Error: ' + error.toString()) }) eventSubC.connect('wss://eventsub.wss.twitch.tv/ws')