NOTcoin или же @notcoin_bot – это мем-коин (токены, вдохновленные мемами), который типа был создан командой Павла Дурова.
РАЗРАБОТКА ТЕЛЕГРАМ БОТОВ ЛЮБОЙ СЛОЖНОСТИ
Это новейшая мем-монета, которая успешно привлекая более 470 000 игроков с момента ее запуска менее месяца назад. Позиционируется как Telegram-бот, с помощью которого пользователи могут зарабатывать одноименные мемкоины.
Связан ли Notcoin с командой TON?
Очень вряд ли. Вот скрин из чата ton foundation.
Что на данный момент мы знаем о нем?
- Участникам проекта обещают, что в будущем они смогут обменять токены на монеты TON.
- Вы ничего не вкладываете, а просто зарабатываете монетку нахаляву. Единственное, что вы сможете потерять на этом проекте, так это свое личное время, если вдруг монета не будет торговаться на биржах ив итоге ничего не будет стоить. (как скорее всего и будет)
Как заработать эти монеты?
В игре вам нужно кликать по монете, за каждый клик вы получаете одну монету. Энергия ограничена 1000 единицами и восстанавливается со временем.
В начале восстанавливается 1 единица энергии в секунду. Позже можно увеличить количество монет за клик, скорость восстановления и максимальную энергию для более эффективной добычи монет NOTCOIN.
Как автоматизировать заработок Notcoin?
Перейдем к настройке со скриптом JavaScript. Для начала нам необходимо открыть Telegram Web с NOTCOIN (открыть миниапп).
осле того как открыли, нажимаем сочетание клавиш CTRL + SHIFT + I.
Далее жмем CTRL + O, тем самым открывая поиск файлов. Вставляем в поиск telegram-web-app.js.
Ищем строку Object.defineProperty(WebApp, 'platform',
и заменяем return
на return 'ios'.
Save for overrides. Сохраняем для переопределения содержимого. А затем ПКМ по элементу и ищем iframe с ссылкой.
Готово. Переходим по ссылке и у нас должно быть следующее окно:
Вставляем скрипт JS в консоль и скрипт будет автоматически фармить пока наш браузер открыт.
Код для вставки:
let intervalId;
let clicksCount = 0;
const delay = (time) => new Promise(r => setTimeout(r, time));
const getEvent = () => ({
touches: [{clientX: Math.random() * 250 + 52, clientY: Math.random() * 582 + 512}]
})
const getReactProps = (component) => component ? Object.entries(component).find(([key]) => key.startsWith("__reactProps$"))[1] : null;
const getIdleTime = () => Math.floor(Math.random() * 18222 + 12111);
const getRandomClickTime = () => Math.floor(Math.random() * 142 + 12);
const MIN_SCORE = 500;
const MAX_CLICKS_PER_ITERATION = 100;
const coinClick = async () => {
const coin = document.querySelector('div[class^="_notcoin"]');
const scoreElement = document.querySelector('div[class^="_scoreCurrent"]');
const score = scoreElement ? parseInt(scoreElement.textContent) : 0;
// Rocket click
const rocket = document.querySelector('img[class^="_root"]');
const rocketProps = getReactProps(rocket);
if (rocketProps) rocketProps.onClick();
if (intervalId === null) return;
// Coin click
if (score > MIN_SCORE && clicksCount < MAX_CLICKS_PER_ITERATION && coin) {
clicksCount++;
const {onTouchStart, onTouchEnd} = getReactProps(coin);
onTouchStart(getEvent());
await delay(50);
onTouchEnd();
} else {
clearInterval(intervalId)
clicksCount = 0;
console.info('%c INFO: idle time', 'color: #64b5f6');
if (score < MIN_SCORE) boostClick()
await delay(getIdleTime());
console.info('%c INFO: trying again', 'color: #64b5f6');
start();
}
}
const start = () => {
intervalId = setInterval(coinClick, getRandomClickTime());
};
const end = () => {
clearInterval(intervalId);
intervalId = null;
};
const BOOST_CLICK_TIMEOUT = 1500;
const boostClick = async () => {
console.info('%c INFO: open boosts', 'color: #64b5f6');
const buttonGroup = document.querySelector('div[class^="_buttonGroup"]');
const boostButton = buttonGroup && getReactProps(buttonGroup.lastChild);
await delay(BOOST_CLICK_TIMEOUT);
if (!boostButton) return;
boostButton.onClick();
await delay(BOOST_CLICK_TIMEOUT);
const dailyTask = document.querySelector('div[class^="_taskDailyItem"]:not([class*="_completed"])');
const dailyBoost = getReactProps(dailyTask);
const taskCarousel = document.querySelector('div[class^="_taskCarousel"][class*="_willChange"]');
const boost = getReactProps(taskCarousel && taskCarousel.querySelector('div[class*="_rippleEffect"]'));
const boosterButton = dailyBoost || boost;
if (boosterButton) {
boosterButton.onClick();
await delay(BOOST_CLICK_TIMEOUT);
const getButton = getReactProps(document.querySelector('button[class*="_typeBlue"]'));
if(getButton) getButton.onClick();
await delay(BOOST_CLICK_TIMEOUT);
console.info('%c DONE: boosted', 'color: #bada55');
}
console.info('%c INFO: close boosts', 'color: #64b5f6');
history.back();
}
start();
Автоматизация заработка Notcoin с помощью Python
Обратите внимание, что все что будет написано ниже, лучше осуществлять с фейк телеграм аккаунтом, а не рисковать своим собственным. Мы проверили, работает, но черт его знает чем оно может обернуться. И будет достаточно тупо просрать основной акк в попытках заработать монетку, которая скорее всего не будет стоить ничего.
Качаем скрипт с GitHub https://github.com/nazavod777/notcoin_bot. Перед данным прелюдием необходимо установить сам Python
и Node.JS.
- NodeJS – https://nodejs.org/en/download
- Python – https://www.python.org/downloads/release/python-3106/ (не забудьте поставить галочку на ADD TO PATH)
Распаковываем архив.
Как только архив распакован, открываем CMD и прописываем CD путь к папке.
Создаем виртуальное окружение python -m venv venv.
Устанавливаем зависимости. pip install -r requirements.txt.
Теперь самое главное. Создаем/Получаем api_hash
, api_id
и прописываем в config.py
.
Находится по следующему пути: папка с ботом/data/config.py
Прокси использовать по желанию. По умолчанию TRUE, необходимо поставился FALSE.
Запускаем бота, подключаем сессию.
Запускаем бота.