58 lines
2.0 KiB
JavaScript
58 lines
2.0 KiB
JavaScript
// 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')
|