# RU

## ⚙️ Установка

**Требования:**

* Python версии 3.11.6

**Скачивание:**

1 | Клонировать репозиторий

```
git clone https://github.com/0xStarLabs/StarLabs-MegaETH.git
```

```
cd StarLabs-MegaETH
```

2 | Создать виртуальное окружение

```
python -m venv venv
```

```
venv\Scripts\activate
```

3 | Установить зависимости

```
pip install -r requirements.txt
```

4 | Запуск (после настройки)

```
python main.py
```

## 📁 Подготовка (папка data) <a href="#podgotovka-papka-data" id="podgotovka-papka-data"></a>

Здесь находятся все данные юзера необходимые для работы.

`private_keys.txt` - приватные ключи от кошельков. 1 строка = 1 ключ.

`proxies.txt` - прокси. 1 строка = 1 прокси, либо если прокси меньше чем аккаунтов, тогда они будут повторяться пока друг за другом чтобы хватило на все аккаунты. Формат прокси <mark style="color:yellow;">user:pass\@ip:port</mark>. <mark style="color:yellow;">Поддерживаются ТОЛЬКО HTTP прокси.</mark>

## 📝 Config.yaml <a href="#config.yaml" id="config.yaml"></a>

В этой секции будет написано детально про каждую функцию в файле `config.yaml`.

{% code overflow="wrap" %}

```javascript
SETTINGS

THREADS: 1 - количество потоков/одновременных аккаунтов которые будет делать бот.

ATTEMPTS: 5 - при ошибках, сколько раз бот будет пытаться выполнить действие.

ACCOUNTS_RANGE: [0, 0] - диапазон аккаунтов для работы. 
Пример: [3, 6] значит бот выполнит аккаунты начиная с третьего до шестого.

EXACT_ACCOUNTS_TO_USE: [] - !Работает только если ACCOUNTS_RANGE: [0, 0].
Пример: [1, 3, 7] что значит бот выполнит только аккаунты 1 3 и 7.

SHUFFLE_WALLETS: false - перемешивать аккаунты перед каждым запуском или нет.
Если true, то бот каждый раз будет выполнять аккаунты в случайном порядке.

PAUSE_BETWEEN_ATTEMPTS: [0, 0] - пауза в секундах между попытками выполнить одно действия.
Пример: [3, 10] - пауза будет от 3 до 10 секунд случайная.

PAUSE_BETWEEN_SWAPS: [0, 0] - пауза в секундах между отправкой транзакций.
Пример: [3, 10] - пауза будет от 3 до 10 секунд случайная.

RANDOM_PAUSE_BETWEEN_ACCOUNTS: [0, 0] - пауза в секундах между аккаунтами.
Пример: [3, 10] - пауза будет от 3 до 10 секунд случайная.

RANDOM_PAUSE_BETWEEN_ACTIONS: [0, 0] - пауза в секундах между заданиями/tasks.
Пример: [3, 10] - пауза будет от 3 до 10 секунд случайная.

RANDOM_INITIALIZATION_PAUSE: [0, 0] - пауза в секундах перед стартом каждого аккаунта.
К примеру у вас 10 потоков, и пауза стоит [5, 60]
Значит каждый аккаунт отсчитает от 5 секунд до минуты перед началом работы.
Используется чтобы все аккаунты не стартовали в одно время.

SEND_TELEGRAM_LOGS: false - отравлять в телеграм логи о функциях или нет. true/false.

TELEGRAM_BOT_TOKEN: "12317283:lskjalsdfasdfasd-sdfadfasd" - токен телеграм бота созданного в @BotFather

TELEGRAM_USERS_IDS: [235123432] - айди телеграм юзеров, кому отправлять логи.
ВНИМАНИЕ! Бот отправляет только в лс юзерам, не в чаты.
Свой айди аккаунта можно получить в тг боте @GetChatID_IL_BOT.

WAIT_FOR_TRANSACTION_CONFIRMATION_IN_SECONDS: 120 - сколько секунд ждать выполнение транзакции.
```

{% endcode %}

{% code overflow="wrap" %}

```javascript
FLOW

SKIP_FAILED_TASKS: false - пропускать невыполненные задания или нет.
Если стоит false, то бот закончит работу если у него не получилось выполнить какое-то задание.
Если стоит true, тогда бот пропустит задание и начнет делать следующее.
```

{% endcode %}

{% code overflow="wrap" %}

```javascript
FAUCET

SOLVIUM_API_KEY: xxxxxxxxxxxxxxx - ключ от капча солвера Solvium.

ССЫЛКА: https://t.me/solvium_crypto_bot. 
```

{% endcode %}

{% code overflow="wrap" fullWidth="false" %}

```javascript
RPCS

MEGAETH: ["https://carrot.megaeth.com/rpc"] - RPC для сети.
Можно указать несколько, бот будет использовать ту, которая работает.

```

{% endcode %}

{% code overflow="wrap" %}

```javascript
OTHERS

SKIP_SSL_VERIFICATION: true - пропускать ssl верификацию.
Если видите ошибки связанные с SSL в консоли, попробуй поставить false.

USE_PROXY_FOR_RPC: true - использовать ли прокси для RPC.
```

{% endcode %}

{% code overflow="wrap" %}

```javascript
SWAPS

>>> BEBOP
BALANCE_PERCENTAGE_TO_SWAP: [5, 10] - сколько процентов от баланса обменивать.
SWAP_ALL_TO_ETH: false - если стоит true, тогда бот будет обменивать все токены в ETH.

>>> GTE
BALANCE_PERCENTAGE_TO_SWAP: [5, 10] - сколько процентов от баланса обменивать.
SWAP_ALL_TO_ETH: true - если стоит true, тогда бот будет обменивать все токены в ETH.
SWAPS_AMOUNT: [3, 5] - количество свапов на каждый запуск бота.
```

{% endcode %}

{% code overflow="wrap" %}

```javascript
STAKINGS

>>> EKO_FINANCE:
CHANCE_FOR_MINT_TOKENS: 0 - с каким шансом минтить тестовые токены.
Если стоит 100, то каждый запуск бот будет минтить 4 токена.
Если стоит 0, бот не будет минтить токены вообще.
Оптимально выставить 50 для рандомного шанса.

BALANCE_PERCENTAGE_TO_STAKE: [5, 10] - какой баланс токенов депозитить в стейкинг.
Для стейкинга используются тестовые токены, не ETH.

UNSTAKE: true - делать ли вывод из стейкинга. 
Если стоит true, то бот выведет все деньги из стейкинга. 
```

{% endcode %}

{% code overflow="wrap" %}

```javascript
MINTS

>>> XL_MEME:

Бот умеет только покупать токены, продавать нет.

BALANCE_PERCENTAGE_TO_BUY: [10, 20] - процент баланса ETH на который покупать токены.

CONTRACTS_TO_BUY: [] - список контрактов токенов для покупки.
Если список пустой, бот сам получит рандом контракты и купит токен.

>>> OMNIHUB:
MAX_PRICE_TO_MINT: 0.00011 - бот не будет покупать НФТ которые дороже этого числа.
```

{% endcode %}

Конфиг можно настраивать как через текстовый документ в файле <mark style="color:yellow;">config.yaml</mark>, так и через веб интерфейс (пример на скриншоте внизу). \
\
В случае, если веб конфиг из меню не работает по каким-то причинам, вы всегда можете редактировать его вручную в файле <mark style="color:yellow;">config.yaml.</mark> Так же вы можете обратится к нам в чат <https://t.me/StarLabsChat> за помощью.\
\
Для запуска веб интерфейса необходимо запустить бота командой <mark style="color:yellow;">python main.py</mark> и выбрать пункт меню <mark style="color:yellow;">\[2] Edit config.</mark>\
**После этого бот запустит конфиг по URL адресу** [**http://127.0.0.1:3456**](http://127.0.0.1:3456) **который вы можете открыть в любом браузере у себя на ПК и настраивать конфиг оттуда.** По умолчанию бот сам открывает веб браузер с нужным URL. \
\&#xNAN;*<mark style="background-color:yellow;">Данный конфиг и вебсайт запускается и работает локально у вас на ПК.</mark>*\
\
**После настройки функций в конфиге нажми кнопку Save Configuration в верхнем правом углу страницы.**\
\
**Для выхода из конфига вернитесь в консоль и несколько раз нажмите&#x20;**<mark style="color:yellow;">**CTRL + C**</mark>**, либо же просто закройте консоль.**

<figure><img src="https://1229326975-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJi1Dnz98r18DXDpXAYS4%2Fuploads%2FQ2hXQElgEY15bSOlu7O2%2F%7B05D2B16E-A3FF-44F4-813A-9E894E94A87E%7D.png?alt=media&#x26;token=455bb266-6054-44f3-bc56-051ddae166ee" alt=""><figcaption><p>Пример конфига</p></figcaption></figure>

## 💾 База данных <a href="#usage" id="usage"></a>

Вся работа в боте управляется непосредственно через базу данных. База данных создается и хранится в папке /data под именем accounts.db. Открыть её вручную вы можете через специальные программы для SQL по типу `DB Browser for SQLite`.

Чтобы начать работу и создать базу данных необходимо запустить бота командой python main.py и выбрать пункт меню \[3] 💾 Database actions. Дальше опишу каждую из функций.&#x20;

\[1] 🗑 Create/Reset Database. Самая основная функция, которая создает новую базу данных либо перезаписывает уже существующую. Необходимо использовать при первом запуске бота, либо когда хотите перезаписать кошельки, прокси, либо задачи для кошельков.&#x20;

\[2] ➕ Generate New Tasks for Completed Wallets. Используется для генерации новых заданий для кошельков, которые выполнили свои предыдущие задания. Пример: может быть такое, что часть ваших кошельков выполнила все действия, часть еще имеет незаконченные задания. Чтобы не перезаписывать ВСЕ задания и дать части кошельков возможность закончить их цепочку, вы можете выбрать эту функцию и она обновит задания только для кошельков, которые уже не имеют задач.

\[3] 📊 Show Database Contents. Выводит на экран содержимое базы данных. Кошельки, прокси, задачи и тд.

\[4] 🔄 Regenerate Tasks for All Wallets. Пересоздает задания для ВСЕХ кошельков в базе.

\[5] 📝 Add Wallets to Database. Добавляет новые кошельки в базу данных. К примеру у вас в базе есть 10 кошельков, вы в data/private\_keys.txt вставляете новые кошельки и хотите добавить их в базу данных. Чтобы не перезаписывать всю базу, можете воспользоваться этой функцией и она просто добавит новые кошельки в базу.

## ▶️ Использование  <a href="#usage" id="usage"></a>

Перед запуском бота необходимо открыть файл `tasks.py` в главной папке проекта и там настроить порядок выполнение действий как указано в примере.&#x20;

\
После этого можно запускать бота командой `python main.py`\
В меню необходимо выбрать 3 после чего откроются настройки базы данных. Для первого запуска нажмите <mark style="color:yellow;">1 (Create/Reset Database)</mark> и бот создает базу данных в папке data. Для каждого ключа будут сгенерированы маршруты действий. \
Так же в этом меню вы сможете смотреть посмотреть оставшиеся задания, пересоздать базу и тд.\
\
Теперь можно выходить в меню кнопкой 6 и запускать бота - 1.&#x20;

## ✅ Tasks

#### Инструкция по тому как переключать модули в боте

Для того чтобы переключить модуль, вам нужно в папке с ботом найти файл под названием tasks.py, открыть его при помощи редактора кода либо обычного блокнота, в файле вы увидите переменную TASKS которая выглядит так:

<figure><img src="https://1229326975-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJi1Dnz98r18DXDpXAYS4%2Fuploads%2FVcpsOmqDPH085xxOPdY8%2Fimage.png?alt=media&#x26;token=36fc3b12-7ea1-4cc3-bcba-5fa1b2d59820" alt=""><figcaption></figcaption></figure>

TASKS Это список пресетов, пресет это список из модулей, которые будет запускать бот.

Пример пресета внутри которого есть модуль:

<figure><img src="https://1229326975-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJi1Dnz98r18DXDpXAYS4%2Fuploads%2FUGywaLIsc4BksECy4dYE%2Fimage.png?alt=media&#x26;token=36dc652a-52e5-460c-8ea1-1e571022aed0" alt=""><figcaption></figcaption></figure>

Как видите FAUCET это лишь название пресета, которое может быть какое угодно, а внутри него модуль "faucet", который отвечает за запуск крана.

Вы можете создать свой пресет, просто написав любое название к примеру:

<figure><img src="https://1229326975-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJi1Dnz98r18DXDpXAYS4%2Fuploads%2FSy1i8w9yb92UI4PyFJuW%2Fimage.png?alt=media&#x26;token=c5cc92ed-71a4-4a3e-bc1d-e326cc4ed4a4" alt=""><figcaption></figcaption></figure>

Внутри него вы можете добавить какие модули вы хотите использовать пример dusted, итого:

<figure><img src="https://1229326975-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJi1Dnz98r18DXDpXAYS4%2Fuploads%2Fk38ep4GESuSvfC2ySOka%2Fimage.png?alt=media&#x26;token=1076451a-84ac-459f-8198-c9ff7507a5a7" alt=""><figcaption></figcaption></figure>

Затем чтобы запустить данный пресет, вы копируете его название и вставляете в TASKS, итого:

<figure><img src="https://1229326975-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJi1Dnz98r18DXDpXAYS4%2Fuploads%2FIG59PWmdDDNIzBhZuoce%2Fimage.png?alt=media&#x26;token=1bddab8e-1c24-4cc5-aab2-744e8c14dfe1" alt=""><figcaption></figcaption></figure>

В пресете вы можете использовать разные типы рандомизации. К примеру квадратные скобки будут означать, что бот выберет один модуль из всех что внутри них, в нашем случае либо dusted, либо ambient

<figure><img src="https://1229326975-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJi1Dnz98r18DXDpXAYS4%2Fuploads%2FfQITKjfom00BgidQHG4V%2Fimage.png?alt=media&#x26;token=5dd5e079-5e33-4b6a-a468-3e5cfdd4e8ff" alt=""><figcaption></figcaption></figure>

Круглые скобки означает, что бот выполнит все модули, что внутри них, но в случайном порядке

<figure><img src="https://1229326975-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJi1Dnz98r18DXDpXAYS4%2Fuploads%2Fe5EjG4SZm0W1DoRG4cKj%2Fimage.png?alt=media&#x26;token=f7071a97-a805-4b39-9eb0-2788a9f25059" alt=""><figcaption></figcaption></figure>

Можно создавать сколько угодно строчек, только не забывайте ставить запятую

<figure><img src="https://1229326975-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJi1Dnz98r18DXDpXAYS4%2Fuploads%2FUrdg8dGwaH99Bbl6mjWO%2Fimage.png?alt=media&#x26;token=f80a9605-f010-429b-9ad4-c180903f0dd9" alt=""><figcaption></figcaption></figure>
