ICEbot v4 websocket

Bot Panel for gartic.io

  1. // ==UserScript==
  2. // @name ICEbot v4 websocket
  3. // @name:tr made by frio
  4. // @name:az hello
  5. // @description Bot Panel for gartic.io
  6. // @description:tr Bot Panel for gartic.io (in Turkish)
  7. // @description:az Bot Panel for gartic.io (in Azerbaijani)
  8. // @version 4.0
  9. // @author frio
  10. // @license MIT
  11. // @match *://gartic.io/*
  12. // @match *://*/*?__cpo=aHR0cHM6Ly9nYXJ0aWMuaW8
  13. // @icon https://cdn.discordapp.com/attachments/1124451069204910161/1177654466523189360/MOSHED-2023-11-24-13-55-23.jpg?ex=65734b30&is=6560d630&hm=1b42ff32759ea222cc3b1eac33cb7852209358d47e44c560b10efe0f8f230752&
  14. // @grant GM_setValue
  15. // @grant GM_getValue
  16. // @grant GM_addValueChangeListener
  17. // @grant GM_addStyle
  18. // @namespace https://greasyfork.org/users/1220697
  19. // ==/UserScript==
  20.  
  21.  
  22.  
  23. let rand = x => Math.floor(Math.random() * 1000000),
  24. GM_onMessage = (label, cb) => GM_addValueChangeListener(label, (_, __, data) => cb(...data)),
  25. GM_sendMessage = (label, ...data) => GM_setValue(label, data);
  26. GM_onMessage('answerinput', (atılacak, _) => {
  27.  
  28. document.querySelector('#answer').value= atılacak
  29. })
  30. GM_onMessage('changedraw', (atılacak, _) => {
  31.  
  32. document.querySelector('#answer').value= atılacak
  33. })
  34. function f(ygn){return document.querySelector(ygn)}
  35. function fa(ygn){return document.querySelectorAll(ygn)}
  36. function num(ICE){return Math.ceil(Math.random()*ICE+1)}
  37. function rc(ygn){let e=f('input[name="chat"]');let lv=e.value;e.value="";let ev=new Event('input',{bubbles:true});ev.simulated=true;let t=e._valueTracker;if(t){t.setValue(lv);};e.dispatchEvent(ev);}
  38. function rs(ygn){let e=f(".search input");let lv=e.value;e.value="";let ev=new Event('input',{bubbles:true});ev.simulated=true;let t=e._valueTracker;if(t){t.setValue(lv);};e.dispatchEvent(ev);}
  39. function rnext(kelime) {
  40. const hd = kelime.split('');
  41. const hu = hd.length;
  42. const yh = [];
  43. const invisibleChars = ['\u200B', '\u200C', '\u200D', '\u2061', '\u2062', '\u2063', '\u2064', '\u2066', '\u17b4', '\u17b5', '\u2068', '\u2069'];
  44. let charCount = 0;
  45.  
  46. for (let i = 0; i < hu; i++) {
  47. yh.push(hd[i]);
  48. charCount++;
  49.  
  50. if (charCount < 18 && i < hu - 1) {
  51. const invisibleChar = invisibleChars[Math.floor(Math.random() * invisibleChars.length)];
  52. yh.push(invisibleChar);
  53. charCount++;
  54. }
  55.  
  56. if (charCount >= 18) {
  57. break;
  58. }
  59. }
  60.  
  61. return yh.join('');
  62. }
  63. let cmd="",wss=[],tojoin=0,usersinroom=[],customkickitems=[],intervalbroadcast,intervalmsg,intervalanswer,botsidvalue=[],botID,botlongID,theme,avatar=localStorage.getItem("avatar"),botnick=localStorage.getItem("botnick"),nick=localStorage.getItem("nick")
  64.  
  65.  
  66. if(window.location.href.indexOf("aHR0cHM6Ly9nYXJ0aWMuaW8")!=-1){
  67. let room,kicknewstat=false,kickjoinstat=false,waitforkick=0
  68.  
  69. const addItem = (arr, ...arguments) => { for (let i = 0; i < arguments.length; i++) { arr[arr.length] = arguments[i]; } return arr; };
  70.  
  71. function arrayFilter(array) {
  72. return array.filter((value, index, arr) => arr.indexOf(value) === index);
  73. }
  74.  
  75. GM_setValue("botekle",rand())
  76.  
  77. GM_addValueChangeListener("resetcount", function(I,C,E,b) {
  78. GM_setValue("botekle",rand())
  79. })
  80. setTimeout(()=>{waitforkick=0},1000)
  81.  
  82. GM_onMessage("join", (room,nick,avatar,botnick,kickonjoin,_) => {
  83. fetch("https://"+window.location.href.split("/")[2]+"/server?check=1&v3=1&room="+room+"&__cpo=aHR0cHM6Ly9nYXJ0aWMuaW8#").then(x=>x.text()).then(x=>{
  84. let ws=new WebSocket("wss://"+window.location.href.split("/")[2]+"/__cpw.php?u="+btoa("wss://"+x.split("https://")[1].split(".")[0]+".gartic.io/socket.io/?c="+x.split("?c=")[1]+"&EIO=3&transport=websocket")+"&o=aHR0cHM6Ly9nYXJ0aWMuaW8=");
  85. ws.onopen=()=>{
  86. let inter=setInterval(()=>{
  87. GM_setValue("ready",rand())
  88. if(tojoin==1){
  89. tojoin=0
  90. if (botnick === '0') {
  91. ws.send('42[3,{"v":20000,"nick":"'+rnext(nick)+'","avatar":'+avatar+',"platform":0,"sala":"'+room.substring(2)+'"}]')
  92. } else if (botnick === '1') {
  93. ws.send('42[3,{"v":20000,"nick":"'+nick+Math.ceil(Math.random()*10000+1)+'","avatar":'+avatar+',"platform":0,"sala":"'+room.substring(2)+'"}]')
  94. }
  95. clearInterval(inter)
  96. }
  97. },50)
  98. }
  99. ws.onclose=()=>{
  100. wss.length=0
  101. ws.close();
  102. }
  103. ws.onmessage=(msg)=>{
  104.  
  105. if(msg.data.indexOf('42["23"')!=-1){
  106. let user=JSON.parse("{"+msg.data.split("{")[1].split("}")[0]+"}")
  107. usersinroom.push(user)
  108. if(kicknewstat){typeof(user.id)=="string"?ws.send('42[45,'+ws.id+',["'+user.id+'",true]]'):ws.send('42[45,'+ws.id+',['+user.id+',true]]');}
  109. }
  110. if(msg.data.indexOf('42["5"')!=-1){
  111. let objlist=JSON.parse('["5"'+msg.data.split('42["5"')[1])
  112. ws.theme=objlist[4].tema
  113. ws.room=objlist[4].codigo
  114. ws.id=objlist[2]
  115. objlist[5].forEach(item=>{usersinroom.push(item)})
  116. let targetid=objlist[5][0].id
  117. botID = objlist[2]
  118. botlongID = objlist[1]
  119. theme = objlist[4].tema
  120. setTimeout(()=>{
  121. f(".roomtheme").innerHTML= theme},10)
  122. setTimeout(()=>{
  123. GM_sendMessage("botsidvalue",botlongID,rand())},777)
  124. setTimeout(()=>{
  125. GM_sendMessage("updatelist",botID,rand())},777)
  126.  
  127. kickjoinstat?typeof(targetid)=="string"?ws.send('42[45,'+ws.id+',["'+targetid+'",true]]'):ws.send('42[45,'+ws.id+',['+targetid+',true]]'):0
  128. ws.send('42[46,'+objlist[2]+']')
  129.  
  130.  
  131.  
  132. GM_onMessage('answerinput', (atılacak, _) => {
  133. f('#answer').value= atılacak
  134. })
  135.  
  136. GM_onMessage("botsidvalue", (datachangex, _) => {
  137.  
  138. botsidvalue.push(datachangex)
  139. });
  140. GM_onMessage("updatelist", (datachangex, _) => {
  141. GM_sendMessage("updatebotidlist",botsidvalue,rand())
  142. });
  143. GM_onMessage("updatebotidlist", (datachangex, _) => {
  144.  
  145. if (!botsidvalue.includes(datachangex)) {
  146. addItem(botsidvalue,...datachangex);
  147. }
  148. botsidvalue = arrayFilter(botsidvalue);
  149. });
  150.  
  151. GM_addValueChangeListener("broadcast", function(I,C,E,b) {
  152. ws.send('42[11,'+objlist[2]+',"'+E.split("►")[0]+'"]')
  153. ws.send('42[13,'+objlist[2]+',"'+E.split("►")[0]+'"]')
  154. });
  155. GM_addValueChangeListener("msg", function(I,C,E,b) {
  156. ws.send('42[11,'+objlist[2]+',"'+E.split("►")[0]+'"]')
  157. })
  158. GM_addValueChangeListener("answer", function(I,C,E,b) {
  159. ws.send('42[13,'+objlist[2]+',"'+E.split("►")[0]+'"]')
  160. })
  161. GM_addValueChangeListener("report", function(I,C,E,b) {
  162. ws.send('42[35,'+objlist[2]+']')
  163. });
  164. GM_addValueChangeListener("jump", function(I,C,E,b) {
  165. ws.send('42[25,'+objlist[2]+']')
  166. });
  167. GM_addValueChangeListener("acceptdraw1", function(I,C,E,b) {
  168. ws.send('42[34,'+objlist[2]+']')
  169. });
  170. GM_addValueChangeListener("acceptdraw2", function(I,C,E,b) {
  171. ws.send('42[34,'+objlist[2]+',1]')
  172. });
  173.  
  174. GM_addValueChangeListener("tips", function(I,C,E,b) {
  175. ws.send('42[30,'+objlist[2]+',1]')
  176. });
  177.  
  178. GM_addValueChangeListener("exit", function(I,C,E,b) {
  179. ws.send('42[24,'+objlist[2]+']')
  180. wss.lenghth=0
  181. usersinroom.length=0
  182. });
  183.  
  184. GM_addValueChangeListener("kick", function(I,C,E,b) {
  185. if(!botsidvalue.includes(E.split("..")[0])){
  186. ws.send('42[45,'+objlist[2]+',["'+E.split("..")[0]+'",true]]')}
  187. })
  188.  
  189.  
  190. JSON.stringify(wss).indexOf(objlist[2])==-1?wss.push({"ws":ws,"id":objlist[2],"lengthID":objlist[1]}):0
  191. let interval=setInterval(()=>{
  192. ws.readyState==1?ws.send('42[42,'+objlist[2]+']'):clearInterval(interval)
  193. ws.readyState==1?ws.send('2'):clearInterval(interval)
  194. },20000);
  195. }
  196. if(msg.data.indexOf('42["34"')!=-1){
  197. let objlist=JSON.parse('["34"'+msg.data.split('42["34"')[1])
  198. var cdd=objlist[1]
  199.  
  200. GM_sendMessage('answerinput', cdd, rand());
  201.  
  202. }
  203.  
  204. }
  205. })
  206. });
  207.  
  208.  
  209.  
  210. GM_addValueChangeListener("join", function(I,C,E,b) {
  211. tojoin=1
  212. });
  213. GM_addValueChangeListener("kicknewset", function(I,C,E,b) {
  214. kicknewstat=E
  215. });
  216. GM_addValueChangeListener("kickjoinset", function(I,C,E,b) {
  217. kickjoinstat=E
  218. });
  219.  
  220.  
  221.  
  222. window.addEventListener("beforeunload",()=>{
  223. GM_setValue("botçıkar",window.location.href.split("/")[2]+"--"+rand())
  224. })
  225. }
  226.  
  227. if(window.location.href.indexOf("gartic.io")!=-1){
  228. const addItem = (arr, ...arguments) => { for (let i = 0; i < arguments.length; i++) { arr[arr.length] = arguments[i]; } return arr; };
  229.  
  230. function arrayFilter(array) {
  231. return array.filter((value, index, arr) => arr.indexOf(value) === index);
  232. }
  233. let customkick = localStorage.getItem("customkick");
  234. if (!customkick) {
  235. localStorage.setItem("customkick", "[]");
  236. }
  237.  
  238. if (customkick) {
  239. let list=JSON.parse(localStorage.getItem("customkick"))
  240.  
  241. list.forEach(user=>{
  242. setTimeout(()=>{
  243. f("#icebot3").innerHTML+=`<h2 class="customkick" id="customkick.`+user.user+`">`+user.user+`</h2>
  244. <input type="submit" class="customkickremove" id="customkickuser.`+user.user+`" onclick="window.postMessage('customkickremove.`+user.user+`','*')" value="remove">`
  245. addItem(customkickitems, user.user)
  246. },3000)
  247. })
  248. }
  249. let avataritem = localStorage.getItem("avatar");
  250. if (!avataritem) {
  251. localStorage.setItem("avatar", "1");
  252. }
  253. let botnickitem = localStorage.getItem("botnick");
  254. if (!botnickitem) {
  255. localStorage.setItem("botnick", "0");
  256. }
  257. let nickitem = localStorage.getItem("nick");
  258. if (!nickitem) {
  259. localStorage.setItem("nick", "ICEbot");
  260. }
  261. if (avataritem) {
  262. setTimeout(()=>{
  263. f("#avatar").src = 'https://gartic.io/static/images/avatar/svg/' + localStorage.getItem("avatar") + '.svg';
  264.  
  265. },100)
  266. }
  267. window.addEventListener("message",(msg)=>{
  268. if(msg.data=="broadcastspam"){
  269. let broadcastspamMS=f(".broadcastspam").value
  270. f("#broadcastms").innerText='BROADCAST SPAM VALUE: ' + broadcastspamMS
  271. localStorage.setItem("broadcastspam",broadcastspamMS)
  272. }
  273. if(msg.data=="messagespam"){
  274. let messagespamMS=f(".messagespam").value
  275. f("#messagems").innerText='MESSAGE SPAM VALUE: ' + messagespamMS
  276. localStorage.setItem("messagespam",messagespamMS)
  277. }
  278. if(msg.data=="answerspam"){
  279. let answerspamMS=f(".answerspam").value
  280. f("#answerms").innerText='ANSWER SPAM VALUE: ' + answerspamMS
  281. localStorage.setItem("answerspam",answerspamMS)
  282. }
  283. if(msg.data=="nick"){
  284. localStorage.setItem("nick",f("#botnick").value)
  285. }
  286. if(msg.data=="botnick0"){
  287. botnick=0
  288. localStorage.setItem("botnick",0)
  289. }
  290. if(msg.data=="botnick1"){
  291. botnick=1
  292. localStorage.setItem("botnick",1)
  293. }
  294. if(msg.data=="showavatarlist"){
  295. f("#icebot1").style.display="none"
  296. f("#avatarlist").style.display="block"
  297. }
  298. if(msg.data=="hideavatarlist"){
  299. f("#icebot1").style.display="block"
  300. f("#avatarlist").style.display="none"
  301. }
  302.  
  303. if(msg.data=="avatar0"){
  304. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/0.svg";
  305. avatar=0
  306. localStorage.setItem("avatar",0)
  307. }
  308. if(msg.data=="avatar1"){
  309. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/1.svg";
  310. avatar=1
  311. localStorage.setItem("avatar",1)
  312. }
  313. if(msg.data=="avatar2"){
  314. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/2.svg";
  315. avatar=2
  316. localStorage.setItem("avatar",2)
  317. }
  318. if(msg.data=="avatar3"){
  319. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/3.svg";
  320. avatar=3
  321. localStorage.setItem("avatar",3)
  322. }
  323. if(msg.data=="avatar4"){
  324. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/4.svg";
  325. avatar=4
  326. localStorage.setItem("avatar",4)
  327. }
  328. if(msg.data=="avatar5"){
  329. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/5.svg";
  330. avatar=5
  331. localStorage.setItem("avatar",5)
  332. }
  333. if(msg.data=="avatar6"){
  334. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/6.svg";
  335. avatar=6
  336. localStorage.setItem("avatar",6)
  337. }
  338. if(msg.data=="avatar7"){
  339. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/7.svg";
  340. avatar=7
  341. localStorage.setItem("avatar",7)
  342. }
  343. if(msg.data=="avatar8"){
  344. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/8.svg";
  345. avatar=8
  346. localStorage.setItem("avatar",8)
  347. }
  348. if(msg.data=="avatar9"){
  349. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/9.svg";
  350. avatar=9
  351. localStorage.setItem("avatar",9)
  352. }
  353. if(msg.data=="avatar10"){
  354. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/10.svg";
  355. avatar=10
  356. localStorage.setItem("avatar",10)
  357. }
  358. if(msg.data=="avatar11"){
  359. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/11.svg";
  360. avatar=11
  361. localStorage.setItem("avatar",11)
  362. }
  363. if(msg.data=="avatar12"){
  364. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/12.svg";
  365. avatar=12
  366. localStorage.setItem("avatar",12)
  367. }
  368. if(msg.data=="avatar13"){
  369. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/13.svg";
  370. avatar=13
  371. localStorage.setItem("avatar",13)
  372. }
  373. if(msg.data=="avatar14"){
  374. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/14.svg";
  375. avatar=14
  376. localStorage.setItem("avatar",14)
  377. }
  378. if(msg.data=="avatar15"){
  379. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/15.svg";
  380. avatar=15
  381. localStorage.setItem("avatar",15)
  382. }
  383. if(msg.data=="avatar16"){
  384. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/16.svg";
  385. avatar=16
  386. localStorage.setItem("avatar",16)
  387. }
  388. if(msg.data=="avatar17"){
  389. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/17.svg";
  390. avatar=17
  391. localStorage.setItem("avatar",17)
  392. }
  393. if(msg.data=="avatar18"){
  394. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/18.svg";
  395. avatar=18
  396. localStorage.setItem("avatar",18)
  397. }
  398. if(msg.data=="avatar19"){
  399. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/19.svg";
  400. avatar=19
  401. localStorage.setItem("avatar",19)
  402. }
  403. if(msg.data=="avatar20"){
  404. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/20.svg";
  405. avatar=20
  406. localStorage.setItem("avatar",20)
  407. }
  408. if(msg.data=="avatar21"){
  409. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/21.svg";
  410. avatar=21
  411. localStorage.setItem("avatar",21)
  412. }
  413. if(msg.data=="avatar22"){
  414. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/22.svg";
  415. avatar=22
  416. localStorage.setItem("avatar",22)
  417. }
  418. if(msg.data=="avatar23"){
  419. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/23.svg";
  420. avatar=23
  421. localStorage.setItem("avatar",23)
  422. }
  423. if(msg.data=="avatar24"){
  424. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/24.svg";
  425. avatar=24
  426. localStorage.setItem("avatar",24)
  427. }
  428. if(msg.data=="avatar25"){
  429. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/25.svg";
  430. avatar=25
  431. localStorage.setItem("avatar",25)
  432. }
  433. if(msg.data=="avatar26"){
  434. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/26.svg";
  435. avatar=26
  436. localStorage.setItem("avatar",26)
  437. }
  438. if(msg.data=="avatar27"){
  439. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/27.svg";
  440. avatar=27
  441. localStorage.setItem("avatar",27)
  442. }
  443. if(msg.data=="avatar28"){
  444. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/28.svg";
  445. avatar=28
  446. localStorage.setItem("avatar",28)
  447. }
  448. if(msg.data=="avatar29"){
  449. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/29.svg";
  450. avatar=29
  451. localStorage.setItem("avatar",29)
  452. }
  453. if(msg.data=="avatar30"){
  454. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/30.svg";
  455. avatar=30
  456. localStorage.setItem("avatar",30)
  457. }
  458. if(msg.data=="avatar31"){
  459. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/31.svg";
  460. avatar=31
  461. localStorage.setItem("avatar",31)
  462. }
  463. if(msg.data=="avatar32"){
  464. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/32.svg";
  465. avatar=32
  466. localStorage.setItem("avatar",32)
  467. }
  468. if(msg.data=="avatar33"){
  469. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/33.svg";
  470. avatar=33
  471. localStorage.setItem("avatar",33)
  472. }
  473. if(msg.data=="avatar34"){
  474. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/34.svg";
  475. avatar=34
  476. localStorage.setItem("avatar",34)
  477. }
  478. if(msg.data=="avatar35"){
  479. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/35.svg";
  480. avatar=35
  481. localStorage.setItem("avatar",35)
  482. }
  483. if(msg.data=="avatar36"){
  484. f("#avatar").src = "https://gartic.io/static/images/avatar/svg/36.svg";
  485. avatar=36
  486. localStorage.setItem("avatar",36)
  487. }
  488. if(msg.data=="hidemenu"){
  489. f("#icebot1").style.display="none"
  490. f("#icebot2").style.display="none"
  491. f("#icebot3").style.display="none"
  492. f("#icebot4").style.display="none"
  493. f(".menu1").value="◻"
  494. f(".menu2").value="◻"
  495. f(".menu3").value="◻"
  496. f(".menu4").value="◻"
  497. f("#avatarlist").style.display="none"
  498. }
  499. if(msg.data=="menu1"){
  500. f("#icebot1").style.display="block"
  501. f("#icebot2").style.display="none"
  502. f("#icebot3").style.display="none"
  503. f("#icebot4").style.display="none"
  504. f(".menu1").value="◼"
  505. f(".menu2").value="◻"
  506. f(".menu3").value="◻"
  507. f(".menu4").value="◻"
  508. f("#avatarlist").style.display="none"
  509. }
  510. if(msg.data=="menu2"){
  511. f("#icebot1").style.display="none"
  512. f("#icebot2").style.display="block"
  513. f("#icebot3").style.display="none"
  514. f("#icebot4").style.display="none"
  515. f(".menu1").value="◻"
  516. f(".menu2").value="◼"
  517. f(".menu3").value="◻"
  518. f(".menu4").value="◻"
  519. f("#avatarlist").style.display="none"
  520. }
  521. if(msg.data=="menu3"){
  522. f("#icebot1").style.display="none"
  523. f("#icebot2").style.display="none"
  524. f("#icebot3").style.display="block"
  525. f("#icebot4").style.display="none"
  526. f(".menu1").value="◻"
  527. f(".menu2").value="◻"
  528. f(".menu3").value="◼"
  529. f(".menu4").value="◻"
  530. f("#avatarlist").style.display="none"
  531. }
  532. if(msg.data=="menu4"){
  533. f("#icebot1").style.display="none"
  534. f("#icebot2").style.display="none"
  535. f("#icebot3").style.display="none"
  536. f("#icebot4").style.display="block"
  537. f(".menu1").value="◻"
  538. f(".menu2").value="◻"
  539. f(".menu3").value="◻"
  540. f(".menu4").value="◼"
  541. f("#avatarlist").style.display="none"
  542. }
  543.  
  544. if(msg.data=="customkickadd"){
  545. const value = f("#kicklistinput").value;
  546. var customkicklist = localStorage.getItem("customkick");
  547. if (!customkicklist.includes(value) && !customkickitems.includes(value)) {
  548. customkickitems.push(value);
  549. let customkickitem = JSON.parse(localStorage.getItem("customkick"));
  550. if (customkickitem.findIndex(item => item.user === value) === -1) {
  551. customkickitem.push({ "user": value });
  552. localStorage.setItem("customkick", JSON.stringify(customkickitem));
  553. f("#icebot3").innerHTML += `<h2 class="customkick" id="customkick.` + value + `">` + value + `</h2>
  554. <input type="submit" class="customkickremove" id="customkickuser.` + value + `" onclick="window.postMessage('customkickremove.` + value + `','*')" value="remove">`
  555. }
  556. }
  557. }
  558. if(msg.data.indexOf("customkickremove.")!=-1){
  559. let usernick = event.data.split("customkickremove.")[1];
  560. let storage = JSON.parse(localStorage.getItem("customkick"));
  561.  
  562. if (storage && Array.isArray(storage)) {
  563. for (let i = 0; i < storage.length; i++) {
  564. if (storage[i].user === usernick) {
  565. storage.splice(i, 1);
  566. break;
  567. }
  568. }
  569.  
  570. localStorage.setItem("customkick", JSON.stringify(storage));
  571. var value = usernick;
  572. var index = customkickitems.indexOf(value);
  573. if (index > -1) {
  574. customkickitems.splice(index, 1);
  575. }
  576. }
  577. let kickusertext= document.getElementById("customkick."+usernick)
  578. let kickuserremovebtn= document.getElementById("customkickuser."+usernick)
  579. kickusertext.remove()
  580. kickuserremovebtn.remove()
  581.  
  582. }
  583. if(msg.data=="customkickremoveall"){
  584. var elementsCustomKick = document.querySelectorAll('[id*="customkick."]');
  585. var elementsCustomKickUser = document.querySelectorAll('[id*="customkickuser."]');
  586. function deleteElement(element) {
  587. element.parentNode.removeChild(element);
  588. }
  589. elementsCustomKick.forEach(function(element) {
  590. deleteElement(element);
  591. });
  592. elementsCustomKickUser.forEach(function(element) {
  593. deleteElement(element);
  594.  
  595. })
  596. localStorage.setItem("customkick","[]")
  597. customkickitems=[]
  598. }
  599. })
  600. let readyc=0,botc=0,otoeven=0,roomusers=[]
  601.  
  602. let WebSocket=window.WebSocket
  603. window.ginterval=0
  604. window.selectlevel=-1
  605. let originalSend = WebSocket.prototype.send,setTrue=false;
  606. window.wsObj={}
  607. console.log("running")
  608. WebSocket.prototype.send=function(data){
  609. originalSend.apply(this, arguments)
  610. if(Object.keys(window.wsObj).length==0){window.wsObj=this;window.eventAdd()}
  611. };
  612.  
  613. function updatespeckicks(){
  614. f(".userkickmenu").innerHTML=""
  615. roomusers.forEach(user=>{
  616. user.nick.split("‏").join("")!="ICEbot"?f(".userkickmenu").innerHTML+=`<input type="submit" class="kickmenubtn" value="`+user.nick+`" onclick="window.postMessage('kickuser.`+user.id+`','*')">`:0
  617. })
  618. }
  619.  
  620. window.eventAdd=()=>{
  621. if(!setTrue){
  622. setTrue=1
  623. window.wsObj.addEventListener("message",(msg)=>{
  624.  
  625. if(msg.data.indexOf('42["5"')!=-1){
  626. let objlist=JSON.parse('["5"'+msg.data.split('42["5"')[1])
  627. objlist[5].forEach(item=>{roomusers.push(item)})
  628. updatespeckicks()
  629. }
  630. if(msg.data.indexOf('42["23"')!=-1){
  631. let user=JSON.parse("{"+msg.data.split("{")[1].split("}")[0]+"}")
  632. roomusers.push(user)
  633. updatespeckicks()
  634. }
  635. if(msg.data.indexOf('42["24"')!=-1){
  636. let user=msg.data.split(",")[1].split('"')[1]
  637. for(let i=0;i<roomusers.length;i++){
  638. typeof(roomusers[i].id)==='undefined'?0:roomusers[i].id==user?roomusers.splice(i,1):0
  639. }
  640. updatespeckicks()
  641. }
  642. })
  643. }
  644. }
  645.  
  646. let html=`
  647. <div class="userlist">
  648. <div class="userkickmenu"></div>
  649. <input type="submit" style="width:90px; background:red" onclick="window.postMessage('kickall','*')" value="KICK ALL">
  650. <input type="checkbox" class="kickonjoin">&nbsp;Kick on join<br>
  651. <input type="checkbox" class="kickallwhenjoin">&nbsp;Kick when join<hr>
  652. </div>
  653. <div class="option">
  654. <input type="submit" class="hidemenu" onclick="window.postMessage('hidemenu','*')" value="🟥">
  655. <input type="submit" class="menu1" onclick="window.postMessage('menu1','*')" value="◼">
  656. <input type="submit" class="menu2" onclick="window.postMessage('menu2','*')" value="◻">
  657. <input type="submit" class="menu3" onclick="window.postMessage('menu3','*')" value="◻">
  658. <input type="submit" class="menu4" onclick="window.postMessage('menu4','*')" value="◻">
  659. </div>
  660.  
  661. <div id="avatarlist" class="icebot">
  662. <input type="submit" class="hideavatarlist" onclick="window.postMessage('hideavatarlist','*')" value="CLOSE">
  663. <div class="avatarbtn"><button>
  664. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/0.svg" class="selectedavatar" onclick="window.postMessage('avatar0','*')"></button>
  665. <button>
  666. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/1.svg" class="selectedavatar" onclick="window.postMessage('avatar1','*')"></button>
  667. <button>
  668. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/2.svg" class="selectedavatar" onclick="window.postMessage('avatar2','*')"></button>
  669. <button>
  670. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/3.svg" class="selectedavatar" onclick="window.postMessage('avatar3','*')"></button></div>
  671. <div class="avatarbtn"><button>
  672. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/4.svg" class="selectedavatar" onclick="window.postMessage('avatar4','*')"></button>
  673. <button>
  674. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/5.svg" class="selectedavatar" onclick="window.postMessage('avatar5','*')"></button>
  675. <button>
  676. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/6.svg" class="selectedavatar" onclick="window.postMessage('avatar6','*')"></button>
  677. <button>
  678. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/7.svg" class="selectedavatar" onclick="window.postMessage('avatar7','*')"></button></div>
  679. <div class="avatarbtn"><button>
  680. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/8.svg" class="selectedavatar" onclick="window.postMessage('avatar8','*')"></button>
  681. <button>
  682. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/9.svg" class="selectedavatar" onclick="window.postMessage('avatar9','*')"></button>
  683. <button>
  684. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/10.svg" class="selectedavatar" onclick="window.postMessage('avatar10','*')"></button>
  685. <button>
  686. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/11.svg" class="selectedavatar" onclick="window.postMessage('avatar11','*')"></button></div>
  687. <div class="avatarbtn"><button>
  688. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/12.svg" class="selectedavatar" onclick="window.postMessage('avatar12','*')"></button>
  689. <button>
  690. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/13.svg" class="selectedavatar" onclick="window.postMessage('avatar13','*')"></button>
  691. <button>
  692. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/14.svg" class="selectedavatar" onclick="window.postMessage('avatar14','*')"></button>
  693. <button>
  694. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/15.svg" class="selectedavatar" onclick="window.postMessage('avatar15','*')"></button></div>
  695. <div class="avatarbtn"><button>
  696. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/16.svg" class="selectedavatar" onclick="window.postMessage('avatar16','*')"></button>
  697. <button>
  698. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/17.svg" class="selectedavatar" onclick="window.postMessage('avatar17','*')"></button>
  699. <button>
  700. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/18.svg" class="selectedavatar" onclick="window.postMessage('avatar18','*')"></button>
  701. <button>
  702. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/19.svg" class="selectedavatar" onclick="window.postMessage('avatar19','*')"></button></div>
  703. <div class="avatarbtn"><button>
  704. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/20.svg" class="selectedavatar" onclick="window.postMessage('avatar20','*')"></button>
  705. <button>
  706. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/21.svg" class="selectedavatar" onclick="window.postMessage('avatar21','*')"></button>
  707. <button>
  708. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/22.svg" class="selectedavatar" onclick="window.postMessage('avatar22','*')"></button>
  709. <button>
  710. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/23.svg" class="selectedavatar" onclick="window.postMessage('avatar23','*')"></button></div>
  711. <div class="avatarbtn"><button>
  712. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/24.svg" class="selectedavatar" onclick="window.postMessage('avatar24','*')"></button>
  713. <button>
  714. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/25.svg" class="selectedavatar" onclick="window.postMessage('avatar25','*')"></button>
  715. <button>
  716. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/26.svg" class="selectedavatar" onclick="window.postMessage('avatar26','*')"></button>
  717. <button>
  718. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/27.svg" class="selectedavatar" onclick="window.postMessage('avatar27','*')"></button></div>
  719. <div class="avatarbtn"><button>
  720. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/28.svg" class="selectedavatar" onclick="window.postMessage('avatar28','*')"></button>
  721. <button>
  722. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/29.svg" class="selectedavatar" onclick="window.postMessage('avatar29','*')"></button>
  723. <button>
  724. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/30.svg" class="selectedavatar" onclick="window.postMessage('avatar30','*')"></button>
  725. <button>
  726. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/31.svg" class="selectedavatar" onclick="window.postMessage('avatar31','*')"></button></div>
  727. <div class="avatarbtn"><button>
  728. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/32.svg" class="selectedavatar" onclick="window.postMessage('avatar32','*')"></button>
  729. <button>
  730. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/33.svg" class="selectedavatar" onclick="window.postMessage('avatar33','*')"></button>
  731. <button>
  732. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/34.svg" class="selectedavatar" onclick="window.postMessage('avatar34','*')"></button>
  733. </div>
  734. <div class="avatarbtn">
  735. <button>
  736. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/35.svg" class="selectedavatar" onclick="window.postMessage('avatar35','*')"></button>
  737. <button>
  738. <button>
  739. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/36.svg" class="selectedavatar" onclick="window.postMessage('avatar36','*')"></button></div>
  740. <br>
  741. </div>
  742. <div id="icebot1" class="icebot">
  743. <h2 style="color:white;">ICEbot V4</h2>
  744. <div class="roomlink"><input type="text" id="roomlink" placeholder="Room link"><input type="submit" id="join" onclick="window.postMessage('join','*')" value="JOIN"></div>
  745. <div class="botnick"><input type="text" id="botnick" oninput="window.postMessage('nick','*')" placeholder="Bot nick" value="`+localStorage.getItem("nick")+`"></div>
  746. <input type="submit" class="botnick0" onclick="window.postMessage('botnick0','*')" value="Bot nick 1">
  747. <input type="submit" class="botnick1" onclick="window.postMessage('botnick1','*')" value="Bot nick 2 (random)"><br>
  748. <img width="100" style="margin-top:-5px;" height="100" src="https://gartic.io/static/images/avatar/svg/`+localStorage.getItem("avatar")+`.svg" id="avatar" class="selectedavatar">
  749. <input type="submit" class="chooseavatar" onclick="window.postMessage('showavatarlist','*')" value="CHOOSE AVATAR">
  750. <div class="broadcastbox"><input type="text" id="broadcast" placeholder="Broadcast"><button class="broadcastbtn" onclick="window.postMessage('broadcast','*')" value="Broadcast"><svg width="16" height="16" fill="#ffffff" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
  751. <path d="m22.34 10.642-.007-.003-20.02-8.303a1.104 1.104 0 0 0-1.04.1 1.156 1.156 0 0 0-.523.966v5.31a1.125 1.125 0 0 0 .915 1.105l10.919 2.02a.187.187 0 0 1 0 .368L1.665 14.224a1.125 1.125 0 0 0-.915 1.104v5.31a1.105 1.105 0 0 0 .496.924 1.123 1.123 0 0 0 1.066.097l20.02-8.256.008-.004a1.5 1.5 0 0 0 0-2.757Z"></path>
  752. </svg></button></div>
  753. <div class="msgbox"><input type="text" id="message" placeholder="Message"><button class="msgbtn" onclick="window.postMessage('chat','*')" value="Message"><svg width="16" height="16" fill="#ffffff" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
  754. <path d="m22.34 10.642-.007-.003-20.02-8.303a1.104 1.104 0 0 0-1.04.1 1.156 1.156 0 0 0-.523.966v5.31a1.125 1.125 0 0 0 .915 1.105l10.919 2.02a.187.187 0 0 1 0 .368L1.665 14.224a1.125 1.125 0 0 0-.915 1.104v5.31a1.105 1.105 0 0 0 .496.924 1.123 1.123 0 0 0 1.066.097l20.02-8.256.008-.004a1.5 1.5 0 0 0 0-2.757Z"></path>
  755. </svg></button></div>
  756. <div class="answerbox"><input type="text" id="answer" placeholder="Answer"><button class="answerbtn" onclick="window.postMessage('answer','*')" value="Answer"><svg width="16" height="16" fill="#ffffff" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
  757. <path d="m22.34 10.642-.007-.003-20.02-8.303a1.104 1.104 0 0 0-1.04.1 1.156 1.156 0 0 0-.523.966v5.31a1.125 1.125 0 0 0 .915 1.105l10.919 2.02a.187.187 0 0 1 0 .368L1.665 14.224a1.125 1.125 0 0 0-.915 1.104v5.31a1.105 1.105 0 0 0 .496.924 1.123 1.123 0 0 0 1.066.097l20.02-8.256.008-.004a1.5 1.5 0 0 0 0-2.757Z"></path>
  758. </svg></button></div>
  759. <input type="submit" class="exit" onclick="window.postMessage('exit','*')" value="EXIT">
  760. <input type="submit" class="kickall" onclick="window.postMessage('kickall','*')" value="KICK ALL">
  761. <input type="submit" class="report" onclick="window.postMessage('report','*')" value="REPORT">
  762. <input type="submit" class="jump" onclick="window.postMessage('jump','*')" value="JUMP">
  763. <input type="submit" class="acceptdraw1" onclick="window.postMessage('acceptdraw1','*')" value="DRAW 1">
  764. <input type="submit" class="acceptdraw2" onclick="window.postMessage('acceptdraw2','*')" value="DRAW 2">
  765. <input type="submit" class="tips" onclick="window.postMessage('tips','*')" value="TIPS"><br>
  766. <input type="checkbox" id="autoreport" class="autoskip"><span> Auto report</span>
  767. <input type="checkbox" id="autoskip" class="autoskip"><span> Auto skip</span><br>
  768. <input type="checkbox" id="antikick" class="antikick"><span> Anti kick</span>
  769. <input type="checkbox" id="antiafk" class="antiafk"><span> Anti afk</span></br>
  770. <h2 class="roomconsole"></h2><span><h2 class="roomtheme"></h2></span>
  771. </div>
  772. <div id="icebot2" class="icebot">
  773. <div class="broadcastbox"><input type="text" id="broadcastspam" placeholder="Broadcast (spam)"><button class="broadcastbtn" id="broadcaststart" onclick="window.postMessage('broadcastspamtoggle','*')">
  774. <svg width="20" height="20" fill="#ffffff" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M12 21.6a9.6 9.6 0 1 0 0-19.2 9.6 9.6 0 0 0 0 19.2Zm-.534-12.998A1.2 1.2 0 0 0 9.6 9.6v4.8a1.2 1.2 0 0 0 1.866.998l3.6-2.4a1.2 1.2 0 0 0 0-1.996l-3.6-2.4Z" clip-rule="evenodd"></path></svg>
  775. </button>
  776. <button class="broadcastbtn" id="broadcaststop" onclick="window.postMessage('stopbroadcast','*')">
  777. <svg width="20" height="20" fill="#ffffff" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M21.6 12a9.6 9.6 0 1 1-19.2 0 9.6 9.6 0 0 1 19.2 0ZM8.4 9.6a1.2 1.2 0 1 1 2.4 0v4.8a1.2 1.2 0 1 1-2.4 0V9.6Zm6-1.2a1.2 1.2 0 0 0-1.2 1.2v4.8a1.2 1.2 0 1 0 2.4 0V9.6a1.2 1.2 0 0 0-1.2-1.2Z" clip-rule="evenodd"></path></svg>
  778. </button></div>
  779. <div class="msgbox"><input type="text" id="messagespam" placeholder="Message (spam)"><button class="msgbtn" id="msgstart" onclick="window.postMessage('chatspamtoggle','*')">
  780. <svg width="20" height="20" fill="#ffffff" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M12 21.6a9.6 9.6 0 1 0 0-19.2 9.6 9.6 0 0 0 0 19.2Zm-.534-12.998A1.2 1.2 0 0 0 9.6 9.6v4.8a1.2 1.2 0 0 0 1.866.998l3.6-2.4a1.2 1.2 0 0 0 0-1.996l-3.6-2.4Z" clip-rule="evenodd"></path></svg>
  781. </button>
  782. <button class="msgbtn" id="msgstop" onclick="window.postMessage('stopmsg','*')">
  783. <svg width="20" height="20" fill="#ffffff" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M21.6 12a9.6 9.6 0 1 1-19.2 0 9.6 9.6 0 0 1 19.2 0ZM8.4 9.6a1.2 1.2 0 1 1 2.4 0v4.8a1.2 1.2 0 1 1-2.4 0V9.6Zm6-1.2a1.2 1.2 0 0 0-1.2 1.2v4.8a1.2 1.2 0 1 0 2.4 0V9.6a1.2 1.2 0 0 0-1.2-1.2Z" clip-rule="evenodd"></path></svg>
  784. </button></div>
  785. <div class="answerbox"><input type="text" id="answerspam" placeholder="Answer (spam)"><button class="answerbtn" id="answerstart" onclick="window.postMessage('answerspamtoggle','*')">
  786. <svg width="20" height="20" fill="#ffffff" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M12 21.6a9.6 9.6 0 1 0 0-19.2 9.6 9.6 0 0 0 0 19.2Zm-.534-12.998A1.2 1.2 0 0 0 9.6 9.6v4.8a1.2 1.2 0 0 0 1.866.998l3.6-2.4a1.2 1.2 0 0 0 0-1.996l-3.6-2.4Z" clip-rule="evenodd"></path></svg>
  787. </button>
  788. <button class="answerbtn" id="answerstop" onclick="window.postMessage('stopanswer','*')">
  789. <svg width="20" height="20" fill="#ffffff" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M21.6 12a9.6 9.6 0 1 1-19.2 0 9.6 9.6 0 0 1 19.2 0ZM8.4 9.6a1.2 1.2 0 1 1 2.4 0v4.8a1.2 1.2 0 1 1-2.4 0V9.6Zm6-1.2a1.2 1.2 0 0 0-1.2 1.2v4.8a1.2 1.2 0 1 0 2.4 0V9.6a1.2 1.2 0 0 0-1.2-1.2Z" clip-rule="evenodd"></path></svg>
  790. </button></div>
  791. <h2 class="broadcastspamvalue" id="broadcastms"></h2>
  792. <input class="broadcastspam" type="range" oninput="postMessage('broadcastspam')" min="1000" max="32000">
  793. <h2 class="messagespamvalue" id="messagems"></h2>
  794. <input class="messagespam" type="range" oninput="postMessage('messagespam')" min="1000" max="10000">
  795. <h2 class="answerspamvalue" id="answerms"></h2>
  796. <input class="answerspam" type="range" oninput="postMessage('answerspam')" min="1000" max="10000">
  797. </div>
  798. <div id="icebot3" class="icebot">
  799. <h2 class="customkick">Custom kick</h2>
  800. <div class="kicklistbox">
  801. <input type="text" id="kicklistinput" placeholder="Player name">
  802. <input type="submit" id="kicklistaddbtn" onclick="window.postMessage('customkickadd','*')" value="add">
  803. </div>
  804. <input type="submit" id="kicklistremoveallbtn" onclick="window.postMessage('customkickremoveall','*')" value="remove all">
  805. </div>
  806. <div id="icebot4" class="icebot">
  807. <div class="autoguessstyle">
  808. <h2 id="autoguesstext">Auto guess &nbsp;</h2>
  809. <input type="submit" id="autoguessenable" class="autoguess" onclick="window.postMessage('autoguessenable','*')" value="enable">
  810. <input type="submit" id="autoguessdisable" class="autoguess" onclick="window.postMessage('autoguessdisable','*')" value="disable"></div>
  811. `
  812.  
  813. function setCSS(){
  814. var css = `
  815. @import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');
  816. .userlist *{box-sizing:border-box;}
  817.  
  818.  
  819. .userlist {
  820. display:block;text-align:center;opacity:none;font-size:10pt;color:#FFD700;font-style:italic;
  821. position:fixed;left:50%;top:3px;padding:5px 3px !important;margin:0px;background:#333333;font-family: 'Roboto', sans-serif;border:2px solid #303132;
  822. transform:translate(-50%,0);border-radius:15px;z-index:999999999;display:block !important;height:auto !important;width:200px !important;
  823. }
  824.  
  825. .userlist input[type=text]{height:20px;border-radius:3px;font-size:9pt;background:brown;color:white;padding-left:3px;}
  826. .userlist input[type=submit]{height:25px;border-radius:3px;background:#FFD700;}
  827. .userlist input[type=checkbox]{margin-top:2px;}
  828.  
  829. #background{
  830. z-index:999;width:0px;height:0px;position:fixed;left:0px;top:0px;
  831. }
  832. .option *{box-sizing:border-box;}
  833.  
  834. .option {
  835.  
  836. display:block;text-align:center;opacity:none;font-size:10pt;color:#FFD700;
  837. position:fixed;left:28%;top:3px;padding:5px 3px !important;margin:0px;background:#333333;font-family: 'Roboto', sans-serif;border:2px solid #303132;
  838. transform:translate(-50%,0);border-radius:15px;z-index:999999999;display:block !important;height:auto !important;width:200px !important;
  839. }
  840.  
  841. .option input[type=submit],.icebotbtn button{cursor:pointer;border:none;background:#FFD700;color:#000000;padding:5px 0px;border-radius:5px;font-size:11pt;margin-top:5px;}
  842. .option input[type=checkbox]{margin-top:2px;}
  843. .option input[type=submit]:hover{background:#ccad00;transition:0.2s;}
  844.  
  845. .icebot *{box-sizing:border-box;}
  846. #avatarlist {
  847.  
  848. overflow-x:hidden;width:100%;max-height:300px;overflow-y:scroll;
  849. display:none;text-align:center;opacity:none;font-size:10pt;color:#FFD700;
  850. position:fixed;left:28%;top:50px;padding:5px 3px !important;margin:0px;background:#333333;font-family: 'Roboto', sans-serif;border:2px solid #303132;
  851. transform:translate(-50%,0);border-radius:15px;z-index:999999999;display:none;height:auto !important;width:400px !important;
  852. .avatarbtn{display:flex;align-items:center;justify-content:center;}
  853. .avatarbtn button,.avatarbtn button{cursor:pointer;border:none;background:#FFD700;color:#000000;padding:5px 0px;border-radius:50px;font-size:11pt;margin-top:5px;}
  854. .avatarbtn button:hover{background:#ccad00;transition:0.2s;}
  855.  
  856. }
  857. #icebot1 {
  858.  
  859. overflow-x:hidden;width:100%;max-height:300px;overflow-y:scroll;
  860. display:block;text-align:center;opacity:none;font-size:10pt;color:#FFD700;
  861. position:fixed;left:28%;top:50px;padding:5px 3px !important;margin:0px;background:#333333;font-family: 'Roboto', sans-serif;border:2px solid #303132;
  862. transform:translate(-50%,0);border-radius:15px;z-index:999999999;display:block;height:auto !important;width:200px !important;
  863. }
  864. #icebot2 {
  865.  
  866. display:none;text-align:center;opacity:none;font-size:10pt;color:#FFD700;
  867. position:fixed;left:28%;top:50px;padding:5px 3px !important;margin:0px;background:#333333;font-family: 'Roboto', sans-serif;border:2px solid #303132;
  868. transform:translate(-50%,0);border-radius:15px;z-index:999999999;display:none;height:auto !important;width:200px !important;
  869. .broadcastspamvalue{margin-top:3px; text-align:left; color:#FFD700; font-size:16px;}
  870. .messagespamvalue{margin-top:3px; text-align:left; color:#FFD700; font-size:16px;}
  871. .answerspamvalue{margin-top:3px; text-align:left; color:#FFD700; font-size:16px;}
  872. .broadcastspam{margin-top:3px; text-align:left; color:#FFD700; font-size:16px;}
  873. .messagespam{margin-top:3px; text-align:left; color:#FFD700; font-size:16px;}
  874. .answerspam{margin-top:3px; text-align:left; color:#FFD700; font-size:16px;}
  875. #broadcaststop{display:none;}
  876. #msgstop{display:none;}
  877. #answerstop{display:none;}
  878. }
  879. #icebot3 {
  880.  
  881. overflow-x:hidden;width:100%;max-height:300px;overflow-y:scroll;
  882. display:none;text-align:center;opacity:none;font-size:10pt;color:#FFD700;
  883. position:fixed;left:28%;top:50px;padding:5px 3px !important;margin:0px;background:#333333;font-family: 'Roboto', sans-serif;border:2px solid #303132;
  884. transform:translate(-50%,0);border-radius:15px;z-index:999999999;display:none;height:auto !important;width:200px !important;
  885.  
  886.  
  887. .kicklistbox{display:flex;align-items:center;justify-content:center;}
  888. .kicklistbox input[type=text]{margin-top:4px !important;width:75% !important;height:23px !important;}
  889. .kicklistbox input[type=submit],.kicklistbox button{cursor:pointer;border:none;background:#FFD700;color:#000000;padding:5px 0px;border-radius:5px;font-size:11pt;margin-top:5px;}
  890. .kicklistbox input[type=submit]:hover{background:#ccad00;transition:0.2s;}
  891. #kicklistaddbtn{width:40%;}
  892. #kicklistremoveallbtn{width:40%;}
  893. .customkickremove{width:30%;}
  894. .customkick{margin-top:3px; text-align:center; color:#FFD700; font-size:17px;}
  895. }
  896. #icebot4 {
  897.  
  898. display:none;text-align:center;opacity:none;font-size:10pt;color:#FFD700;
  899. position:fixed;left:28%;top:50px;padding:5px 3px !important;margin:0px;background:#333333;font-family: 'Roboto', sans-serif;border:2px solid #303132;
  900. transform:translate(-50%,0);border-radius:15px;z-index:999999999;display:none;height:auto !important;width:200px !important;
  901. .autoguess{width:40%;}
  902. #autoguessenable{align-items:center;justify-content:center;}
  903. #autoguessdisable{display:none;align-items:center;justify-content:center;}
  904.  
  905. .autoguessstyle{display:flex;align-items:center;justify-content:center;}
  906. }
  907.  
  908. .icebot input[type=submit],.icebotbtn button{cursor:pointer;border:none;background:#FFD700;color:#000000;padding:5px 0px;border-radius:5px;font-size:11pt;margin-top:5px;}
  909. .icebot input[type=checkbox]{margin-top:2px;}
  910. .icebot input[type=submit]:hover{background:#ccad00;transition:0.2s;}
  911. .icebot input[type=range]{accent-color:#FFD700;}
  912. .icebot input[type=range]:focus::-webkit-slider-runnable-track { background: #3071A9; }
  913.  
  914.  
  915. #join{width:20%;}
  916. .roomlink{display:flex;align-items:center;justify-content:center;}
  917. .roomlink input[type=text]{margin-top:4px !important;width:75% !important;height:23px !important;}
  918. .roomlink input[type=submit],.broadcastbox button{cursor:pointer;border:none;background:#FFD700;color:#000000;padding:5px 0px;border-radius:5px;font-size:11pt;margin-top:5px;}
  919. .roomlink button:hover{background:#ccad00;transition:0.2s;}
  920. .botnick input[type=text]{margin-top:4px !important;width:75% !important;height:23px !important;}
  921. .broadcastbox{display:flex;align-items:center;justify-content:center;}
  922. .broadcastbox input[type=text]{margin-top:4px !important;width:75% !important;height:23px !important;}
  923. .broadcastbox input[type=submit],.broadcastbox button{cursor:pointer;border:none;background:#FFD700;color:#000000;padding:5px 0px;border-radius:5px;font-size:11pt;margin-top:5px;}
  924. .broadcastbox button:hover{background:#ccad00;transition:0.2s;}
  925. .msgbox{display:flex;align-items:center;justify-content:center;}
  926. .msgbox input[type=text]{margin-top:4px !important;width:75% !important;height:23px !important;}
  927. .msgbox input[type=submit],.msgbox button{cursor:pointer;border:none;background:#FFD700;color:#000000;padding:5px 0px;border-radius:5px;font-size:11pt;margin-top:5px;}
  928. .msgbox button:hover{background:#ccad00;transition:0.2s;}
  929. .answerbox{display:flex;align-items:center;justify-content:center;}
  930. .answerbox input[type=text]{margin-top:4px !important;width:75% !important;height:23px !important;}
  931. .answerbox input[type=submit],.answerbox button{cursor:pointer;border:none;background:#FFD700;color:#000000;padding:5px 0px;border-radius:5px;font-size:11pt;margin-top:5px;}
  932. .answerbox button:hover{background:#ccad00;transition:0.2s;}
  933.  
  934.  
  935. .botnick0{width:80%;}
  936. .botnick1{width:80%;}
  937. .chooseavatar{width:80%;}
  938. .broadcastbtn{width:20%;},.broadcastbtn input[type=submit]:hover{background:#ccad00;transition:0.2s;}
  939. .msgbtn{width:20%;}
  940. .answerbtn{width:20%;}
  941. .report{width:40%;}
  942. .kickall{width:40%;}
  943. .jump{width:40%;}
  944. .exit{width:40%;}
  945. .acceptdraw1{width:40%;}
  946. .acceptdraw2{width:40%;}
  947. .tips{width:40%;}
  948. .autoreport input[type=checkbox]{margin-top:32px}
  949. .autoskip{margin-top:32px;}
  950. .antikick{margin-top:32px;}
  951. .antiafk{margin-top:32px;}
  952.  
  953. .roomconsole{margin-top:3px; text-align:left; color:#FFD700; font-size:17px;}
  954. .roomtheme{margin-top:3px; text-align:left; color:#FFD700; font-size:17px;}
  955.  
  956.  
  957. `;
  958. GM_addStyle(css);
  959. f(".kickallwhenjoin").addEventListener("change",()=>{
  960. GM_setValue("kicknewset",f(".kickallwhenjoin").checked)
  961. })
  962. f(".kickonjoin").addEventListener("change",()=>{
  963. GM_setValue("kickjoinset",f(".kickonjoin").checked)
  964. })
  965. }
  966.  
  967. window.addEventListener("message",function(event){
  968. if(typeof(event.data)==="string"){
  969. if(event.data=="join"){
  970. f("#roomlink").value==""?f("#roomlink").value=window.location.href:0
  971. botc=0;GM_setValue("resetcount",rand())
  972. readyc=0
  973. GM_sendMessage("join",f("#roomlink").value.split("/")[3],f("#botnick").value,avatar,localStorage.getItem("botnick"),f(".kickonjoin").checked,rand())
  974. }
  975. if(event.data.indexOf("kickuser.")!=-1){
  976. let userid=event.data.split("kickuser.")[1]
  977. GM_setValue("kick",userid+".."+num(10000))
  978. }
  979.  
  980. if(event.data=="broadcast"){
  981. GM_setValue("broadcast",f("#broadcast").value+"►"+num(5000))
  982. }
  983. if(event.data=="chat"){
  984. GM_setValue("msg",f("#message").value+"►"+num(5000))
  985. }
  986. if(event.data=="answer"){
  987. GM_setValue("answer",f("#answer").value+"►"+num(5000))
  988. }
  989. if(event.data=="report"){
  990. GM_setValue('report', num(5000));
  991. }
  992. if(event.data=="jump"){
  993. GM_setValue('jump', num(5000));
  994. }
  995. if(event.data=="acceptdraw1"){
  996. GM_setValue('acceptdraw1', num(5000));
  997. }
  998. if(event.data=="acceptdraw2"){
  999. GM_setValue('acceptdraw2', num(5000));
  1000. }
  1001. if(event.data=="tips"){
  1002. GM_setValue('tips', num(5000));
  1003. }
  1004. if(event.data=="exit"){
  1005. GM_setValue('exit', num(5000));
  1006. }
  1007.  
  1008.  
  1009. if(event.data=="kickall"){
  1010. var elements = document.getElementsByClassName("kickmenubtn");
  1011. var elementsvalue = [];
  1012.  
  1013. for (var i = 0; i < elements.length; i++) {
  1014. elementsvalue.push(elements[i].getAttribute("onclick"));
  1015. }
  1016.  
  1017. elementsvalue.forEach(function(value, index) {
  1018. setTimeout(function() {
  1019. let userid = value.split("kickuser.")[1].split("','*")[0];
  1020.  
  1021. GM_setValue("kick",userid+".."+num(10000))
  1022. }, 550 * index);
  1023. })}
  1024. if(event.data=="broadcastspamtoggle"){
  1025. let broadcastspamMS=parseInt(localStorage.getItem("broadcastspam"))
  1026. var broadcastspam = f("#broadcastspam").value
  1027. intervalbroadcast=setInterval(()=>{
  1028. GM_setValue("broadcast",broadcastspam+"►"+num(5000))
  1029. },broadcastspamMS)
  1030. f("#broadcaststart").style.display="none"
  1031. f("#broadcaststop").style.display="block"
  1032. }
  1033. if(event.data=="chatspamtoggle"){
  1034. let messagespamMS=parseInt(localStorage.getItem("messagespam"))
  1035. var messagespam = f("#messagespam").value
  1036. intervalmsg=setInterval(()=>{
  1037. var chatspam = f("#messagespam").value
  1038. GM_setValue("msg",chatspam+"►"+num(5000))
  1039. },messagespamMS)
  1040. f("#msgstart").style.display="none"
  1041. f("#msgstop").style.display="block"
  1042. }
  1043. if(event.data=="answerspamtoggle"){
  1044. let answerspamMS=parseInt(localStorage.getItem("answerspam"))
  1045. var answerspam = f("#answerspam").value
  1046. intervalanswer=setInterval(()=>{
  1047. var answerspam = f("#answerspam").value
  1048. GM_setValue("answer",answerspam+"►"+num(5000))
  1049. },answerspamMS)
  1050. f("#answerstart").style.display="none"
  1051. f("#answerstop").style.display="block"
  1052. }
  1053. if(event.data=="stopbroadcast"){
  1054. clearInterval(intervalbroadcast)
  1055. f("#broadcaststart").style.display="block"
  1056. f("#broadcaststop").style.display="none"
  1057. }
  1058. if(event.data=="stopmsg"){
  1059. clearInterval(intervalmsg)
  1060. f("#msgstart").style.display="block"
  1061. f("#msgstop").style.display="none"
  1062. }
  1063. if(event.data=="stopanswer"){
  1064. clearInterval(intervalanswer)
  1065. f("#answerstart").style.display="block"
  1066. f("#answerstop").style.display="none"
  1067. }
  1068.  
  1069. }
  1070. })
  1071.  
  1072. localStorage.getItem("botc")?0:window.localStorage.setItem("botc",0)
  1073. GM_setValue("resetcount",rand())
  1074. //
  1075. setInterval(()=>{
  1076. if(f("#users")){
  1077. fa(".kickmenubtn").forEach(ele=>{
  1078. f(".scrollElements").innerText.indexOf(ele.value)==-1?ele.remove():0
  1079. })
  1080. f("g")?f("g").remove():0;
  1081. }
  1082. if(f("input[name=chat]")){
  1083. f(".contentPopup")&&f(".btYellowBig.ic-yes")?f(".btYellowBig.ic-yes").click():0;
  1084.  
  1085. if(f(".contentPopup .nick")&&f(".ic-votekick")&&otoeven==0){
  1086. otoeven=1//
  1087. f(".close").addEventListener("click",()=>{otoeven=0})
  1088. f(".ic-ignore").addEventListener("click",()=>{otoeven=0})
  1089. f(".ic-votekick").addEventListener("click",()=>{
  1090. otoeven=0
  1091. GM_setValue("kick",f(".contentPopup .nick").innerText+".."+num(10000))
  1092. })
  1093. }
  1094. }
  1095. f("input[name=chat]")?f("input[name=chat]").setAttribute("placeholder",+botc+" bot aktif"):0
  1096. f(".taktifbot")?f(".taktifbot").innerText=botc:0
  1097.  
  1098. if(f("#background")&&!f(".userlist")&&!f(".option")&&!f(".icebot")){
  1099. f("#background").innerHTML+=html
  1100. setCSS()
  1101. }
  1102. },100)
  1103. GM_addValueChangeListener("botekle", function(I,C,E,b) {
  1104. botc++
  1105. f(".taktifbot")?f(".taktifbot").innerText=botc:0
  1106. })
  1107.  
  1108. GM_addValueChangeListener("ready", function(I,C,E,b) {
  1109. readyc++
  1110. readyc>=botc&&botc!=0?GM_setValue("join",rand()):0
  1111. })
  1112.  
  1113. GM_addValueChangeListener("botexit", function(I,C,E,b) {
  1114. //botc--
  1115. })
  1116. }