# RU

### ⚙️ Установка <a href="#ustanovka" id="ustanovka"></a>

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

* Python версии 3.11.6  - 3.11.11

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

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

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

```
cd StarLabs-Somnia
```

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 прокси, либо если прокси меньше чем аккаунтов, тогда они будут повторяться пока друг за другом чтобы хватило на все аккаунты. Формат прокси user:pass\@ip:port. Поддерживаются ТОЛЬКО HTTP прокси.

`discord_tokens.txt` - дискорд токены. 1 строка = 1 токен.

`twitter_tokens.txt` - твиттер токены. 1 строка = 1 токен. Если токенов больше чем приватных ключей, то бот будет заменять нерабочий твиттер токен на один из лишних и перезаписывать в файле при условии что в конфиге включена функция REPLACE\_FAILED\_TWITTER\_ACCOUNT: true.

`random_message_quills.txt` - текст для сообщений функции quills\_chat. Вы можете добавить любые смс на ваше усмотрение (рекомендуется).

### 📝 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] значит бот выполнит аккаунты начиная с третьего до шестого.
Счет начинается с 1.

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.
```

{% endcode %}

{% code overflow="wrap" %}

```javascript
FLOW

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

{% endcode %}

```javascript
RPCS

SOMNIA: ["https://dream-rpc.somnia.network"] - RPC для сети.
Можно указать несколько, бот будет использовать ту, которая работает.
```

```javascript
OTHERS

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

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

{% code overflow="wrap" %}

```javascript
SOMNIA_NETWORK

>>> SOMNIA_SWAPS:
BALANCE_PERCENT_TO_SWAP: [5, 10] - какой процент от баланса использовать для свапов.

NUMBER_OF_SWAPS: [1, 3] - сколько делать свапов, рандомное число от и до.


>>> SOMNIA_TOKEN_SENDER
Используется для функции "send_tokens".
BALANCE_PERCENT_TO_SEND: [5, 10] - какой процент от баланса использовать для отправки.

NUMBER_OF_SENDS: [1, 1] - количество трансферов/транзакций на каждый запуск. От и до рандом число.
```

{% endcode %}

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

<figure><img src="https://star-labs.gitbook.io/~gitbook/image?url=https%3A%2F%2F1229326975-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJi1Dnz98r18DXDpXAYS4%252Fuploads%252FQ2hXQElgEY15bSOlu7O2%252F%257B05D2B16E-A3FF-44F4-813A-9E894E94A87E%257D.png%3Falt%3Dmedia%26token%3D455bb266-6054-44f3-bc56-051ddae166ee&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=15179eb8&#x26;sv=2" alt=""><figcaption></figcaption></figure>

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

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

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

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

\[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-1" id="usage-1"></a>

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

После этого можно запускать бота командой `python main.py` В меню необходимо выбрать 3 после чего откроются настройки базы данных. Для первого запуска нажмите 1 (Create/Reset Database) и бот создает базу данных в папке data. Для каждого ключа будут сгенерированы маршруты действий. Так же в этом меню вы сможете смотреть посмотреть оставшиеся задания, пересоздать базу и тд. Теперь можно выходить в меню кнопкой 6 и запускать бота - 1.

### ✅ Tasks <a href="#tasks" id="tasks"></a>

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

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

<figure><img src="https://star-labs.gitbook.io/~gitbook/image?url=https%3A%2F%2F1229326975-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJi1Dnz98r18DXDpXAYS4%252Fuploads%252FVcpsOmqDPH085xxOPdY8%252Fimage.png%3Falt%3Dmedia%26token%3D36fc3b12-7ea1-4cc3-bcba-5fa1b2d59820&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=38e97793&#x26;sv=2" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://star-labs.gitbook.io/~gitbook/image?url=https%3A%2F%2F1229326975-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJi1Dnz98r18DXDpXAYS4%252Fuploads%252FUGywaLIsc4BksECy4dYE%252Fimage.png%3Falt%3Dmedia%26token%3D36dc652a-52e5-460c-8ea1-1e571022aed0&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=18f91bc8&#x26;sv=2" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://star-labs.gitbook.io/~gitbook/image?url=https%3A%2F%2F1229326975-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJi1Dnz98r18DXDpXAYS4%252Fuploads%252FSy1i8w9yb92UI4PyFJuW%252Fimage.png%3Falt%3Dmedia%26token%3Dc5cc92ed-71a4-4a3e-bc1d-e326cc4ed4a4&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=19ff95ec&#x26;sv=2" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://star-labs.gitbook.io/~gitbook/image?url=https%3A%2F%2F1229326975-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJi1Dnz98r18DXDpXAYS4%252Fuploads%252Fk38ep4GESuSvfC2ySOka%252Fimage.png%3Falt%3Dmedia%26token%3D1076451a-84ac-459f-8198-c9ff7507a5a7&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=f193903f&#x26;sv=2" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://star-labs.gitbook.io/~gitbook/image?url=https%3A%2F%2F1229326975-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJi1Dnz98r18DXDpXAYS4%252Fuploads%252FIG59PWmdDDNIzBhZuoce%252Fimage.png%3Falt%3Dmedia%26token%3D1bddab8e-1c24-4cc5-aab2-744e8c14dfe1&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=baf9111e&#x26;sv=2" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://star-labs.gitbook.io/~gitbook/image?url=https%3A%2F%2F1229326975-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJi1Dnz98r18DXDpXAYS4%252Fuploads%252FfQITKjfom00BgidQHG4V%252Fimage.png%3Falt%3Dmedia%26token%3D5dd5e079-5e33-4b6a-a468-3e5cfdd4e8ff&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=6054d44a&#x26;sv=2" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://star-labs.gitbook.io/~gitbook/image?url=https%3A%2F%2F1229326975-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJi1Dnz98r18DXDpXAYS4%252Fuploads%252Fe5EjG4SZm0W1DoRG4cKj%252Fimage.png%3Falt%3Dmedia%26token%3Df7071a97-a805-4b39-9eb0-2788a9f25059&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=3fe8cf85&#x26;sv=2" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://star-labs.gitbook.io/~gitbook/image?url=https%3A%2F%2F1229326975-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJi1Dnz98r18DXDpXAYS4%252Fuploads%252FUrdg8dGwaH99Bbl6mjWO%252Fimage.png%3Falt%3Dmedia%26token%3Df80a9605-f010-429b-9ad4-c180903f0dd9&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=d056ce0b&#x26;sv=2" alt=""><figcaption></figcaption></figure>
