SCBot | Doperte

SudamericaCrypto BOT

// ==UserScript==
// @name         SCBot | Doperte
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  SudamericaCrypto BOT
// @author       EduarSC
// @match        https://doperte.com/h5/index.html
// @require      http://code.jquery.com/jquery-3.4.1.min.js
// @icon         https://www.google.com/s2/favicons?sz=64&domain=doperte.com
// @license      MIT
// @grant        none
// ==/UserScript==

//  Try force window focused ---------------
document.hasFocus = function () {return true;};
// ---------------------------------------

/*--- waitForKeyElements():  A utility function, for Greasemonkey scripts,
    that detects and handles AJAXed content.

    Usage example:

        waitForKeyElements (
            "div.comments"
            , commentCallbackFunction
        );

        //--- Page-specific function to do what we want when the node is found.
        function commentCallbackFunction (jNode) {
            jNode.text ("This comment changed by waitForKeyElements().");
        }

    IMPORTANT: This function requires your script to have loaded jQuery.
*/
function waitForKeyElements (
    selectorTxt,    /* Required: The jQuery selector string that
                        specifies the desired element(s).
                    */
    actionFunction, /* Required: The code to run when elements are
                        found. It is passed a jNode to the matched
                        element.
                    */
    bWaitOnce,      /* Optional: If false, will continue to scan for
                        new elements even after the first match is
                        found.
                    */
    iframeSelector  /* Optional: If set, identifies the iframe to
                        search.
                    */
) {
    var targetNodes, btargetsFound;

    if (typeof iframeSelector == "undefined")
        targetNodes     = $(selectorTxt);
    else
        targetNodes     = $(iframeSelector).contents ()
                                           .find (selectorTxt);

    if (targetNodes  &&  targetNodes.length > 0) {
        btargetsFound   = true;
        /*--- Found target node(s).  Go through each and act if they
            are new.
        */
        targetNodes.each ( function () {
            var jThis        = $(this);
            var alreadyFound = jThis.data ('alreadyFound')  ||  false;

            if (!alreadyFound) {
                //--- Call the payload function.
                var cancelFound     = actionFunction (jThis);
                if (cancelFound)
                    btargetsFound   = false;
                else
                    jThis.data ('alreadyFound', true);
            }
        } );
    }
    else {
        btargetsFound   = false;
    }

    //--- Get the timer-control variable for this selector.
    var controlObj      = waitForKeyElements.controlObj  ||  {};
    var controlKey      = selectorTxt.replace (/[^\w]/g, "_");
    var timeControl     = controlObj [controlKey];

    //--- Now set or clear the timer as appropriate.
    if (btargetsFound  &&  bWaitOnce  &&  timeControl) {
        //--- The only condition where we need to clear the timer.
        clearInterval (timeControl);
        delete controlObj [controlKey]
    }
    else {
        //--- Set a timer, if needed.
        if ( ! timeControl) {
            timeControl = setInterval ( function () {
                    waitForKeyElements (    selectorTxt,
                                            actionFunction,
                                            bWaitOnce,
                                            iframeSelector
                                        );
                },
                300
            );
            controlObj [controlKey] = timeControl;
        }
    }
    waitForKeyElements.controlObj   = controlObj;
}


 			function comenzarContadorConsola(tiempo, addtext = '', seconds = true) {

				var factor = !seconds ? 60 : 1;

				var contadorInterval = setInterval(function() {

					if ((tiempo -= 1) == 0) {
						// Actualizar el Wallet mediante la recarga de la página.
						window.location.reload();
					}
					//console.log(addtext + ' ' + (tiempo));


				}, factor * 1000); // cada 1seg o cada 60seg si seconds es false.

			}

			var elementosACargar = ['uni-app', 'uni-page', 'uni-tabbar', 'uni-modal', 'uni-page-wrapper', 'uni-page-body', 'uni-view'],
				elementosCargados = false, // [divs, spans, buttons],
				vecesRevisados = 0,
				maxVeces = 20;

			var revisarElementosCargados = setInterval(function() {
				if (elementosCargados) {
					// Dejamos de revisar que los elementos hayan cargado.
					clearInterval(revisarElementosCargados);
					core();
				} else {
					if (vecesRevisados > maxVeces) {
						// Probablemente web lanzó 500 asi que comenzamos el contador, pero un contador de consola, que reinicia la pag en 5 min.
						comenzarContadorConsola(5, '', false);
					}
					vecesRevisados++;
					console.log('Revisando elementos...');
				}
			}, 1000);

			waitForKeyElements(elementosACargar[0], function() {
				waitForKeyElements(elementosACargar[1], function() {
					waitForKeyElements(elementosACargar[2], function() {
						waitForKeyElements(elementosACargar[3], function() {
							waitForKeyElements(elementosACargar[4], function() {
								waitForKeyElements(elementosACargar[5], function() {
									waitForKeyElements(elementosACargar[6], function() {
										elementosCargados = true;
									}, true);
								}, true);
							}, true);
						}, true);
					}, true);
				}, true);
			}, true);

function tryMoreOrder() {
 var waitingForEndCurrentOrder = setInterval(function(){
  console.log('trying more order');
  if(canMoreOrder()) {
    console.log('more order!');
    clearInterval(waitingForEndCurrentOrder);
    window.location.href = 'https://doperte.com/h5/index.html#/pages/go/index';
  }
 }, 1000);
}

function canMoreOrder() {
 var possibleTexts = ['Pedid', 'Pedid ', 'Order', 'Order '];
 if(document.getElementsByClassName('cu-bar fixed')[0] != undefined) {
  if(possibleTexts.indexOf(document.getElementsByClassName('cu-bar fixed')[0].textContent.substring(0, 5)) != -1) {
   return true;
  }
 }
    return false;
}

function canGetOrder() {

 var possibleTexts = ['Get the order ', 'Get the order', 'Obtener un pedido ', 'Obtener un pedido'];

 if(document.getElementsByClassName('pro-btn pro-btn-black')[0] != undefined) {
  if(possibleTexts.indexOf(document.getElementsByClassName('pro-btn pro-btn-black')[0].textContent) != -1) {
   return true;
  }
 }
    return false;
}

function getOrder() {
 var getOrderBtn = document.getElementsByClassName('pro-btn pro-btn-black')[0];

     setTimeout(ev => {
      getOrderBtn.click();
      trySubmitOrder();
     }, 5000);

}

function submitOrder() {
 var submitOrderBtn = document.getElementsByClassName('pro-btn pro-btn-black margin-top')[0];

     setTimeout(ev => {
      submitOrderBtn.click();
      tryMoreOrder();
     }, 5000);

}

function trySubmitOrder() {
 var waitingForSubmitOrder = setInterval(function() {
   console.log('trying submit order');
   if(canSubmitOrder()) {
    console.log('submit order');
    submitOrder();
    clearInterval(waitingForSubmitOrder);
   }
 }, 1000);
}

function canSubmitOrder() {
 var possibleTexts = ['Envíe un pedido ', 'Envíe un pedido', 'Submit the order', 'Submit the order '];
 if(document.getElementsByClassName('pro-btn pro-btn-black margin-top')[0] != undefined) {
  if(possibleTexts.indexOf(document.getElementsByClassName('pro-btn pro-btn-black margin-top')[0].textContent) != -1) {
   return true;
  }
 }
    return false;
}


function core() {

    var waitingForGetOrder = setInterval(function() {
     console.log('trying get order');
     if(canGetOrder()) {
      console.log('get order');
      getOrder();
      clearInterval(waitingForGetOrder);
     }
    }, 1000);

}