Получаем токен
Для начала выполним небольшую подготовку. Нам необходимо получить специальный токен для автоматизированного тапанья и фарма в Hamster Kombat.- Выполняем вход в WEB версию телеграм: web.telegram.org
- Открываем страницу с Hamster Kombat.
- Кликаем на Play.
- Открываем панель разработчика (обычно это делает клавиша F12 в подавляющем большинстве браузеров).
- Переходим в приложение и копируем значение ключа tgWebAppData (скриншот со стрелами ниже).
- Сохраните данные в надежном месте и не передавайте их третьим лицам!
Устанавливаем скрипт
1. Открываем терминал.2. Вводим команду (клонируем репозиторий проекта):
git clone GitHub - jawikas/hamsterkombat: This is a bot that can help you to run hamsterkombat telegram bot which has quite complete features with auto upgrade (3 methods), auto complete combo & auto complete daily cipher/morse.
3. Открываем созданную директорию в IDE, с которой вы работаете. В моем случае это будет PyCharm.
4. Устанавливаем зависимости:
pip install -r requirements.txt
5. Открываем файл tokens.txt и добавляем в него скопированные данные с панели разработчика. Обратите внимание, добавлять нужно без кавычек в начале и в конце скопированной строки. Пример:
query_id=xxxxxxxxx-Rxxxxuj&user=%7B%22id%22%3A1323733375%2C%22first_name%22%3A%22xxxx%22%2C%22last_name%22%3A%22%E7%9A%BF%20xxxxxx%22%2C%22username%22%3A%22xxxxx%22%2C%22language_code%22%3A%22id%22%2C%22allows_write_to_pm%22%3Atrue%7D&auth_date=xxxxx&hash=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
6. Выполняем запуск:
python main.py
Объяснение опций, которые нас встретят
После запуска скрипта у вас будут следующие опции:
- Auto Buy Upgrade (Автоматическое обновление покупки с 3 вариантами метода) - ВКЛ/ВЫКЛ:
- Upgrade items with the highest profit: Улучшение предметов с наибольшей прибылью.
- Upgrade items at the lowest price (low price with high profit): Улучшение предметов по самой низкой цене (низкая цена с высокой прибылью).
- Upgrade items with a price less than balance: Улучшение предметов по цене меньше баланса.
- Auto Complete Combo (Автовыполнение ежедневного комбо) - ВКЛ/ВЫКЛ:
- Auto Complete Cipher (Автоматическое решение ежедневных шифров морзе) - ВКЛ/ВЫКЛ:
- Auto Complete Tasks (Автоматическое решение заданий) - ВКЛ/ВЫКЛ:
- По умолчанию, скрипт выполняет следующие действия без необходимости настройки (команда 5):
- Taps (нажатия)
- Boost (буст)
- Daily Streak (ежедневные серии)
Настройки и запуск
Активирую все опции. Для запуска отправляем 5 и жмем на ENTER:Далее выполнится много действий и на выходе мы доберемся до паузы в 30 минут:
Через 30 минут действия повторяются. Для остановки бота выполняем комбинацию клавиш CTRL + C.
Для того чтоб убедиться, что автофарм выполняется, можно открыть Hamster Combat с мобильного устройства.
У вас после первого запуска картинка будет приятнее, так как автоматически выполнятся несколько заданий и на ваш баланс упадет несколько миллионов монет.
Автофарм и автотапы в нескольких аккаунтах
Для запуска нескольких аккаунтов, передайте в файл tokens.txt несколько токенов токенов. Каждый новый токен необходимо передавать с новой строки:query_id=xxxxxxxxx-Rxxxxuj&user=...
query_id=xxxxxxxxx-Rxxxxuj&user=...
В таком случае будет происходить запуск всех аккаунтов, а после будет идти одна общая пауза в 30 минут.
Если вы просто хотели ознакомиться с проектом и производить его запуск со своей локальной машины, то у меня для вас все. Просто разбирайтесь с настройками и тестируйте их разные комбинации.
Для тех же, кто хочет действительно использовать его 24/7 – читайте далее. Там я расскажу о двух способах удаленного запуска данного проекта.
Подготовка к удаленному запуску
Прежде чем выполнять запуск бота удаленно, внесем некоторые изменения в код. Удобнее задавать опции на старте, тем самым создав условие, при котором бот будет запускаться после ввода команды python main.py.Изменения в config.json
Код:
{
"min_tap": 138,
"max_tap": 738,
"delayUpgrade": 1,
"DelayPerAccount": 5,
"tapDelay": true,
"max_price": 5000000,
"loop": 1600,
"auto_upgrade": true,
"combo_upgrade": true,
"daily_cipher_on": true,
"tasks_on": true,
"upgrade_method": 1
}
Тут, как вы видите, мы добавили следующие параметры: auto_upgrade, combo_upgrade, daily_ciper_on, task_on и upgrade_method. В старой реализации данные параметры мы указывали через терминал (1, 2 и так далее).
Вот описание для каждой настройки и их значений в файле конфигурации:
- min_tap: Минимальное количество нажатий. Используется для задания нижнего предела количества нажатий на хомяка.
- Пример: 138
- max_tap: Максимальное количество нажатий. Используется для задания верхнего предела количества нажатий.
- Пример: 738
- delayUpgrade: Задержка перед обновлением (в секундах). Указывает задержку между проверками возможности обновления.
- Пример: 1
- DelayPerAccount: Задержка для каждой учетной записи (в секундах). Указывает задержку между действиями для каждой учетной записи.
- Пример: 5
- tapDelay: Включение/выключение задержки для нажатий. Логическое значение, указывающее, следует ли использовать задержку для нажатий.
- Пример: true
- max_price: Максимальная цена, которая будет использована при покупке обновления.
- Пример: 5000000
- loop: Время цикла (в секундах). Указывает длительность одного цикла работы бота.
- Пример: 1600
- auto_upgrade: Автоматическое обновление. Логическое значение, указывающее, следует ли автоматически покупать обновления.
- Пример: false
- combo_upgrade: Автоматическое выполнение комбо. Логическое значение, указывающее, следует ли автоматически выполнять комбо-действия.
- Пример: false
- daily_cipher_on: Автоматическое выполнение ежедневных шифров.
- Пример: false
- tasks_on: Автоматическое выполнение задач. Логическое значение, указывающее, следует ли автоматически выполнять задачи.
- Пример: false
- upgrade_method: Метод обновления. Указывает метод, который будет использоваться для обновлений. Возможные значения:
- 1: Обновление по самому высокому профиту.
- 2: Обновление по самой низкой цене.
- 3: Обновление по цене, меньше текущего баланса.
- Пример: 1
Изменения в core.py
Код:
import locale
import requests
from colorama import *
from src.utils import load_tokens
from src.auth import get_token, authenticate
from src.exceptions import upgrade_passive, claim_daily, execute, boost, clicker_config
from src.exceptions import _sync, exhausted, execute_combo, claim_cipher
from src.__init__ import (
mrh, pth, hju, kng,
read_config, _number, countdown_timer, log,
log_line,
)
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
init(autoreset=True)
config = read_config()
def main():
auto_upgrade = config.get('auto_upgrade', False)
combo_upgrade = config.get('combo_upgrade', False)
daily_cipher_on = config.get('daily_cipher_on', False)
tasks_on = config.get('tasks_on', False)
_method = str(config.get('upgrade_method', '1'))
cek_task_dict = {}
countPerAccount = config.get('DelayPerAccount', 3)
loop = config.get('loop', 3600)
while True:
try:
while True:
init_data_list = load_tokens('tokens.txt')
for init_data in init_data_list:
token = get_token(init_data)
if token:
try:
res = authenticate(token)
if res.status_code == 200:
user_data = res.json()
username = user_data.get('telegramUser', {}).get('username',
'Please set username first')
log(kng + f"Login as {pth}{username}")
clicker_config(token)
clicker_data = _sync(token)
if 'clickerUser' in clicker_data:
user_info = clicker_data['clickerUser']
balance_coins = user_info['balanceCoins']
earn_passive_per_hour = user_info['earnPassivePerHour']
exchange_name = user_info['exchangeId']
log(hju + f"Balance: {pth}{_number(balance_coins)}")
log(hju + f"Income: {pth}{_number(earn_passive_per_hour)}/h")
log(hju + f"CEO of {pth}{exchange_name} {hju}exchange")
claim_daily(token)
while True:
exhausted(token)
if not boost(token):
break
if tasks_on:
execute(token, cek_task_dict)
if daily_cipher_on:
claim_cipher(token)
if combo_upgrade:
execute_combo(token)
if auto_upgrade:
upgrade_passive(token, _method)
log_line()
countdown_timer(countPerAccount)
except requests.RequestException as e:
log(mrh + f"Request exception for token {pth}{token[:4]}****: {str(e)}")
else:
log(mrh + f"Failed to login token {pth}{token[:4]}*********\n", flush=True)
countdown_timer(loop)
except Exception as e:
log(mrh + f"An error occurred in the main loop: {kng}{str(e)}")
countdown_timer(10)
if __name__ == '__main__':
main()
Создание Docker контейнера
Для удобства создадим Dockerfile в корне проекта:# Используем новый облегченный образ Python
FROM python:3.12-alpine
# Устанавливаем рабочую директорию в контейнере
WORKDIR /app
# Копируем файл requirements.txt в рабочую директорию
COPY requirements.txt .
# Устанавливаем зависимости из requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Копируем остальные файлы приложения в рабочую директорию
COPY . .
# Указываем команду для запуска приложения
CMD ["python", "main.py"]
Создание образа
docker build -t my-hamster-app .
Запуск контейнера
docker run -it -d --name hamster-container my-hamster-appДля входа в терминал контейнера:
docker attach hamster-container
Команда docker attach hamster-container подключает текущую консоль к уже запущенному контейнеру hamster-container. Это позволяет вам взаимодействовать с контейнером так, как если бы вы работали напрямую в его терминале.
для выхода CTRL + P, CTRL + Q
Деплой на VPS сервере
Теперь вы можете воспользоваться DockerHub: загрузить туда созданный образ и потом скачать его с DockerHub на сервер, либо поступить следующим образом:
- Останавливаем контейнер:
- Удаляем контейнер:
- Удаляем образ:
- Подключаемся к серверу по FTP (например, с помощью FileZilla).
- Загружаем файлы на сервер.
- Создаем образ и запускаем контейнер (как в примере выше).
В рабочих проектах я обычно так не поступаю, прошу не кидать в меня тапки. Просто в данном случае не вижу смысла заморачиваться с приватным репозиторием на GitHub или с репозиторием на DockerHub.
Теперь на сервере повторим те же команды. Подключаться я буду через SSH с логином и паролем:
ssh root@111.111.111.111
my_pass
Переходим в созданную директорию:
cd ../home/hamster_bot
Убедимся, что все файлы на месте. Теперь создаем образ:
Файлы на месте!docker build -t my-hamster-app .
Если на вашем сервере не установлен Docker, установите его (в интернете много информации на этот счет).
Теперь запустим контейнер:
docker run -it -d --name hamster-container my-hamster-app
Проверим, все ли работает:
docker attach hamster-container
76 - это первые 2 символа ID контейнера. Можно было вместо 76 ввести hamster-container
Деплой на Amvera Cloud
Amvera Cloud — это отечественный аналог Heroku, который предоставляет платформу как услугу (PaaS). Это означает, что Amvera Cloud предлагает разработчикам полностью управляемую среду для развертывания, управления и масштабирования приложений без необходимости самостоятельного администрирования серверов, как это требуется при использовании VPS (виртуального частного сервера).Почему именно этот сервис?
Amvera Cloud берет на себя все хлопоты по разворачиванию проекта. Вам достаточно просто передать файлы бота с написанным Dockerfile и после отправки файлов в сервис произойдет автоматическое разворачивание контейнера.
Другими словами: подготовили файлы бота, подготовили Dockerfile, несколькими командами отправили файлы в Amvera и проект запущен!
К тому же, для тестирования сервиса вам предоставят подарочный баланс в размере 111. Этого хватит на пару недель активного фарма и тапанья вашего хомяка.
1. Регистрируемся на сайте Amvera Cloud.
2. Переходим в раздел проектов.
3. Создаем первый проект. На этом этаме вам необходимо дать название проекту и выбрать тарифный план. Для текущего бота достаточно будет пробного.
4. Копируем ссылку, указанную стрелкой (скрин ниже).
Данная ссылка нам пригодится чуть позже
5. На новом экране нажимаем на завершить.
То есть никакие настройки нам генерировать не нужно. Мы уже все сделали, когда создали наш Dockerfile. Теперь, нам остается доставить файлы в Amvera и данный сервис сам запустит контейнер бота.
Для доставки файлов в Amvera выполним несколько команд в своем локальном терминале.
Инициализируем пустую директорию .git:
git init
Привязываем свой проект:
git remote add amvera https://git.amvera.ru/имя_пользователя/название_проекта
В моем случае это:
git remote add amvera https://git.amvera.ru/yakvenalex/hamsterbot
При первом использовании GIT в связке с Amvera, возможно, нужно будет выполнить авторизацию. Для этого укажите в появившемся окне логин и пароль от личного кабинета Amvera
Теперь загрузим файлы нашего проекта в репозиторий Amvera:
git add .
git commit -m "Init commit"
git push amvera master
Если получите ошибку, что ветка master не существует, выполните команду:
git checkout -b master
git push amvera master
Проверим что файлы доставлены
Теперь остается подождать пару минут, и наш бот будет активным. В этом можно убедиться, посмотрев на своего хомяка или заглянув в логи приложения.
Итоги
Надеюсь, этот гайд был полезен, и теперь у вас есть понимание, как автоматизировать фарм и тапанье хомяка через Python. Удачи вам в игре и пусть ваши хомяки приносят вам много монет!Поздравляю, вы великолепны!