Advertisement
Multivit4min

Untitled

Oct 7th, 2017
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. registerPlugin({
  2.     name: 'BadNick Check',
  3.     version: '1.2',
  4.     description: 'Kicks or Messages People with a Bad Nickname!',
  5.     author: 'Multivitamin <multivitamin.wtf>',
  6.     vars: [
  7.         {
  8.             name: 'badnick',
  9.             title: 'List of Banned Nicknames (Help Script: http://sinus.cat/helpers/badnick/)',
  10.             type: 'multiline'
  11.         },
  12.         {
  13.             name: 'action',
  14.             title: 'What should happen when a Client with a Bad Nickname has been detected?',
  15.             type: 'select',
  16.             options: [
  17.                 'Kick',
  18.                 'Message'
  19.             ]
  20.         },
  21.         {
  22.             name: 'message',
  23.             title: 'Kick / Warn DEFAULT Message',
  24.             type: 'string',
  25.         },
  26.         {
  27.             name: 'ignore',
  28.             title: 'Comma Seperated List of Groups which should get ignored',
  29.             type: 'string',
  30.         }
  31.     ]
  32. }, function(sinusbot, config) {
  33.  
  34.     var sinusbot = null
  35.  
  36.     var event = require("event")
  37.     var engine = require("engine")
  38.     var engine = require("backend")
  39.  
  40.     var badnicks = []
  41.  
  42.     //Load the badnick Multiline Variable into a List of Nicks
  43.     if (config.badnick !== undefined) {
  44.         for (var key in config.badnick.split('\n')) {
  45.             //Check for Valid Regex String
  46.             if (config.badnick.split('\n')[key].match(/^[ ]{0,}\/(.{1,})\/([gmixXsuUAJ]{0,10})[ ]{0,}(\->[ ]{0,}(.{1,})|)$/i)) {
  47.                 var capture = config.badnick.split('\n')[key].match(/^[ ]{0,}\/(.{1,})\/([gmixXsuUAJ]{0,10})[ ]{0,}(\->[ ]{0,}(.{1,})|)$/i)
  48.                 var re = new RegExp(capture[1], capture[2])
  49.                 var msg = capture[4]
  50.             //User Probably does not know Regex try to use it anyway
  51.             } else {
  52.                 engine.log('Invalid Regex Format detected! > '+config.badnick.split('\n')[key])
  53.                 var re = new RegExp(config.badnick.split('\n')[key], 'i')
  54.                 var msg = undefined
  55.             }
  56.             badnicks.push([re, msg])
  57.         }
  58.     }
  59.  
  60.     //Validate for errors in the Config Input
  61.     var action = config.action ? config.action : 0
  62.     var addcomplaint = config.addcomplaint ? config.addcomplaint : 0
  63.     var message = config.message ? config.message : 'Please do not use this Nickname!'
  64.     var ignore = config.ignore ? config.ignore.split(',') : []
  65.     //Parse Ignore List from String to Int
  66.     for (var key in ignore) {
  67.         if (!isNaN(parseInt(ignore[key]))) ignore[key] = parseInt(ignore[key])
  68.     }
  69.  
  70.     event.on("chat", function (ev) {
  71.         if (ev.client.isSelf()) return
  72.         if (ev.text.match(/^!help ?$/)) {
  73.             ev.client.chat('[b]BAD NICK CHECK[/b] This Bot uses [URL=https://multivitamin.wtf]Multivitamins[/URL] Bad Nick Check Plugin!')
  74.         }
  75.     })
  76.  
  77.     //Events
  78.     //Event for Client Connect / Move
  79.     event.on('clientMove', function(ev) {
  80.         //Filter all Client Connect Events and check against whitelist
  81.         if (!ev.fromChannel && !whitelist(client)) checkNick(ev.client, ev.clientNick)
  82.     })
  83.  
  84.     //Do Initial FullCheck on all Clients connected to the Server
  85.     event.on('connect', function(ev) {
  86.         fullCheck()
  87.     })
  88.     fullCheck()
  89.  
  90.     //Do a check when Client changes its nickname
  91.     event.on('clientNick', function(ev) {
  92.         //Check against whitelist
  93.         if (whitelist(ev.client)) return
  94.         checkNick(ev.client)
  95.     })
  96.  
  97.     //Check if Nick is a Bad Nickname
  98.     function checkNick(client){
  99.         for (var key in badnicks) {
  100.             if (client.nick().match(badnicks[key][0])) {
  101.                 engine.log('BadNick detected: '+client.nick()+' via entry \''+badnicks[key][0]+'\'')
  102.                 if (action === 1) return client.chat(badnicks[key][1] !== undefined ? badnicks[key][1] : message)
  103.                 client.kick(badnicks[key][1] !== undefined ? badnicks[key][1] : message)
  104.             }
  105.         }
  106.     }
  107.  
  108.     //Check all Nicknames on the Server
  109.     function fullCheck() {
  110.         //Get a List of all Clients connected to the Server
  111.         backend.getClients()
  112.             .filter(function(client) {
  113.                 return !whitelist(client)
  114.             })
  115.             .forEach(checkNick)
  116.     }
  117.  
  118.     //Check if User is whitelisted via Ignore Settings
  119.     function whitelist(client) {
  120.         return client.getServerGroups().some(function(group) {
  121.             return ignore.indexOf(group.id()) >= 0
  122.         })
  123.     }
  124.  
  125. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement