sinusbot/scripts/advertising.js

74 lines
1.9 KiB
JavaScript
Raw Normal View History

2023-11-09 16:11:04 +00:00
registerPlugin({
name: 'Advertising (Text)',
version: '3.0.0',
backends: ['ts3'],
description: 'This script will announce one of the configured lines every x seconds.',
author: 'SinusBot Team', // Michael Friese, Max Schmitt, Jonas Bögle
vars: [{
name: 'ads',
title: 'Ads (supports bbcode)',
type: 'multiline',
placeholder: 'Welcome to the best TS3-Server!'
}, {
name: 'interval',
title: 'Interval (in seconds)',
type: 'number',
placeholder: '5',
default: 5
}, {
name: 'order',
title: 'Order',
type: 'select',
options: [
'line by line (default)',
'random'
],
default: '0'
}, {
name: 'type',
title: 'Broadcast-Type',
type: 'select',
options: [
'Channel',
'Server'
],
default: '0'
}]
}, (_, {ads, order, type, interval}) => {
const backend = require('backend')
const engine = require('engine')
ads = ads ? ads.split('\n').map(line => line.trim().replace(/\r/g, '')) : []
if (ads.length === 0) {
engine.log('There are no ads configured.')
return
}
if (interval <= 3) {
engine.log('The interval is too small, use a value bigger than 3 seconds.')
return
}
const RANDOM = '1';
const SERVER = '1';
let index = -1
setInterval(() => {
switch (order) {
case RANDOM:
index = Math.floor(Math.random() * ads.length)
break
default:
index = (++index % ads.length)
}
switch (type) {
case SERVER:
backend.chat(ads[index])
break
default:
backend.getCurrentChannel().chat(ads[index])
}
}, interval * 1000)
})