MooMoo.io Bot

gives you magic powers

  1. // ==UserScript==
  2. // @name MooMoo.io Bot
  3. // @version 0.2
  4. // @description gives you magic powers
  5. // @match *://moomoo.io/*
  6. // @match *://*.moomoo.io/*
  7. // @require https://cdn.jsdelivr.net/npm/msgpack-lite@0.1.26/dist/msgpack.min.js
  8. // @grant none
  9. // @run-at document-start
  10. // @icon https://moomoo.io/img/favicon.png?v=1
  11. // @namespace https://greasyfork.org/users/1347888
  12. // ==/UserScript==
  13.  
  14. let ws, msgpack = window.msgpack;
  15.  
  16. const ipLimit = 2;
  17.  
  18. let extra = {
  19. newSend: function(e) {
  20. const t = Array.prototype.slice.call(arguments, 1), i = window.msgpack.encode([e, t]);
  21. this && this.readyState === 1 && this.send(i)
  22. },
  23. spawn: function(name = "wealthy bot", skin = 6) {
  24. this.newSend("M", { name: name, moofoll: true, skin: skin })
  25. },
  26. chat: function(message) {
  27. this.newSend("6", message)
  28. },
  29. createTribe: function(tribe) {
  30. this.newSend("L", tribe)
  31. },
  32. }
  33.  
  34. let keys = Object.keys(extra);
  35. for(let key of keys) WebSocket.prototype[key] = extra[key];
  36.  
  37. const vanilla = WebSocket;
  38. window.WebSocket = class extends vanilla {
  39. constructor(...args) {
  40. super(...args);
  41.  
  42. this.send = new Proxy(super.send, {
  43. apply: (target, thisArg, args) => {
  44. let data = args[0];
  45.  
  46. if(!ws) {
  47. window.ws = ws = thisArg;
  48. joined()
  49. }
  50.  
  51. return target.apply(thisArg, args);
  52. }
  53. });
  54. }
  55. };
  56.  
  57. async function joined() {
  58. sendBot(serverIp(), await getToken())
  59. }
  60.  
  61. let payload_;async function getPayload(){return window.altcha.reset(),document.getElementById("altcha").configure({auto:"onfocus",challengeurl:"https://api.moomoo.io/verify",debug:!1,delay:0,hidefooter:!0,hidelogo:!1,name:"altcha",maxnumber:1e6,mockerror:!1,refetchonexpire:!0,spamfilter:!1,strings:{ariaLinkLabel:"Visit Altcha.org",error:"Verification failed. Try again later.",expired:"Verification expired. Try again.",footer:'Protected by <a href="https://altcha.org/" target="_blank" aria-label="Visit Altcha.org">ALTCHA</a>',label:"I'm not a robot",verified:"Verified",verifying:"Verifying...",waitAlert:"Verifying... please wait."},test:!1,workers:12}),new Promise((e,a)=>{document.querySelector("#altcha").addEventListener("statechange",a=>{let{detail:t}=a,{payload:r,state:i}=t;"verified"===i&&e(payload_=r)}),document.getElementById("altcha_checkbox").click()})};
  62.  
  63. async function getToken() {
  64. let token = await getPayload();
  65. let converted = JSON.parse(atob(token));
  66.  
  67. console.log(`delta: ${100}ms, converted:`, converted)
  68.  
  69. token = `alt:${btoa(JSON.stringify(converted))}`
  70.  
  71. return token;
  72. }
  73.  
  74. function serverIp() {
  75. if(!ws) return null;
  76.  
  77. return ws.url.split("wss://")[1].split(".moomoo.io")[0];
  78. }
  79.  
  80. function getRandomString(t){let n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",r="";for(let o=0;o<t;o++)r+=n.charAt(Math.floor(Math.random()*n.length));return r}
  81. function sendBot(ip, token) {
  82. let url = `wss://${ip}.moomoo.io/?token=${token}`
  83.  
  84. try {
  85. let bot = new WebSocket(url);
  86.  
  87. bot.onopen = () => {
  88. console.log("open")
  89.  
  90. bot.spawn();
  91. bot.createTribe(getRandomString(7));
  92.  
  93. setInterval(() => {
  94. let message = Math.random() > .1 ? "discord/youtube: wealthydev" : "notice me josh!"
  95. bot.chat(message);
  96.  
  97. bot.spawn();
  98. }, 2e3);
  99. }
  100.  
  101. bot.onclose = (e) => console.log("closed", e.code)
  102. bot.onerror = () => {}
  103.  
  104. window.bots.push(bot)
  105. } catch(e){}
  106. }
  107.  
  108. window.bots = window.bots || []
  109.  
  110. window.getServers = async () => {
  111. let run_start = Date.now()
  112. let token = await getToken()
  113.  
  114. let servers = {
  115. sandbox: await fetch("https://api-sandbox.moomoo.io/servers?v=1.26").then(res => res.json()),
  116. default: await fetch("https://api.moomoo.io/servers?v=1.26").then(res => res.json())
  117. }
  118.  
  119. return servers;
  120. }
  121.  
  122. window.getToken = getToken;
  123. window.sendBot = sendBot;
  124. window.serverIp = serverIp;