Nurutomo2

MPP Chat Bot

Sep 16th, 2018
1,231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var defaultName, beforeSetNick, welcome, ping, pong; // Init all variables
  2. var defaultName = MPP.client.user.name; // This defaultnick set automaticcaly!
  3. var dadNick = 'DadBot';
  4. var multiplier = 1;
  5. MPP.chat.send('Bot Started! Toggle Welcome with /toggleWelcome');
  6. welcome = 0; // Default set to 0 to prevent spam
  7. MPP.chat.send('welcome = 0');
  8.  
  9. MPP.client.on('a',function(m) {
  10.     real = m.a;
  11.     executor = m.p.name;
  12.     currentNick = MPP.client.getOwnParticipant().name;
  13.     if (real.split(' ')[0]=="@someone") {
  14.         after = real.split(" ");
  15.         after.shift();
  16.         after = after.join(" ");
  17.         MPP.chat.send(executor + ", " + '^_^' + " (" + random() +") " + after);
  18.     }
  19.     if (real.split(' ')[0] == "/help" || real.split(' ')[0] == "/h") {
  20.         if (real.split(' ').length == 1) {
  21.             MPP.chat.send(executor + " | Help : /help (/h) {Command} - Show this message | @someone {message} - Say to random player | i'm (im) {message} - return Hi[messsage], I'm [nick] | /setNick [nick] - Set Owner nick | /resetNick - Reset admin nick | /date (/time) - Get Time | > [string] - Evaluate String | /toggleWelcome - On/Off Welcome Text | ping - Pong! | /suggest - Suggest cmd! | /sload [id] - Show suggestion | /setDadNick - set DadBot Nick |")
  22.             MPP.chat.send('/about (/credits) - Show about/credits | /notelist - Show All Notes | /strSong [pianoCode] - Play Song from String | /generateNote [keyboard] ! [delay] - Generate for pianoCode | /multi [many] - multiPressKey')
  23.         } else {
  24.             switch(real.split(' ')[1]) {
  25.                 case 'list':
  26.                     MPP.chat.send('@someone | > | strSong | generateNote')
  27.                 case '@someone':
  28.                     MPP.chat.send('@someone [message] - Say to random player like e.g @someone is winner! will output YourNick, emoticon (SelectedPlayer) is winner');
  29.                     break;
  30.                 case '>':
  31.                     MPP.chat.send('> [string] - Evaluate string that only support Javascript');
  32.                     break;
  33.                 case 'strSong':
  34.                     MPP.chat.send('strSong [pianoCode] - Play Song from String, e.g "c1 100|c2 100". to generate use /generateNote');
  35.                     break;
  36.                 case 'generateNote':
  37.                     MPP.chat.send('generateNote [keyboard] ! [delay] - Generate for pianoCode. e.g "eeuuiiuyyttrre!250,250,250,250,250,250,750,250,250,250,250,250,250,250" aka "keyboardButton|time" time is split with ,(comma)')
  38.                     break;
  39.             }
  40.         }
  41.     }
  42.     if (real.split(' ')[0].toLowerCase() == "im" || real.split(' ')[0].toLowerCase() == "i'm"){
  43.         setName(dadNick);
  44.         beforeSetNick = defaultName;
  45.         if (real.split(' ')[1].toLowerCase() == "dad") {
  46.             MPP.chat.send("No you're not, you're " + executor);
  47.         } else {
  48.             after = real.split(" ");
  49.             after.shift();
  50.             after = " " + after.join(" ");
  51.             MPP.chat.send("Hi" + after +", I'm " + dadNick);
  52.         }
  53.         setTimeout(()=>{setName(['defaultNick'])},2500);
  54.     }
  55.     if (real.split(' ')[0] == "/setNick") {
  56.         if (real.length > 9) {
  57.             beforeSetNick = defaultName;
  58.             after = real.split(" ");
  59.             after.shift();
  60.             after = after.join(" ");
  61.             if (beforeSetNick != undefined) {
  62.                 currentNick = currentNick.split(' | ')[0];
  63.                 setName(currentNick + " | " + after);
  64.                 MPP.chat.send(executor + ', Nickname set to "' + after + '"');
  65.             }
  66.         } else {
  67.             MPP.chat.send(executor + ', Custom nick is undefined.');
  68.         }
  69.     }
  70.     if (real=="/resetNick") {
  71.         if (beforeSetNick != undefined) {
  72.             setName(beforeSetNick);
  73.             beforeSetNick = undefined;
  74.             MPP.chat.send('Nick Resetted!')
  75.         } else {
  76.             MPP.chat.send(executor + ', Custom nick is undefined.')
  77.         }
  78.     }
  79.     if (real == "/date" || real == "/time") {
  80.         MPP.chat.send(executor + ", My Local Time Is " + new Date() + " and UTC Time Is " + new Date().toUTCString())
  81.     }
  82.     if (real.split(' ')[0] == '>') {
  83.         after = real.split(' ');
  84.         after.shift();
  85.         after = after.join(' ');
  86.         loop =
  87.             after.includes('setInterval(') ||
  88.             after.includes('while(1)') ||
  89.             after.includes('while(true)');
  90.         if (loop) {
  91.             errorPos = after.includes('setInterval(') ? after.indexOf('setInterval(') : after.includes('while(1)') ? after.indexOf('while(1)') : after.includes('while(true)') ? after.indexOf('while(true)') : undefined;
  92.             hint = after.substr(Math.max(errorPos - 10,0),Math.min(errorPos + 10,after.length));
  93.             MPP.chat.send('> Error : Loop blacklisted for prevent spam - Line ' + errorPos + ' Hint: ==>' + hint + '<==');
  94.         } else {
  95.             try {
  96.                 MPP.chat.send(`> Console: ${eval(after)}`);
  97.             } catch (e) {
  98.                 MPP.chat.send(`> Error : ${e}`);
  99.             }
  100.         }
  101.     }
  102.     if (real=="/toggleWelcome") {
  103.         welcome = (welcome+1)%2;
  104.         MPP.chat.send('welcome = ' + welcome);
  105.     }
  106.     if (real=="ping") {
  107.         ping = new Date().getTime();
  108.         MPP.chat.send('Pong!');
  109.     }
  110.     if (real=="Pong!" && executor==currentNick) {
  111.         pong = new Date().getTime();
  112.         ms = (pong - ping)/ 2;
  113.         MPP.chat.send(ms + 'ms');
  114.     }
  115.     if (real.split(' ')[0] == "/suggest") {
  116.         after = real.split(" ");
  117.         after.shift();
  118.         after = after.join(" ");
  119.         localStorage.suggest = localStorage.suggest + "-=+=-" + after + "*()*" + executor;
  120.         id = localStorage.suggest.split('-=+=-').length - 1;
  121.         MPP.chat.send('Suggested! To load your suggest use /sload ' + id);
  122.     }
  123.     if (real.split(' ')[0] == "/sload") {
  124.         id = real.split(' ')[1];
  125.         locale = localStorage.suggest;
  126.         if (localStorage.suggest.includes('-=+=-')) {
  127.             locale = localStorage.suggest.split('-=+=-')[id];
  128.         }
  129.         submitter = locale.split('*()*')[1];
  130.         inside = locale.split('*()*')[0];
  131.         MPP.chat.send('Submitted by ' + submitter + " : ");
  132.         MPP.chat.send(inside);
  133.     }
  134.     if (real == "/about" || real == "/credits") {
  135.         MPP.chat.send('Created by Nurutomo with Sublime Text 3 || Programmer - Nurutomo | SomeoneCmd - Discord ( Coded by Vistril )| DadBot - DadBot from Discord | Ping - Nurutomo | Eval Cmd - Vistril | Download Link : https://pastebin.com/BPNGQpXv')
  136.     }
  137.     if (real.split(' ')[0] == "/setDadNick") {
  138.         after = real.split(' ');
  139.         after.shift();
  140.         after = after.join(' ');
  141.         dadNick = after;
  142.         MPP.chat.send("Dad Nick has been set to '" + dadNick + "'")
  143.     }
  144.     if (real == '/notelist') {
  145.         MPP.chat.send('Used for "MPP.press(key,volume)"')
  146.         MPP.chat.send(Object.keys(MPP.piano.keys))
  147.     }
  148.     if (real.split(' ')[0] == "/multi") {
  149.         multiplier = real.split(' ')[1];
  150.         MPP.chat.send('Key now press (' + multiplier + 'x)');
  151.     }
  152.     if (real.split(' ')[0] == "/strSong") {
  153.         after = real.split(' ');
  154.         after.shift();
  155.         after = after.join(' ');
  156.         MPP.chat.send('')
  157.         pressAll(after);
  158.     }
  159.     if (real.split(' ')[0] == "/generateNote") {
  160.         after = real.split(' ');
  161.         after.shift();
  162.         after = after.join(' ');
  163.         keycode = after.split('!')[0];
  164.         let x = keycode.length
  165.         let time;
  166.         if (after.split('!')[1] == "") {
  167.             time = [...keycode].fill(200);
  168.         } else if (after.split('!')[1].split(',').length == 1){
  169.             time = [...keycode].fill(after.split('!')[1]);
  170.         } else {
  171.             time = after.split('!')[1].split(',');
  172.         }
  173.         console.log(time);
  174.         MPP.chat.send('/strSong ' + generateKey(keycode,time));
  175.     }
  176. });
  177.  
  178. function random() {
  179.     return Object.keys(MPP.client.ppl).map(key=>MPP.client.ppl[key].name)[Math.floor(Math.random()*this.length)];
  180. }
  181.  
  182. function setName(n) {
  183.     if (Array.isArray(n)) {
  184.         MPP.client.sendArray([{m: "userset",set: {name: defaultName}}]);
  185.     } else {
  186.         MPP.client.sendArray([{m: "userset",set: {name: n}}]);
  187.     }
  188. }
  189.  
  190. function pressAll(decode) {
  191.     each = decode.split('|');
  192.     timeall = 0;
  193.     for (var pos = 0; pos < each.length; pos++) {
  194.         keys = each[pos].split(' ');
  195.         let key = keys[0];
  196.         let time = Number(keys[1]);
  197.         timeall += time;
  198.         setTimeout(()=>{
  199.             repeatPress(key,multiplier);
  200.         },timeall);
  201.     }
  202. }
  203.  
  204. function repeatPress(key,many) {
  205.     for(i = 0;many > i;i++) {
  206.         MPP.press(key);
  207.     }
  208. }
  209.  
  210. function generateKey(key,time) {
  211.     keyboard = 'a,z,s,x,c,f,v,g,b,n,j,m,k,q,2,w,e,4,r,5,t,y,7,u,8,i,9,o,p,-,[,=,]'.split(',');
  212.     real = Object.keys(MPP.piano.keys).slice(23,57)
  213.     arraykey = [...key];
  214.     var str = [];
  215.     let i = 0;
  216.     arraykey.forEach(function (element) {
  217.         switch(element) {
  218.             case '1':
  219.                 element = 'k';
  220.                 break;
  221.             case ',':
  222.                 element = 'q';
  223.                 break;
  224.             case 'l':
  225.                 element = '2';
  226.                 break;
  227.             case '.':
  228.                 element = 'w';
  229.                 break;
  230.             case '/':
  231.                 element = 'e';
  232.                 break;
  233.         }
  234.         str.push(real[keyboard.indexOf(element)] + ' ' + time[i]);
  235.         i++;
  236.     })
  237.     return str.join('|');
  238. }
  239.  
  240. MPP.client.on('participant removed',(player)=>{ if (welcome) {MPP.chat.send('Bye! ' + player.name + ' is now left the server / game ('+ (MPP.client.channel.count - 1) + '/20)')}});
  241. MPP.client.on('participant added',(player)=>{ if (welcome) {MPP.chat.send('Welcome! ' + player.name + ' is joined the server / game ('+ (MPP.client.channel.count + 1) + '/20)')}});
  242.  
  243. window.addEventListener('beforeunload', () => {
  244.     MPP.chat.send('Bye! ' + MPP.client.getOwnParticipant().name + ' is now left the server / game ('+ (MPP.client.channel.count - 1) + '/20)');
  245.     setName(defaultName);
  246. });
Advertisement
Add Comment
Please, Sign In to add comment