Advertisement
irgendwer

Sinusbot: Song blacklist/ban

Sep 18th, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  
  3. $$\                                               $$\
  4. \__|                                              $$ |
  5. $$\  $$$$$$\   $$$$$$\   $$$$$$\  $$$$$$$\   $$$$$$$ |$$\  $$\  $$\  $$$$$$\   $$$$$$\
  6. $$ |$$  __$$\ $$  __$$\ $$  __$$\ $$  __$$\ $$  __$$ |$$ | $$ | $$ |$$  __$$\ $$  __$$\
  7. $$ |$$ |  \__|$$ /  $$ |$$$$$$$$ |$$ |  $$ |$$ /  $$ |$$ | $$ | $$ |$$$$$$$$ |$$ |  \__|
  8. $$ |$$ |      $$ |  $$ |$$   ____|$$ |  $$ |$$ |  $$ |$$ | $$ | $$ |$$   ____|$$ |
  9. $$ |$$ |      \$$$$$$$ |\$$$$$$$\ $$ |  $$ |\$$$$$$$ |\$$$$$\$$$$  |\$$$$$$$\ $$ |
  10. \__|\__|       \____$$ | \_______|\__|  \__| \_______| \_____\____/  \_______|\__|
  11.               $$\   $$ |
  12.               \$$$$$$  |
  13.                \______/
  14.  
  15.   Copyright 2017 Jonas Bögle, all rights reserved.
  16. */
  17.  
  18. registerPlugin({
  19.     name: 'Song blacklist/ban',
  20.     version: '1.0',
  21.     description: 'Prevents users  from playing songs that contain specific strings in their title',
  22.     author: 'irgendwer / Jonas <dev@sandstorm-projects.de>',
  23.     backends: ['ts3', 'discord'],
  24.     vars: [
  25.         {
  26.             name: 'blacklist',
  27.             title: 'Songs that contain one of these strings are banned:',
  28.             type: 'strings'
  29.         }
  30.     ]
  31. }, function (s, config, info) {
  32.     // set to true for more output
  33.     var DEBUG = true
  34.  
  35.     // include modules
  36.     var event = require('event')
  37.     var engine = require('engine')
  38.     var media = require('media')
  39.  
  40.     event.on('track', function(track) {
  41.         if (config.blacklist.some(function(str) {
  42.             return track.title().toLowerCase().indexOf(str.toLowerCase()) !== -1
  43.         })) {
  44.             logmsg('D', 'skipping blacklisted song...')
  45.             stop()
  46.            
  47.             // this method doesn't work for some reason:
  48.             media.playNext(0)
  49.         }
  50.     })
  51.    
  52.     /**
  53.      * Loggs a message, requires engine
  54.      *
  55.      * @param {String} level DEBUG, INFO or ERROR
  56.      * @param {String} msg Message
  57.      */
  58.     function logmsg(level, msg) {
  59.         switch (level) {
  60.             case 'D':
  61.             case 'DBG':
  62.                 level = 'DEBUG'
  63.                 break
  64.             case 'I':
  65.             case 'INF':
  66.                 level = 'INFO'
  67.                 break
  68.             case 'E':
  69.             case 'ERR':
  70.                 level = 'ERROR'
  71.                 break
  72.             case 'W':
  73.             case 'WARN':
  74.                 level = 'WARN'
  75.                 break
  76.         }
  77.  
  78.         if (level == 'DEBUG' || level == 'INFO' || level == 'ERROR' || level == 'WARN') {
  79.             if (DEBUG || level != 'DEBUG') {
  80.                 engine.log('[' + level + '] ' + msg)
  81.             }
  82.         } else {
  83.             engine.log('[ERROR] unknown loglevel "' + level + '"; msg: ' + msg)
  84.         }
  85.     }
  86.  
  87.     // log info on startup
  88.     logmsg('I', 'debug messages are ' + (DEBUG ? 'en' : 'dis') + 'abled')
  89.     logmsg('I', info.name + ' v' + info.version + ' by ' + info.author + ' loaded successfully!')
  90. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement