124 lines
No EOL
5.9 KiB
TypeScript
124 lines
No EOL
5.9 KiB
TypeScript
import Hero from "@ulixee/hero";
|
|
import * as telegram from 'telegram';
|
|
import { sleep } from "telegram/Helpers";
|
|
import { AccountInterface } from "./interfaces/databaseInterface";
|
|
import { prevTaskInterface } from "./interfaces/otherInterfaces";
|
|
import logger from "./logger";
|
|
import { waitNewMessages } from "./utils";
|
|
import {database as db,settings} from './database'
|
|
|
|
|
|
export const vertification=async function (client: telegram.TelegramClient,worker: AccountInterface,hero: Hero,url: string,botEntity: telegram.Api.Chat | telegram.Api.User,idOfLastMessage: number) {
|
|
await hero.goto(url,{timeoutMs:180_000});
|
|
await hero.waitForLoad('AllContentLoaded');
|
|
const captchaButton=hero.document.querySelector('button.g-recaptcha.btn.btn-primary');
|
|
if (captchaButton!=null){
|
|
let verify=hero.document.querySelector('body > section > h2');
|
|
while (verify!=null && (await verify.textContent)!.includes('All right!')==false){
|
|
const isCaptchaPassed=hero.document.querySelector("input[id='recaptcha-token']");
|
|
if (isCaptchaPassed==null || await isCaptchaPassed.$isVisible==false){
|
|
await hero.interact({click:{element: captchaButton, verification: 'exactElement'}});
|
|
await sleep(5000);
|
|
verify=hero.document.querySelector('body > section > h2');
|
|
} else {
|
|
logger.error("catpcha detected");
|
|
throw new Error("Auhtung captcha detected");
|
|
}
|
|
}
|
|
|
|
} else {
|
|
throw new Error('Cant find captcha button');
|
|
}
|
|
}
|
|
|
|
export const do_sites_task=async function (client: telegram.TelegramClient,worker: AccountInterface,hero: Hero,botEntity: telegram.Api.Chat | telegram.Api.User,tasksSelector: telegram.Api.Message) {
|
|
const taskSitesButton=tasksSelector.buttons![1][0];
|
|
let prevTask: prevTaskInterface={
|
|
task:tasksSelector,
|
|
lastMessage:tasksSelector
|
|
};
|
|
mainLoop:
|
|
while (true){
|
|
await taskSitesButton.click({sharePhone: false});
|
|
await waitNewMessages(client,worker,botEntity,prevTask.lastMessage.id);
|
|
const task=(await client.getMessages(botEntity,{
|
|
minId:prevTask.lastMessage.id,
|
|
// search: (await settings.botMessages()).tasksSelector,
|
|
}))[0];
|
|
|
|
if (task.buttonCount==2){
|
|
if (prevTask.task.message==task.message){
|
|
logger.warn(`Same tasks detected on ${worker.phoneNumber}...`);
|
|
}
|
|
logger.debug(`New ad task | ${worker.phoneNumber}`);
|
|
prevTask.task=task;
|
|
const urlButton=task.buttons![0][0];
|
|
const skipButton=task.buttons![0][1];
|
|
await hero.goto(urlButton.url!.replace("https","http"),{timeoutMs:180_000});
|
|
await hero.waitForLoad('AllContentLoaded');
|
|
|
|
let captchaButton=hero.document.querySelector('button.g-recaptcha.btn.btn-primary');
|
|
if (captchaButton!=null && urlButton.url!.includes('hkbots')==true){
|
|
if (await captchaButton.$isClickable!=true){
|
|
// timer page
|
|
logger.warn(`Found timer... | ${worker.phoneNumber}`)
|
|
if (settings.bypassMode==true){
|
|
logger.warn(`Bypassing timer... | ${worker.phoneNumber}`)
|
|
try {
|
|
await hero.executeJs("document.getElementById('form').setAttribute('style', '')");
|
|
} catch (err){
|
|
logger.error(`Something went wrong due bypass`);
|
|
}
|
|
} else {
|
|
while (hero.document.querySelector("i[id='timer']")!=null && await captchaButton.$isClickable!=true){
|
|
await sleep(1000);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
while (captchaButton!=null && await hero.activeTab.url==urlButton.url!){
|
|
const isCaptchaPassed=hero.document.querySelector("input[id='recaptcha-token']");
|
|
if ((isCaptchaPassed==null || await isCaptchaPassed.$isVisible==false) ){
|
|
try {
|
|
await hero.interact({click:{element: captchaButton, verification: 'exactElement'}});
|
|
} catch( err){
|
|
|
|
logger.warn(`Some error due clicking | ${worker.phoneNumber}`);
|
|
continue mainLoop;
|
|
}
|
|
await sleep(5000);
|
|
captchaButton=hero.document.querySelector('button.g-recaptcha.btn.btn-primary');
|
|
} else {
|
|
logger.error("catpcha detected");
|
|
throw new Error("Auhtung captcha detected");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
await waitNewMessages(client,worker,botEntity,prevTask.task.id);
|
|
let afterTask:telegram.Api.Message=(await client.getMessages(botEntity,{
|
|
minId:prevTask.task.id,
|
|
// search: settings.botMessages.tasksSelector,
|
|
}))[0];
|
|
if (afterTask!=null){
|
|
prevTask.lastMessage=afterTask;
|
|
if (afterTask.message.includes(settings.botMessages.taskComplete)==true){
|
|
logger.debug(`Site task complete | ${worker.phoneNumber}`);
|
|
continue
|
|
}
|
|
}
|
|
console.log(afterTask,afterTask.message)
|
|
}
|
|
|
|
} else if (task.message.includes(settings.botMessages.taskOver)==true){
|
|
logger.info(`Ad tasks complete | ${worker.phoneNumber}`)
|
|
break
|
|
} else {
|
|
logger.error(`Check out last message of ${worker.phoneNumber}`);
|
|
throw new Error(`Check out last message of ${worker.phoneNumber}`)
|
|
}
|
|
|
|
}
|
|
} |