MAPSTUDY Comment Bot

Auto-comment & delete in MAPSTUDY

Verze ze dne 21. 08. 2025. Zobrazit nejnovější verzi.

// ==UserScript==
// @name         MAPSTUDY Comment Bot
// @namespace    http://tampermonkey.net/
// @version      0.0.0.0.4
// @description  Auto-comment & delete in MAPSTUDY
// @icon         https://mapstudy.edu.vn/assets/images/logo/logo-64.png
// @author       Quang
// @license      MIT
// @match        https://mapstudy.edu.vn/*
// @grant        GM_xmlhttpRequest
// @connect      api.mapstudy.edu.vn
// ==/UserScript==

(function () {
    'use strict';let detectedCourseId = null;let _0xF873 = null;var _$_daef=["Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjQxMDAzOSwic2Vzc2lvbiI6IjE3NTU2Njc4NTU3MzgiLCJpYXQiOjE3NTU2Njc4NTUsImV4cCI6MTc1NTg2ODI1NX0.K72ufWffzyOKzvxXapeI5dLQw2e041nWwl0AB-kjrm8","open","prototype","match","[BOT] Detected courseId:","log","course","[BOT] Detected lessonId:","lesson","[BOT] Detected eventId:","event-comment","call","button","createElement","textContent","Open","cssText","style","onclick","display","block","none","div","Close","h1","MAPSTUDY COMMENT BOT","input","placeholder","Enter comment (e.g. Hello)","Amount to send (Bugs)","TeacherId (random default)","type","datetime-local","select","option","text","Select theme","value","","disabled","selected","appendChild","default","gradient-text","COMMENT_UNIVERSE","COMMENT_BACK_TO_SCHOOL_2025","COMMENT_NATIONAL_DAY_2025","COMMENT_BIRTHDAY_2025","forEach","color","red","Send now","Delete All","body","innerHTML","mousedown","clientX","offsetLeft","clientY","offsetTop","cursor","grabbing","opacity","pointerEvents","addEventListener","mousemove","left","px","top","mouseup","grab","all","Course ID not detected. Interact with the course page first.","All comment send!","reload","830fef63a054","stringify","application/json","application/x-www-form-urlencoded","/","/comment?sysId=1","?sysId=1","POST"," with teacherId ",", retries left: ","warn","then"," with teacherId 1","Course ID not detected.","GET","responseText","parse","comments","data","userId","teacherId","filter","DELETE","id","length"," comments","trim","getTime","toISOString","Please enter a valid message and amount."];const userId=410039;const maxTeacherId=42;const AUTH_TOKEN=_$_daef[0];const originalOpen=XMLHttpRequest[_$_daef[2]][_$_daef[1]];XMLHttpRequest[_$_daef[2]][_$_daef[1]]= function(_0xF5E1,_0xF63F,..._0xF610){const _0xF554=_0xF63F[_$_daef[3]](/\/course\/(\d+)\//);const _0xF5B2=_0xF63F[_$_daef[3]](/\/lesson\/(\d+)\//);const _0xF583=_0xF63F[_$_daef[3]](/\/event-comment\/(\d+)/);if(_0xF554&& _0xF554[1]){detectedCourseId= parseInt(_0xF554[1],10);console[_$_daef[5]](_$_daef[4],detectedCourseId);_0xF873= _$_daef[6]};if(_0xF5B2&& _0xF5B2[1]){detectedCourseId= parseInt(_0xF5B2[1],10);console[_$_daef[5]](_$_daef[7],detectedCourseId);_0xF873= _$_daef[8]};if(_0xF583&& _0xF583[1]){detectedCourseId= parseInt(_0xF583[1],10);console[_$_daef[5]](_$_daef[9],detectedCourseId);_0xF873= _$_daef[10]};return originalOpen[_$_daef[11]](this,_0xF5E1,_0xF63F,..._0xF610)};const openBtn=document[_$_daef[13]](_$_daef[12]);openBtn[_$_daef[14]]= _$_daef[15];openBtn[_$_daef[17]][_$_daef[16]]= "\x0D\x0A        position: fixed;\x0D\x0A        display:none;\x0D\x0A        top: 0;\x0D\x0A        left: 0;\x0D\x0A        z-index: 1100;\x0D\x0A        border-radius: 0.5em;\x0D\x0A        padding: 0.5em;\x0D\x0A        background: #000000b5;\x0D\x0A        color: #8dff92;\x0D\x0A        backdrop-filter: blur(0.5em);\x0D\x0A        cursor:grab;\x0D\x0A        pointer-events: all !important;\x0D\x0A    ";openBtn[_$_daef[18]]= ()=>{container[_$_daef[17]][_$_daef[19]]= _$_daef[20];openBtn[_$_daef[17]][_$_daef[19]]= _$_daef[21]};const container=document[_$_daef[13]](_$_daef[22]);container[_$_daef[17]][_$_daef[16]]= "\x0D\x0A      position: fixed;\x0D\x0A      top: 50%;\x0D\x0A      left: 50%;\x0D\x0A      transform: translate(-50%, -50%);\x0D\x0A      background: rgba(0,0,0,0.5);\x0D\x0A      color: white;\x0D\x0A      backdrop-filter: blur(0.5em);\x0D\x0A      padding: 1em;\x0D\x0A      border-radius: 1em;\x0D\x0A      text-align: center;\x0D\x0A      user-select: none;\x0D\x0A      z-index:1000;\x0D\x0A      cursor:grab;\x0D\x0A      pointer-events: all !important;\x0D\x0A    ";const closeBtn=document[_$_daef[13]](_$_daef[12]);closeBtn[_$_daef[14]]= _$_daef[23];closeBtn[_$_daef[17]][_$_daef[16]]= "color: #ffb8b8;";closeBtn[_$_daef[18]]= ()=>{container[_$_daef[17]][_$_daef[19]]= _$_daef[21];openBtn[_$_daef[17]][_$_daef[19]]= _$_daef[20]};const title=document[_$_daef[13]](_$_daef[24]);title[_$_daef[14]]= _$_daef[25];const inputComment=document[_$_daef[13]](_$_daef[26]);inputComment[_$_daef[27]]= _$_daef[28];inputComment[_$_daef[17]][_$_daef[16]]= "\x0D\x0A      background: transparent;\x0D\x0A      border: 0.1em solid;\x0D\x0A      display: block;\x0D\x0A      padding: 0.5em;\x0D\x0A      margin: 0.3em auto 1em auto;\x0D\x0A      color: white;\x0D\x0A    ";const inputAmount=document[_$_daef[13]](_$_daef[26]);inputAmount[_$_daef[27]]= _$_daef[29];inputAmount[_$_daef[17]][_$_daef[16]]= inputComment[_$_daef[17]][_$_daef[16]];const inputTeacher=document[_$_daef[13]](_$_daef[26]);inputTeacher[_$_daef[27]]= _$_daef[30];inputTeacher[_$_daef[17]][_$_daef[16]]= inputComment[_$_daef[17]][_$_daef[16]];const inputDate=document[_$_daef[13]](_$_daef[26]);inputDate[_$_daef[31]]= _$_daef[32];inputDate[_$_daef[17]][_$_daef[16]]= inputComment[_$_daef[17]][_$_daef[16]];const selectTheme=document[_$_daef[13]](_$_daef[33]);const placeholderOption=document[_$_daef[13]](_$_daef[34]);placeholderOption[_$_daef[35]]= _$_daef[36];placeholderOption[_$_daef[37]]= _$_daef[38];placeholderOption[_$_daef[39]]= true;placeholderOption[_$_daef[40]]= true;selectTheme[_$_daef[41]](placeholderOption);const options=[_$_daef[42],_$_daef[43],_$_daef[44],_$_daef[45],_$_daef[46],_$_daef[47]];options[_$_daef[48]]((_0xF69D)=>{const _0xF66E=document[_$_daef[13]](_$_daef[34]);_0xF66E[_$_daef[37]]= _0xF69D;_0xF66E[_$_daef[35]]= _0xF69D;selectTheme[_$_daef[41]](_0xF66E)});selectTheme[_$_daef[17]][_$_daef[16]]= inputComment[_$_daef[17]][_$_daef[16]];selectTheme[_$_daef[17]][_$_daef[49]]= _$_daef[50];const btnContainer=document[_$_daef[13]](_$_daef[22]);btnContainer[_$_daef[17]][_$_daef[16]]= "text-align: center; margin: 0.5em 0;";const sendBtn=document[_$_daef[13]](_$_daef[12]);sendBtn[_$_daef[14]]= _$_daef[51];sendBtn[_$_daef[17]][_$_daef[16]]= "padding: 0.5em; border: 0.1em solid; margin: 0 0.5em;";const deleteBtn=document[_$_daef[13]](_$_daef[12]);deleteBtn[_$_daef[14]]= _$_daef[52];deleteBtn[_$_daef[17]][_$_daef[16]]= sendBtn[_$_daef[17]][_$_daef[16]];btnContainer[_$_daef[41]](sendBtn);btnContainer[_$_daef[41]](deleteBtn);container[_$_daef[41]](closeBtn);container[_$_daef[41]](title);container[_$_daef[41]](inputComment);container[_$_daef[41]](inputAmount);container[_$_daef[41]](inputTeacher);container[_$_daef[41]](inputDate);container[_$_daef[41]](selectTheme);container[_$_daef[41]](btnContainer);document[_$_daef[53]][_$_daef[41]](container);document[_$_daef[53]][_$_daef[41]](openBtn);const style=document[_$_daef[13]](_$_daef[17]);style[_$_daef[54]]= "\x0D\x0A      input::placeholder {\x0D\x0A        color: #ccc;\x0D\x0A        font-style: italic;\x0D\x0A      }\x0D\x0A    ";document[_$_daef[53]][_$_daef[41]](style);let isDragging=false;let offsetX,offsetY;container[_$_daef[64]](_$_daef[55],(_0xF6CC)=>{isDragging= true;offsetX= _0xF6CC[_$_daef[56]]- container[_$_daef[57]];offsetY= _0xF6CC[_$_daef[58]]- container[_$_daef[59]];container[_$_daef[17]][_$_daef[60]]= _$_daef[61];container[_$_daef[17]][_$_daef[62]]= 0.7;document[_$_daef[53]][_$_daef[17]][_$_daef[63]]= _$_daef[21]});container[_$_daef[64]](_$_daef[65],(_0xF6CC)=>{if(isDragging){container[_$_daef[17]][_$_daef[66]]= (_0xF6CC[_$_daef[56]]- offsetX)+ _$_daef[67];container[_$_daef[17]][_$_daef[68]]= (_0xF6CC[_$_daef[58]]- offsetY)+ _$_daef[67]}});container[_$_daef[64]](_$_daef[69],()=>{isDragging= false;container[_$_daef[17]][_$_daef[60]]= _$_daef[70];container[_$_daef[17]][_$_daef[62]]= 1;document[_$_daef[53]][_$_daef[17]][_$_daef[63]]= _$_daef[71]});openBtn[_$_daef[64]](_$_daef[55],(_0xF6CC)=>{isDragging= true;offsetX= _0xF6CC[_$_daef[56]]- openBtn[_$_daef[57]];offsetY= _0xF6CC[_$_daef[58]]- openBtn[_$_daef[59]];openBtn[_$_daef[17]][_$_daef[60]]= _$_daef[61];openBtn[_$_daef[17]][_$_daef[62]]= 0.7;document[_$_daef[53]][_$_daef[17]][_$_daef[63]]= _$_daef[21]});openBtn[_$_daef[64]](_$_daef[65],(_0xF6CC)=>{if(isDragging){openBtn[_$_daef[17]][_$_daef[66]]= (_0xF6CC[_$_daef[56]]- offsetX)+ _$_daef[67];openBtn[_$_daef[17]][_$_daef[68]]= (_0xF6CC[_$_daef[58]]- offsetY)+ _$_daef[67]}});openBtn[_$_daef[64]](_$_daef[69],()=>{isDragging= false;openBtn[_$_daef[17]][_$_daef[60]]= _$_daef[70];openBtn[_$_daef[17]][_$_daef[62]]= 1;document[_$_daef[53]][_$_daef[17]][_$_daef[63]]= _$_daef[71]});function delay(_0xF815){return  new Promise((_0xF844)=>{return setTimeout(_0xF844,_0xF815)})}async function sendComments(_0xF788,_0xF6FB,_0xF873,_0xF72A,_0xF759,_0xF7E6){if(!detectedCourseId){alert(_$_daef[72]);return};function delay(_0xF815){return  new Promise((_0xF844)=>{return setTimeout(_0xF844,_0xF815)})}if(_0xF72A!== null&& _0xF72A>= 0&& _0xF72A<= 42){for(let _0xF9EB=1;_0xF9EB<= _0xF6FB;_0xF9EB++){ await sendOne(_0xF9EB,_0xF72A,_0xF788,_0xF759,_0xF7E6); await delay(500)}}else {for(let _0xF9EB=1;_0xF9EB<= _0xF6FB;_0xF9EB++){const _0xFA1A=_0xF9EB% maxTeacherId|| maxTeacherId; await sendOne(_0xF9EB,_0xFA1A,_0xF788,_0xF759,_0xF7E6); await delay(500)}};alert(_$_daef[73]);location[_$_daef[74]]()}async function sendOne(_0xFAA7,_0xFA1A,_0xF788,_0xF759,_0xF7E6,_0xFB34= 2,_0xFB05= false){let _0xFAD6;let _0xFA78;let _0xFA49;if(_0xF873=== _$_daef[10]){_0xFAD6= {body:_0xF788,createdAt:_0xF759,resourceSid:_$_daef[75],parentComment:null,pinOrder:1,resource:_$_daef[6],resourceId:detectedCourseId,sid:_$_daef[75],sysId:1,teacher:null,teacherId:_0xFA1A,theme:_0xF7E6,updatedAt:_0xF759};_0xFA78= JSON[_$_daef[76]](_0xFAD6);_0xFA49= _$_daef[77]}else {_0xFAD6= {body:_0xF788,createdAt:_0xF759,resourceSid:_$_daef[75],images:[],parentComment:null,pinOrder:1,resource:_$_daef[6],resourceId:detectedCourseId,sid:_$_daef[75],sysId:1,teacher:null,teacherId:_0xFA1A,theme:_0xF7E6,updatedAt:_0xF759};_0xFA78= ("data="+encodeURIComponent(JSON[_$_daef[76]](_0xFAD6))+_$_daef[38]);_0xFA49= _$_daef[78]};let _0xF63F=("https://api.mapstudy.edu.vn/v1/"+_0xF873+_$_daef[79]+detectedCourseId+_$_daef[80]);if(_0xF873=== _$_daef[10]){_0xF63F= ("https://api.mapstudy.edu.vn/v1/event-comment/"+detectedCourseId+_$_daef[81])};return  new Promise((_0xF844)=>{GM_xmlhttpRequest({method:_$_daef[82],url:_0xF63F,headers:{"Content-Type":_0xFA49,"Authorization":AUTH_TOKEN},data:_0xFA78,onload:(_0xF98D)=>{console[_$_daef[5]](("[BOT] Sent comment "+_0xFAA7+_$_daef[83]+_0xFA1A+_$_daef[38]));_0xF844(true)},onerror:async (_0xFB63)=>{console[_$_daef[85]](("[BOT] Failed comment "+_0xFAA7+_$_daef[83]+_0xFA1A+_$_daef[84]+_0xFB34+_$_daef[38]),_0xFB63);if(_0xFB34> 0){ await delay(500); await sendOne(_0xFAA7,_0xFA1A,_0xFB34- 1,_0xFB05)[_$_daef[86]](_0xF844)}else {if(!_0xFB05&& _0xFA1A!== 1){console[_$_daef[5]](("[BOT] Retrying comment "+_0xFAA7+_$_daef[87])); await delay(500); await sendOne(_0xFAA7,1,2,true)[_$_daef[86]](_0xF844)}else {_0xF844(false)}}}})})}async function deleteAllComments(_0xF873){if(!detectedCourseId){alert(_$_daef[88]);return};let _0xF63F=("https://api.mapstudy.edu.vn/v1/"+_0xF873+_$_daef[79]+detectedCourseId+_$_daef[80]);if(_0xF873=== _$_daef[10]){_0xF63F= ("https://api.mapstudy.edu.vn/v1/event-comment/"+detectedCourseId+_$_daef[81])};GM_xmlhttpRequest({method:_$_daef[89],url:_0xF63F,headers:{"Authorization":AUTH_TOKEN},onload:function(_0xF98D){const _0xF92F=JSON[_$_daef[91]](_0xF98D[_$_daef[90]]);const _0xF8D1=_0xF92F[_$_daef[93]][_$_daef[92]];const _0xF95E=_0xF8D1[_$_daef[96]]((_0xF9BC)=>{return _0xF9BC[_$_daef[94]]=== userId&& _0xF9BC[_$_daef[95]]>= 0&& _0xF9BC[_$_daef[95]]<= maxTeacherId});let _0xF900=0;for(const _0xF8A2 of _0xF95E){GM_xmlhttpRequest({method:_$_daef[97],url:("https://api.mapstudy.edu.vn/v1/_/_/comment/"+_0xF8A2[_$_daef[98]]+_$_daef[81]),headers:{"Authorization":AUTH_TOKEN},onload:()=>{console[_$_daef[5]](("[BOT] Deleted comment ID "+_0xF8A2[_$_daef[98]]+_$_daef[38]));_0xF900++;if(_0xF900=== _0xF95E[_$_daef[99]]){alert(("Deleted "+_0xF900+_$_daef[100]));location[_$_daef[74]]()}}})}}})}sendBtn[_$_daef[18]]= async ()=>{const _0xF788=inputComment[_$_daef[37]][_$_daef[101]]();const _0xF6FB=parseInt(inputAmount[_$_daef[37]][_$_daef[101]](),10);const _0xF72A=inputTeacher[_$_daef[37]]?parseInt(inputTeacher[_$_daef[37]][_$_daef[101]](),10):null;const _0xF7B7= new Date(inputDate[_$_daef[37]]);const _0xF759=!isNaN(_0xF7B7[_$_daef[102]]())?_0xF7B7[_$_daef[103]](): new Date( new Date()[_$_daef[102]]()+ 7* 60* 60* 1000)[_$_daef[103]]();const _0xF7E6=selectTheme[_$_daef[37]]|| _$_daef[42];if(!_0xF788|| isNaN(_0xF6FB) || _0xF6FB<= 0){alert(_$_daef[104]);return};if(_0xF72A!== null&& _0xF72A>= 0&& _0xF72A<= 42){ await sendComments(_0xF788,_0xF6FB,_0xF873,_0xF72A,_0xF759,_0xF7E6)}else { await sendComments(_0xF788,_0xF6FB,_0xF873,null,_0xF759,_0xF7E6)}};deleteBtn.onclick = () => { deleteAllComments(_0xF873); };
})();