sinusbot/scripts/alonemode.js

63 lines
1.9 KiB
JavaScript
Raw Normal View History

2023-11-09 16:11:04 +00:00
registerPlugin({
name: 'AloneMode',
version: '3.2.0',
backends: ['ts3', 'discord'],
description: 'This script will save CPU and bandwidth by stopping or muting the bot when nobody is listening anyways.',
author: 'SinusBot Team', // Michael Friese, Max Schmitt, Jonas Bögle, Fabian "fabm3n"
vars: [{
name: 'mode',
title: 'Mode',
type: 'select',
options: [
'mute only',
'stop playback'
]
}]
}, (_, {mode}) => {
const engine = require('engine')
const backend = require('backend')
const event = require('event')
const audio = require('audio')
const media = require('media')
const MUTE_ONLY = '0'
let isMuted = false
let lastPosition = 0
let lastTrack
audio.setMute(false)
event.on('clientMove', () => {
let currentChannel = backend.getCurrentChannel()
let clients = currentChannel ? currentChannel.getClientCount() : 0
if (clients > 1 && isMuted) {
isMuted = false
engine.log('Ending AloneMode...')
if (mode == MUTE_ONLY) {
audio.setMute(false)
} else {
if (lastTrack) {
lastTrack.play()
audio.seek(lastPosition)
engine.log(`Seeking to ${lastPosition} of track '${lastTrack.title()}'`)
}
}
} else if (clients <= 1 && audio.isPlaying() && isMuted == false) {
isMuted = true
engine.log('Starting AloneMode...')
if (mode == MUTE_ONLY) {
audio.setMute(true)
} else {
lastPosition = audio.getTrackPosition()
lastTrack = media.getCurrentTrack()
engine.log(`Position ${lastPosition} saved for track '${lastTrack.title()}'`)
media.stop()
}
}
})
})