z3nCore.dll утилитарный C# мультитул для работы с Zennoposter

web3grep

Client
Регистрация
27.11.2023
Сообщения
65
Благодарностей
113
Баллы
33
136141


z3nCore.dll как Leatherman для Zenno, а может и лучше :D

Всем привет, господа автоматизаторы!
Уже довольно давно я варюсь в мире автоматизации на Zennoposter. Мой путь начался с кубиков, но я довольно быстро переключился на C# (так быстро как смог - таков путь был задуманным изначально), ведь горизонты так открываются куда более широкие и при переходе вы ощущаете прилив могущества и силы ;D. Привело это правда к тому, что по сей день для меня многие банальные вещи проще реализовать кодом — при попытке же собрать то же самое из стандартных кирпичей получается громоздко и коряво, а о существовании других некоторых втроенных функций я вообще не подозреваю, однако не могу сказать что это плохо или мне чего -то не хватает.

И так всегда бывает, после десятой или после сотой итерации написания кода под схожие задачи, что неизбежно приходит мысль: «Я не хочу набирать это еще раз!» В такие моменты обычно и пилиться универсальный метод, который можно вызывать из любого проекта и помещается в сниппет, общий код или DLL. В моем случае методов накопилось столько, что общий код начал трещать по швам, и я решил собрать все всё в одну библиотеку.
Этой библиотекой и является САБЖ этой статьи. В статье описание публичных классов, наглядные примеры использования, сама .dll текущей версии и базовый шаблон-оркестратор

136140

Код не является конечным, библиотека активно дорабатывается и модернизируеся.
Код является открытым - актуальную версию и исходники вы всегда можете найти в репозитории https://github.com/w3bgr3p/z3nCore
Код предоставляется «как есть» и может содержать ошибки. Автор не несет ответсвенности за последствия использования в ваших шаблонах
В статье нет ответа на вопрос "зачем нужно изобретать новые велосипеды?" - интересующиеся сиим могут смело переходить к поискам ответа в следующей работе
 
Последнее редактирование:
  • Спасибо
Реакции: r3ktl3ss, kul0n и NickR

web3grep

Client
Регистрация
27.11.2023
Сообщения
65
Благодарностей
113
Баллы
33
136142


Essentials
Базовая коллекция утилитарных классов. Включает функционал безопасности, центральный инициализатор сессий, логгер. Как должно быть очевидно из названия, содержит необходимые для работы всего остального классы
Класс Init
Описание

Класс инициализатор. Работает как фабрика для инициализации всех компонентов проекта: получает список аккаунтов для работы, настраивает браузер, запускает основной скрипт проекта, подключает социальные сети и кошельки если требуется

Конструкторы
Init(IZennoPosterProjectModel project, Instance instance, bool log = false)

  • Описание: Создает экземпляр инициализатора с указанным проектом, экземпляром браузера и настройкой логирования.
  • Параметры:
  • project - модель проекта ZennoPoster
  • instance - экземпляр браузера
  • log - включить/выключить подробное логирование (по умолчанию false)
  • Пример:
C#:
 var init = new Init(project, instance, true);
Init(IZennoPosterProjectModel project, bool log = false)
  • Описание: Создает экземпляр инициализатора только с проектом (без браузера).
  • Параметры:
  • project - модель проекта ZennoPoster
  • log - включить/выключить подробное логирование
  • Пример:
C#:
 var init = new Init(project, false);
Публичные методы
InitProject(string author = "w3bgr3p", string[] customQueries = null, bool log = false)

  • Описание: Выполняет полную инициализацию проекта - подготавливает базу данных, создает список аккаунтов для работы и настраивает все необходимые компоненты.
  • Параметры:
  • author - имя автора скрипта для отображения в лого
  • customQueries - дополнительные SQL-запросы для выборки аккаунтов
  • log - включить подробное логирование
  • Пример:
C#:
 string[] queries = { "SELECT id FROM accounts WHERE status = 'active'" }; init.InitProject("myusername", queries, true);
PrepareProject()
  • Описание: Подготавливает проект к выполнению - выбирает аккаунт для работы, проверяет фильтры (блокчейн, социальные сети)
  • Пример:
C#:
 try { init.PrepareProject(); } catch (Exception ex) { project.SendErrorToLog($"Ошибка подготовки: {ex.Message}", false);

}
PrepareInstance()
  • Описание: Настраивает экземпляр браузера - запускает браузер, устанавливает прокси, загружает cookies и настраивает профиль.
  • Пример:
C#:
 try { init.PrepareInstance(); } catch (Exception ex) { project.SendErrorToLog($"Ошибка настройки браузера: {ex.Message}", false);

}
LoadSocials(string requiredSocial)
  • Возвращает: string - список загруженных социальных сетей или "noBrowser" если браузер не запущен
  • Описание: Загружает и авторизует указанные социальные сети в браузере (Google, Twitter, Discord, GitHub).
  • Пример:
C#:
string result = init.LoadSocials("Twitter");
LoadWallets(string walletsToUse)
  • Возвращает: string - список загруженных кошельков или "noBrowser" если браузер не запущен
  • Описание: Подключает и настраивает указанные криптовалютные кошельки (Backpack, Zerion, Keplr).
  • Пример:
C#:
init.LoadWallets("Zerion");
RunProject(List additionalVars = null, bool add = true)
  • Возвращает: bool - успешность выполнения проекта
  • Описание: Запускает основной скрипт проекта с передачей всех необходимых переменных.
  • Параметры:
  • additionalVars - дополнительные переменные для передачи в скрипт
  • add - добавить к стандартным переменным (true) или заменить их (false)
  • Пример:
C#:
 var extraVars = new List { "customVariable", "mySpecialSetting" }; bool success = init.RunProject(extraVars, true); if (success) { } else { project.SendErrorToLog("Проект завершился с ошибкой", false);

}
AES
Предоставляет методы для шифрования и расшифровки текста с использованием алгоритма AES, а также создания MD5-хешей.

EncryptAES
Возвращает: string - зашифрованная строка в HEX-формате

Шифрует текст с использованием алгоритма AES. По умолчанию ключ автоматически хешируется через MD5 для обеспечения правильной длины.

Параметры:
  • phrase (string) - текст для шифрования
  • key (string) - ключ для шифрования
  • hashKey (bool) - если true, ключ будет хеширован через MD5 (по умолчанию true)
Пример использования:

C#:
 string text = "Мой секретный текст";

string password = "mypassword123";

//шифруем текст с автоматическим хешированием ключа

string encrypted = AES.EncryptAES(text, password); project.SendInfoToLog($"Зашифрованный текст: {encrypted}");

//шифруем с готовым 32-символьным ключом без хеширования

string hexKey = "1234567890abcdef1234567890abcdef"; string encrypted2 = AES.EncryptAES(text, hexKey, false);
DecryptAES
Возвращает: string - расшифрованный текст

Расшифровывает текст, зашифрованный методом EncryptAES. Важно использовать тот же ключ и настройку hashKey, что и при шифровании.

Параметры:

  • hash (string) - зашифрованная строка в HEX-формате
  • key (string) - ключ для расшифровки
  • hashKey (bool) - если true, ключ будет хеширован через MD5 (по умолчанию true)
Пример использования:

C#:
 string encryptedText = "A1B2C3D4..."; //зашифрованный текст

string password = "mypassword123";

//расшифровываем с тем же ключом

string decrypted = AES.DecryptAES(encryptedText, password); project.SendInfoToLog($"Расшифрованный текст: {decrypted}");

//если шифровали без хеширования ключа, то и расшифровывать нужно так же

string hexKey = "1234567890abcdef1234567890abcdef"; string decrypted2 = AES.DecryptAES(encryptedText, hexKey, false);
HashMD5
Возвращает: string - MD5-хеш в HEX-формате

Создает MD5-хеш от переданной строки. Полезно для создания фиксированных ключей для AES-шифрования или проверки целостности данных.

Параметры:
  • phrase (string) - строка для хеширования
Пример использования:

C#:
 string password = "mypassword123";

//получаем MD5-хеш пароля

string hash = AES.HashMD5(password); project.SendInfoToLog($"MD5 хеш: {hash}");

//можно использовать как ключ для AES без дополнительного хеширования

string text = "секретные данные";

string encrypted = AES.EncryptAES(text, hash, false);
SAFU (Simple Authentication and Functional Utilities)
//и кто бы мог подумать что это будет расшифровано как аббревиатура XD
SAFU - интерфейс с подтягиванием дефолтного класса для шифрования на основе аппаратных даннных с использованием AES-шифрования.

Публичные методы
Initialize
Возвращаемое значение: void

Описание: Инициализирует систему SAFU, регистрируя функции шифрования в глобальном хранилище. Метод автоматически определяет доступные реализации и использует базовую версию SimpleSAFU по умолчанию.

Параметры:

  • project (IZennoPosterProjectModel) - экземпляр проекта ZennoPoster
Пример использования:

C#:
 //инициализация SAFU перед использованием

SAFU.Initialize(project);
Encode
Возвращаемое значение: string

Описание: Шифрует переданную строку с использованием PIN-кода из переменной проекта cfgPin. Если PIN-код не задан, возвращает исходную строку без изменений.

Параметры:

  • project (IZennoPosterProjectModel) - экземпляр проекта ZennoPoster
  • toEncrypt (string) - строка для шифрования
  • log (bool, необязательный) - флаг логирования (по умолчанию false)
Пример использования:

C#:
 //шифрование пароля

string password = "mySecretPassword"; string encryptedPassword = SAFU.Encode(project, password); project.SendInfoToLog($"Пароль зашифрован: {encryptedPassword}");
Decode
Возвращаемое значение: string

Описание: Расшифровывает переданную строку с использованием PIN-кода из переменной проекта cfgPin. Если PIN-код не задан, возвращает исходную строку. В случае ошибки расшифровки отправляет предупреждение в лог.

Параметры:

  • project (IZennoPosterProjectModel) - экземпляр проекта ZennoPoster
  • toDecrypt (string) - строка для расшифровки
  • log (bool, необязательный) - флаг логирования (по умолчанию false)
Пример использования:

C#:
 //расшифровка пароля

string encryptedPassword = "зашифрованная_строка";

string originalPassword = SAFU.Decode(project, encryptedPassword); project.SendInfoToLog($"Пароль расшифрован: {originalPassword}");
HWPass
Возвращаемое значение: string

Описание: Генерирует аппаратный пароль на основе серийного номера материнской платы и значения переменной acc0. Используется для создания уникального ключа, привязанного к конкретному компьютеру.

Параметры:

  • project (IZennoPosterProjectModel) - экземпляр проекта ZennoPoster
  • log (bool, необязательный) - флаг логирования (по умолчанию false)
Пример использования:

C#:
 //получение аппаратного пароля

string hardwarePassword = SAFU.HWPass(project); project.SendInfoToLog($"Аппаратный пароль: {hardwarePassword}");
Logger
Класс для удобного логирования с расширенными возможностями форматирования, цветовой разметки. Позволяет настраивать отображение дополнительной информации (аккаунт, время выполнения, использование памяти) и автоматически определять цвет сообщений по содержимому.

Конструкторы
Logger(IZennoPosterProjectModel project, bool log = false, string classEmoji = null)
Создает новый экземпляр логгера с базовыми настройками.

Параметры:

  • project - проект ZennoPoster для отправки логов
  • log - принудительно включить логирование (по умолчанию false)
  • classEmoji - эмодзи для отображения перед каждым сообщением
Пример:

C#:
 // создание базового логгера

var logger = new Logger(project);

// логгер с включенным отображением и эмодзи

var logger = new Logger(project, true, "");
Публичные методы
Send(string toLog, [CallerMemberName] string callerName = "", bool show = false, bool thr0w = false, bool toZp = true, int cut = 0, bool wrap = true)
Возвращает: void

Отправляет сообщение в лог с автоматическим определением цвета и типа на основе содержимого.

Параметры:

  • toLog - текст сообщения для логирования
  • callerName - имя вызывающего метода (заполняется автоматически)
  • show - принудительно показать сообщение независимо от настроек
  • thr0w - выбросить исключение после записи в лог
  • toZp - отправить в основной лог ZennoPoster
  • cut - максимальное количество строк (0 = без ограничений)
  • wrap - использовать обертку с заголовком
Пример обертки

[27] ⏱ [00:10:17] [909 Mb] [873722620] [JuneAI]
! no gain on Claude Sonnet 4Anthropic Model: 6815. Switching to next model...
Пример:

C#:
 var logger = new Logger(project, true);

// обычное сообщение

logger.Send("Операция выполнена успешно");

// предупреждение (автоматически оранжевым цветом)

logger.Send("!W Внимание: низкий баланс");

// ошибка с исключением

logger.Send("!E Критическая ошибка", thr0w: true);

// принудительное отображение

logger.Send("Важная информация", show: true);
Time - Утилиты работы со временем
Класс для работы со временем. Предоставляет методы для получения текущего времени, расчета времени выполнения, установки таймаутов и задержек.

Статические методы
Now
Возвращает: string

Получает текущее время в указанном формате.

Параметры:

  • format (string, по умолчанию "unix") - формат времени: "unix", "iso", "short", "utcToId"
Пример:

C#:
 //получить время в unix формате

string unixTime = Time.Now(); project.SendInfoToLog($"Unix время: {unixTime}");

//получить время в ISO формате

string isoTime = Time.Now("iso"); project.SendInfoToLog($"ISO время: {isoTime}");
Cd
Возвращает: string

Рассчитывает время до конца дня или добавляет указанное время к текущему моменту.

Параметры:

  • input (object, по умолчанию null) - количество минут для добавления или строка времени, null для конца дня
  • o (string, по умолчанию "iso") - формат вывода: "unix" или "iso"
Пример:

C#:
 //время до конца дня

string endOfDay = Time.Cd(); project.SendInfoToLog($"До конца дня: {endOfDay}");

//добавить 30 минут к текущему времени

string futureTime = Time.Cd(30, "unix"); project.SendInfoToLog($"Через 30 минут: {futureTime}");
Методы-расширения для IZennoPosterProjectModel
TimeElapsed
Возвращает: int

Вычисляет количество секунд, прошедших с момента начала сессии.

Параметры:

  • varName (string, по умолчанию "varSessionId") - имя переменной с временем начала сессии
Пример:

C#:
 //узнать сколько секунд прошло с начала сессии

int elapsed = project.TimeElapsed(); project.SendInfoToLog($"Прошло секунд: {elapsed}");
Age
Возвращает: T

Получает возраст сессии в указанном типе данных.

Пример:

C#:
//получить возраст сессии как строку

string ageString = project.Age();
project.SendInfoToLog($"Возраст сессии: {ageString}");

//получить возраст как TimeSpan

TimeSpan ageTimeSpan = project.Age();
project.SendInfoToLog($"Часов работы: {ageTimeSpan.Hours}");
TimeOut
Проверяет, не превышен ли глобальный таймаут выполнения. Выбрасывает исключение при превышении.

Параметры:
  • min (int, по умолчанию 0) - лимит времени в минутах, если 0 - берется из переменной "timeOut"
Пример:

C#:
 //проверить таймаут в 60 минут

project.TimeOut(60);

//проверить таймаут из переменной timeOut

project.TimeOut();
Deadline
Устанавливает дедлайн или проверяет его превышение.

Параметры:

  • sec (int, по умолчанию 0) - лимит времени в секундах, если 0 - устанавливает начальное время
Пример:

C#:
//установить начальное время для дедлайна

project.Deadline();

//проверить дедлайн в 300 секунд

project.Deadline(300);
Sleep
Приостанавливает выполнение на указанное время.

Параметры:
  • min (int, по умолчанию 0) - минимальное время задержки в секундах
  • max (int, по умолчанию 0) - максимальное время задержки в секундах, если 0 - используется значение из "cfgDelay"
Пример:

C#:
//задержка из настройки cfgDelay
project.Sleep();
//случайная задержка от 5 до 10 секунд
project.Sleep(5, 10);
StartSession
Обновляет переменную с инормацией о старте сессии "varSessionId".

Пример:

C#:
 //начать новую сессию

project.StartSession();

Browser
Классы для работы с браузером. Надстройки над базовыми экшенами для работы с HtmlElement c информативными исключениями. Методы для работы с расширениями, капчёй, куками, трафиком. Проверка скора через BrowserScan с выдачей проблем и автоподстройкой времени.
BrowserScan
Класс для работы с сервисом BrowserScan.net. Позволяет анализировать отпечаток браузера, получать оценку анонимности, парсить характеристики браузера и автоматически исправлять настройки временной зоны

Конструкторы
BrowserScan(IZennoPosterProjectModel project, Instance instance, bool log = false)

Создает новый экземпляр класса BrowserScan.

Параметры:

  • project - модель проекта ZennoPoster
  • instance - экземпляр браузера
  • log - включить логирование (по умолчанию false)
Пример:

C#:
 var browserScan = new BrowserScan(project, instance, true); //создать объект для работы с BrowserScan с включенным логированием
Методы
ParseStats()
Возвращаемое значение:
void

Загружает страницу BrowserScan.net, парсит все характеристики браузера (WebGL, аудио, шрифты, часовой пояс и др.) и сохраняет их в таблицу базы данных.

Пример:

C#:
browserScan.ParseStats(); //проанализировать и сохранить все характеристики браузера
GetScore()
Возвращаемое значение:
string

Получает оценку анонимности браузера от BrowserScan.net. Если оценка не 100%, дополнительно возвращает список проблем с их описанием.

Пример:

C#:
 string score = browserScan.GetScore(); project.SendInfoToLog($"Оценка браузера: {score}");

//получить оценку анонимности браузера
FixTime()
Возвращаемое значение:
void

Автоматически исправляет настройки временной зоны браузера на основе данных, полученных от BrowserScan.net. Устанавливает корректный часовой пояс и смещение времени.

Пример:

C#:
 browserScan.FixTime(); //автоматически настроить временную зону браузера
Captcha
Статический класс для работы с различными видами captcha

Методы
CFSolve

C#:
 public static void CFSolve(this Instance instance)
Возвращаемое значение: void

Описание: Автоматически решает Cloudflare Turnstile captcha путем клика по защитному элементу на странице.

Пример использования:

C#:
 //решить Cloudflare captcha

instance.CFSolve();
CFToken
C#:
 public static string CFToken(this Instance instance, int deadline = 60, bool strict = false)
Возвращаемое значение: string - токен от решённой Cloudflare captcha

Описание: Получает токен от решённой Cloudflare Turnstile captcha с возможностью настройки времени ожидания.

Параметры:
  • deadline (int) - максимальное время ожидания решения в секундах (по умолчанию 60)
  • strict (bool) - строгий режим проверки (по умолчанию false)
Пример использования:

C#:
 //получить токен с ожиданием 120 секунд

string token = instance.CFToken(120); project.SendInfoToLog($"Получен токен: {token}");
CapGuru
C#:
 public static bool CapGuru(this IZennoPosterProjectModel project)
Возвращаемое значение: bool - результат выполнения плагина Cap.Guru (true - успешно, false - ошибка)

Описание: Запускает плагин Cap.Guru для решения различных типов captcha hCapha. Для всего остального конечно же есть CapMonster. Автоматически использует API ключ из базы данных проекта.

Пример использования:

C#:
 //использовать Cap.Guru для решения captcha

bool result = project.CapGuru();
if (result) { } else { project.SendErrorToLog("Ошибка при решении captcha через Cap.Guru");

}
Класс ChromeExt
Описание

Инструменты для управления расширениями Chromium . Позволяют устанавливать расширения из CRX-файлов, переключать их состояние (включать или отключать), удалять расширения и получать версию установленного расширения. Класс работает как утилита для автоматизации взаимодействия с браузерными расширениями, упрощая настройку профиля браузера.

Конструкторы
ChromeExt(IZennoPosterProjectModel project, bool log = false)

  • Описание: Создает экземпляр класса для управления расширениями с указанным проектом и опцией логирования.
  • Параметры:
  • project - модель проекта ZennoPoster
  • log - включить/выключить логирование (по умолчанию false)
  • Пример:
C#:
 var chromeExt = new ChromeExt(project, true);
ChromeExt(IZennoPosterProjectModel project, Instance instance, bool log = false)
  • Описание: Создает экземпляр класса для управления расширениями с указанным проектом, экземпляром браузера и опцией логирования.
  • Параметры:
  • project - модель проекта ZennoPoster
  • instance - экземпляр браузера
  • log - включить/выключить логирование (по умолчанию false)
  • Пример:
C#:
 var chromeExt = new ChromeExt(project, instance, false);
Публичные методы
GetVer(string extId)

  • Возвращает: string - версия расширения
  • Описание: Получает версию указанного расширения по его ID из настроек профиля.
  • Параметры:
  • extId - ID расширения
  • Пример:
C#:
 string version = chromeExt.GetVer("pbgjpgbpljobkekbhnnmlikbbfhbhmem"); project.SendInfoToLog($"Версия расширения: {version}", false);
Install(string extId, string fileName, bool log = false)
  • Возвращает: bool - успешность установки
  • Описание: Устанавливает расширение из CRX-файла, если оно еще не установлено.
  • Параметры:
  • extId - ID расширения
  • fileName - имя CRX-файла
  • log - включить логирование (по умолчанию false)
  • Пример:
C#:
 bool installed = chromeExt.Install("pbgjpgbpljobkekbhnnmlikbbfhbhmem", "One-Click-Extensions-Manager.crx", true);
if (installed) { }
else { project.SendWarningToLog("Расширение уже установлено", false);

}
Switch(string toUse = "", bool log = false)
  • Описание: Переключает состояние расширений (включает или отключает) на основе списка имен или ID.
  • Параметры:
  • toUse - список расширений для включения (имена или ID через запятую)
  • log - включить логирование (по умолчанию false)
  • Пример:
C#:
 try { chromeExt.Switch("Wallet,ExtensionManager", true); } catch (Exception ex) { project.SendErrorToLog($"Ошибка переключения: {ex.Message}", false);

}
Rm(string[] ExtToRemove)
  • Описание: Удаляет массив указанных расширений по их ID.
  • Параметры:
  • ExtToRemove - массив ID расширений для удаления
  • Пример:
C#:
 string[] exts = { "id1", "id2" }; chromeExt.Rm(exts);
Класс Cookies
Описание

Позволяет получать, устанавливать и сохранять cookies для текущего домена или всех доменов, а также управлять cookies через JavaScript. Класс упрощает автоматизацию задач, связанных с сохранением и загрузкой cookies, включая взаимодействие с файлами и базами данных.

Конструкторы
Cookies(IZennoPosterProjectModel project, Instance instance, bool log = false)

  • Описание: Создает экземпляр класса для управления cookies с указанным проектом, экземпляром браузера и опцией логирования.
  • Параметры:
  • project - модель проекта ZennoPoster
  • instance - экземпляр браузера
  • log - включить/выключить логирование (по умолчанию false)
  • Пример:
C#:
 var cookies = new Cookies(project, instance, true);
Публичные методы
Get(string domainFilter = "")

  • Возвращает: string - JSON-строка с данными cookies
  • Описание: Получает cookies для указанного домена или всех доменов и возвращает их в формате JSON. Если домен не указан, возвращаются cookies для текущего активного домена.
  • Параметры:
  • domainFilter - фильтр домена (по умолчанию пустая строка, возвращает cookies для текущего домена)
  • Пример:
C#:
 string cookiesJson = cookies.Get(".example.com"); project.SendInfoToLog($"Получены cookies: {cookiesJson}", false);
Set(string cookieSourse = null, string jsonPath = null)
  • Описание: Устанавливает cookies из указанного источника (база данных или файл).
  • Параметры:
  • cookieSourse - источник cookies (dbMain, dbProject, fromFile или JSON-строка)
  • jsonPath - путь к файлу с cookies (используется, если cookieSourse = fromFile)
  • Пример:
C#:
 try { cookies.Set("fromFile", "C:\profiles\cookies\account.json"); } catch (Exception ex) { project.SendErrorToLog($"Ошибка установки cookies: {ex.Message}", false);

}
Save(string source = null, string jsonPath = null)
  • Описание: Сохраняет cookies в базу данных или файл. Поддерживает сохранение cookies текущего проекта или всех cookies.
  • Параметры:
  • source - источник cookies (project для текущего домена, all для всех доменов)
  • jsonPath - путь для сохранения cookies в файл (если указан)
  • Пример:
C#:
 try { cookies.Save("all", "C:\profiles\cookies\all_cookies.json"); } catch (Exception ex) { project.SendErrorToLog($"Ошибка сохранения cookies: {ex.Message}", false);

}
GetByJs(string domainFilter = "", bool log = false)
  • Возвращает: string - JSON-строка с данными cookies, полученных через JavaScript
  • Описание: Получает cookies текущей страницы через выполнение JavaScript-кода в браузере.
  • Параметры:
  • domainFilter - фильтр домена (по умолчанию пустая строка, возвращает cookies текущего домена)
  • log - включить логирование (по умолчанию false)
  • Пример:
C#:
 string jsCookies = cookies.GetByJs(".example.com", true); project.SendInfoToLog($"Cookies получены через JS: {jsCookies}", false);
SetByJs(string cookiesJson, bool log = false)
  • Описание: Устанавливает cookies через выполнение JavaScript-кода в браузере.
  • Параметры:
  • cookiesJson - JSON-строка с данными cookies
  • log - включить логирование (по умолчанию false)
  • Пример:
C#:
 try { string json = @"[{""domain"":"".example.com"",""name"":""session"",""value"":""12345""}]"; cookies.SetByJs(json, true); } catch (Exception ex) { project.SendErrorToLog($"Ошибка установки cookies через JS: {ex.Message}", false);

}
HtmlExtensions
Некоторые расширения для работы с HtmlElement

Методы
DecodeQr
Возвращает:
string

Описание: Декодирует QR-код из HTML элемента в текстовую строку.

Параметры:

  • element (HtmlElement) - HTML элемент, содержащий QR-код
Возвращаемые значения:

  • Текст QR-кода при успешном декодировании
  • "qrIsNull" если QR-код не найден или пустой
  • "qrError" в случае ошибки при декодировании
Пример:

C#:
 // найти элемент с QR-кодом

HtmlElement qrElement = tab.FindElementByTag("img", 0);

// декодировать QR-код

string qrText = HtmlExtensions.DecodeQr(qrElement);

if (qrText == "qrIsNull") { //QR-код не найден

project.SendWarningToLog("QR-код не обнаружен");

} else if (qrText == "qrError") { //ошибка декодирования

project.SendErrorToLog("Ошибка при декодировании QR-кода");

} else { //успешное декодирование

project.SendInfoToLog($"QR-код: {qrText}");

}
GetTxHash
Возвращает:
string

Описание: Извлекает транзакционный хеш из href атрибута ссылки. Возвращает последнюю часть URL после символа '/'.

Параметры:

  • element (HtmlElement) - HTML элемент ссылки с атрибутом href
Исключения:

  • Exception - если элемент не содержит атрибута href или произошла другая ошибка
Пример:

C#:
 // найти ссылку на транзакцию

HtmlElement linkElement = tab.FindElementByAttribute("a", "href", "[I]tx[/I]", "text", 0);

try { // извлечь хеш транзакции

string txHash = HtmlExtensions.GetTxHash(linkElement);

//использовать полученный хеш

project.SendInfoToLog($"Хеш транзакции: {txHash}");

} catch (Exception ex) { //обработать ошибку

project.SendErrorToLog($"Ошибка получения хеша: {ex.Message}");

}
Класс InstanceExtensions
Статический класс расширений для работы с экземплярами браузера в ZennoPoster. Предоставляет удобные методы для поиска, взаимодействия с элементами веб-страниц, выполнения JavaScript-кода и работы с защитой Cloudflare. Все методы позволяют автоматизировать типичные задачи браузерной автоматизации с упрощенным синтаксисом.

Публичные методы
GetHe(object obj, string method = "")


Возвращает: HtmlElement - найденный HTML-элемент

Описание: Универсальный поиск HTML-элементов на странице. Поддерживает поиск по различным критериям: готовый HtmlElement, кортежи с id/name или полные атрибуты. Принимает те форматы объектьов которые может сгененрировать зеннопостер из штатных селекторов путем конвертации кирпича в код

Параметры:

  • obj - объект для поиска (HtmlElement, кортеж с id/name или полный кортеж атрибутов)
  • method - дополнительный метод поиска ("last" для последнего элемента)
Пример:

C#:
 // Поиск по id

var element = instance.GetHe(("submitButton", "id"));

// Поиск по атрибуту

var button = instance.GetHe(("button", "innertext", "Continue", "regexp", 0));
HeGet(object obj, string method = "", int deadline = 10, string atr = "innertext", int delay = 1, string comment = "", bool thr0w = true)

Возвращает: string - значение атрибута элемента или null

Описание: Получает значение атрибута HTML-элемента с ожиданием появления. Поддерживает режим проверки отсутствия элемента (method="!").

Параметры:

  • obj - объект для поиска элемента
  • method - метод поиска ("!" для проверки отсутствия)
  • deadline - время ожидания в секундах
  • atr - атрибут для получения
  • delay - задержка после нахождения в секундах
  • comment - комментарий для ошибок
  • thr0w - бросать исключение при неудаче
Пример:

C#:
 // Получить текст элемента

string text = instance.HeGet(("title", "id"), deadline: 15, atr: "innertext"); project.SendInfoToLog($"Текст заголовка: {text}", false);

// Проверить отсутствие элемента

string result = instance.HeGet(("error", "class"), method: "!"); if (result == null) { }
HeClick(object obj, string method = "", int deadline = 10, int delay = 1, string comment = "", bool thr0w = true, int emu = 0)

Описание: Кликает по HTML-элементу с ожиданием его появления. Поддерживает специальный режим "clickOut" для клика до исчезновения элемента.

Параметры:

  • obj - объект для поиска элемента
  • method - метод поиска ("clickOut" для клика до исчезновения)
  • deadline - время ожидания в секундах
  • delay - задержка перед кликом в секундах
  • comment - комментарий
  • thr0w - бросать исключение при неудаче
  • emu - настройка эмуляции мыши (1 - включить, -1 - выключить, 0 - не менять)
Пример:

C#:
 // Обычный клик

instance.HeClick(("submit", "id"), delay: 2);

// Клик до исчезновения popup

instance.HeClick(("popup", "class"), method: "clickOut", comment: "Закрытие popup");
HeSet(object obj, string value, string method = "id", int deadline = 10, int delay = 1, string comment = "", bool thr0w = true)

Описание: Устанавливает значение в поле ввода с ожиданием появления элемента.

Параметры:

  • obj - объект для поиска элемента
  • value - значение для установки
  • method - метод поиска элемента
  • deadline - время ожидания в секундах
  • delay - задержка перед вводом в секундах
  • comment - комментарий для ошибок
  • thr0w - бросать исключение при неудаче
Пример:

C#:
 // Ввод в поле email

instance.HeSet(("email", "name"), "[EMAIL]user@example.com[/EMAIL]", delay: 1);

// Ввод в поле по атрибуту

instance.HeSet(("input", "placeholder", "Введите имя", "exact", 0), "Иван Петров");
JsClick(string selector, int delay = 2)

Возвращает: string - результат выполнения ("Click successful" или ошибка)

Описание: Выполняет клик по элементу через JavaScript с использованием селектора.

Параметры:

  • selector - JavaScript-селектор элемента
  • delay - задержка перед кликом в секундах
Пример:

C#:
 // Клик через querySelector

string result = instance.JsClick("document.querySelector('.submit-button')", delay: 1); project.SendInfoToLog($"Результат JS клика: {result}", false);

// Клик по элементу по ID

string result2 = instance.JsClick("document.getElementById('confirmBtn')");
JsSet(string selector, string value, int delay = 2)

Возвращает: string - результат выполнения ("Value set successfully" или ошибка)

Описание: Устанавливает значение в поле через JavaScript с использованием селектора.

Параметры:

  • selector - JavaScript-селектор элемента
  • value - значение для установки
  • delay - задержка перед установкой в секундах
Пример:

C#:
 // Установка значения через querySelector

string result = instance.JsSet("document.querySelector('input[name="username"]')", "myuser"); project.SendInfoToLog($"Результат JS установки: {result}", false);

// Установка в скрытое поле

string result2 = instance.JsSet("document.getElementById('hiddenField')", "secretValue");

Go(string url, bool strict = false)

Описание: Переходит на указанный URL только если текущая страница отличается.

Параметры:
  • url - URL для перехода
  • strict - строгое сравнение URL (точное совпадение) иначе проверяет подстроку в url
Пример:

C#:
 // Переход если страница отличается

instance.Go("[URL]https://example.com/login[/URL]");

// Строгая проверка URL

instance.Go("[URL]https://example.com/dashboard[/URL]", strict: true);
F5()

Описание: Обновляет текущую страницу (аналог F5).

Пример:

C#:
 instance.F5();
CtrlV(string ToPaste)

Описание: Вставляет текст через буфер обмена (эмуляция Ctrl+V).

Параметры:
  • ToPaste - текст для вставки
Пример:

C#:
 // Вставка текста

instance.CtrlV("Текст для вставки");

// Вставка пароля

instance.CtrlV("mySecretPassword123");
ClearShit(string domain)

Описание: закрывает все вкладки и очищает кэш и куки для указанного домена.

Параметры:
  • domain - домен для очистки
Пример:

C#:
 // Полная очистка для домена

instance.ClearShit("example.com");
CloseExtraTabs(bool blank = false, int tabToKeep = 1)

Описание: Закрывает все вкладки с конца пока колличество не станет указанным.

Параметры:

  • blank - перейти на пустую страницу после закрытия
  • tabToKeep - колличество для сохранения (начиная с 1)
Пример:

C#:
 // Закрыть лишние вкладки

instance.CloseExtraTabs(blank: true);

// Оставить две вкладки

instance.CloseExtraTabs(tabToKeep: 2);
Traffic - Класс для работы с сетевым трафиком
Класс Traffic предназначен для мониторинга и анализа HTTP-трафика . позволяет отслеживать запросы на активной вкладке, извлекать данные из них и получать конкретные параметры запросов/ответов. Особенно полезен для работы с API, перехвата токенов авторизации и анализа сетевых взаимодействий.

Конструкторы
Traffic(IZennoPosterProjectModel project, Instance instance, bool log = false)

Создает новый экземпляр класса для мониторинга трафика.

Параметры:
  • project - экземпляр проекта ZennoPoster
  • instance - экземпляр браузера
  • log - включить логирование процесса (по умолчанию false)
Пример:

C#:
 //создать экземпляр для работы с трафиком

var traffic = new Traffic(project, instance, true);
Методы
string Get(string url, string parametr, bool reload = false, bool parse = false, int deadline = 15, int delay = 3)
Возвращаемое значение:
string - значение указанного параметра из трафика

Извлекает конкретный параметр из HTTP-запроса, содержащего указанный URL. Ожидает появления запроса и возвращает данные когда находит совпадение.

Параметры:

  • url - часть URL для поиска в трафике
  • parametr - параметр для извлечения: "Method", "ResultCode", "Url", "ResponseContentType", "RequestHeaders", "RequestCookies", "RequestBody", "ResponseHeaders", "ResponseCookies", "ResponseBody"
  • reload - перезагрузить страницу перед мониторингом (по умолчанию false)
  • parse - автоматически парсить JSON ответ (по умолчанию false)
  • deadline - максимальное время ожидания в секундах (по умолчанию 15)
  • delay - задержка между проверками в секундах (по умолчанию 3)
Пример:

C#:
 //получить токен из заголовков запроса

string token = traffic.Get("api/login", "RequestHeaders");

//получить тело ответа от API

string response = traffic.Get("api/user", "ResponseBody", parse: true);
Dictionary<string, string> Get(string url, bool reload = false, int deadline = 10)
Возвращаемое значение:
Dictionary<string, string> - все параметры найденного запроса

Возвращает все доступные параметры HTTP-запроса в виде словаря. Содержит Method, ResultCode, Url, ResponseContentType, RequestHeaders, RequestCookies, RequestBody, ResponseHeaders, ResponseCookies, ResponseBody.

Параметры:

  • url - часть URL для поиска в трафике
  • reload - перезагрузить страницу перед мониторингом (по умолчанию false)
  • deadline - максимальное время ожидания в секундах (по умолчанию 10)
Пример:

C#:
 //получить все данные о запросе

var requestData = traffic.Get("api/users");

//использовать данные запроса

string method = requestData["Method"]; string statusCode = requestData["ResultCode"]; string responseBody = requestData["ResponseBody"];
string GetHeader(string url, string headerToGet = "Authorization", bool reload = false)
Возвращаемое значение:
string - значение указанного заголовка

Извлекает конкретный заголовок из HTTP-запроса. По умолчанию ищет заголовок Authorization, часто используемый для токенов.

Параметры:

  • url - часть URL для поиска в трафике
  • headerToGet - имя заголовка для получения (по умолчанию "Authorization")
  • reload - перезагрузить страницу перед мониторингом (по умолчанию false)
Пример:

C#:
 //получить токен авторизации

string authToken = traffic.GetHeader("api/profile");

//получить user-agent

string userAgent = traffic.GetHeader("api/data", "User-Agent");
string GetParam(string url, string parametr, bool reload = false, int deadline = 10)
Возвращаемое значение:
string - значение указанного параметра

Альтернативный метод для получения конкретного параметра из HTTP-запроса. Работает аналогично первому методу Get, но с упрощенными параметрами.

Параметры:

  • url - часть URL для поиска в трафике
  • parametr - параметр для извлечения
  • reload - перезагрузить страницу перед мониторингом (по умолчанию false)
  • deadline - максимальное время ожидания в секундах (по умолчанию 10)
Пример:

C#:
 //получить код ответа

string statusCode = traffic.GetParam("api/login", "ResultCode");

//получить тело запроса

string requestBody = traffic.GetParam("api/submit", "RequestBody");
Api
Методы для простого взаимодействия с некоторыми популярными (не факт что для вашей ниши) API. Состав Aiio, Perplexity, FirstMail, Dmail, GasZip, Galxe, GitHub, Okx, Binance, UnlockProtocol
Класс AI
Описание

Класс AI предназначен для интеграции с различными сервисами искусственного интеллекта. Он позволяет отправлять запросы к AI-сервисам (Perplexity, AI.IO) и получать текстовые ответы. Класс поддерживает различные предустановленные функции для генерации твитов, оптимизации кода и создания обращений в службу поддержки Google.

Конструкторы
AI(IZennoPosterProjectModel project, string provider, string model = null, bool log = false)


Описание: Создает экземпляр AI-клиента с указанным провайдером и настройками.

Параметры:

  • project - модель проекта ZennoPoster
  • provider - провайдер AI-сервиса ("perplexity" или "aiio")
  • model - конкретная модель для использования (необязательно)
  • log - включить подробное логирование (по умолчанию false)
Пример:

C#:
 var ai = new AI(project, "perplexity", "llama-3.3-70b", true);
Публичные методы
Query(string systemContent, string userContent, string aiModel = "rnd", bool log = false)


Возвращает: string - ответ от AI-сервиса

Описание: Отправляет запрос к AI-сервису с системным промптом и пользовательским контентом. Если модель не указана, выбирается случайная из доступных.

Параметры:

  • systemContent - системный промпт для настройки поведения AI
  • userContent - пользовательский запрос или контент для обработки
  • aiModel - модель AI для использования (по умолчанию "rnd" - случайная)
  • log - включить логирование запроса
Пример:

C#:
 string systemPrompt = "Ты помощник по программированию";

string userQuery = "Объясни что такое циклы в C#";

string response = ai.Query(systemPrompt, userQuery, "deepseek-ai/DeepSeek-R1-0528"); project.SendInfoToLog($"Ответ AI: {response}", false);
GenerateTweet(string content, string bio = "", bool log = false)

Возвращает: string - сгенерированный текст твита (до 220 символов)

Описание: Генерирует твит на основе переданного контента и биографии аккаунта. Автоматически проверяет длину и перегенерирует при превышении лимита.

Параметры:

  • content - контент или тема для твита
  • bio - биография аккаунта для персонализации стиля (необязательно)
  • log - включить логирование
Пример:

C#:
 string tweetContent = "Новости из мира криптовалют";

string accountBio = "Криптоэнтузиаст и блокчейн-разработчик";

string tweet = ai.GenerateTweet(tweetContent, accountBio); project.SendInfoToLog($"Сгенерирован твит: {tweet}", false);
OptimizeCode(string content, bool log = false)

Возвращает: string - оптимизированный код

Описание: Оптимизирует переданный код с точки зрения веб3-разработки. Возвращает только чистый код без объяснений и комментариев.

Параметры:

  • content - исходный код для оптимизации
  • log - включить логирование
Пример:

C#:
 string originalCode = "function transfer(address, amount) { /* неоптимальный код */ }";

string optimizedCode = ai.OptimizeCode(originalCode, true);
GoogleAppeal(bool log = false)

Возвращает: string - текст обращения в службу поддержки Google (до 200 символов)

Описание: Генерирует обращение в службу поддержки Google для разблокировки аккаунта. Имитирует стиль обычного пользователя с небольшими грамматическими ошибками.

Параметры:

  • log - включить логирование
Пример:

C#:
 string appealMessage = ai.GoogleAppeal(); project.SendInfoToLog($"Обращение в Google: {appealMessage}", false);

//отправить сообщение в форму поддержки
BinanceApi
Класс для работы с API биржи Binance в ZennoPoster. Позволяет выводить средства, получать информацию о балансах и истории выводов. Автоматически обрабатывает авторизацию и подпись запросов.

Конструкторы
BinanceApi(IZennoPosterProjectModel project, bool log = false)

Создает новый экземпляр класса для работы с Binance API.

Параметры:

  • project - модель проекта ZennoPoster
  • log - включить ли логирование (по умолчанию false)
Пример:

C#:
 var binanceApi = new BinanceApi(project, log: true); //создать экземпляр с включенным логированием
Методы
string Withdraw(string coin, string network, string address, string amount)
Возвращает:
Ответ сервера в виде JSON строки

Выполняет вывод криптовалюты на указанный адрес через выбранную сеть.

Параметры:

  • coin - символ монеты (например, "USDT")
  • network - название сети (например, "ethereum", "bsc", "arbitrum")
  • address - адрес кошелька для вывода
  • amount - сумма вывода
Пример:

C#:
 string result = binanceApi.Withdraw("USDT", "ethereum", "0x742d35Cc6565C42c3928...", "100"); project.SendInfoToLog($"Результат вывода: {result}");
Dictionary<string, string> GetUserAsset()
Возвращает:
Словарь с балансами всех активов (ключ - символ монеты, значение - доступный баланс)

Получает информацию о всех балансах пользователя.

Пример:

C#:
 var balances = binanceApi.GetUserAsset(); foreach(var balance in balances) { project.SendInfoToLog($"{balance.Key}: {balance.Value}"); //вывести баланс каждой монеты

}
string GetUserAsset(string coin)
Возвращает:
Доступный баланс указанной монеты в виде строки

Получает баланс конкретной криптовалюты.

Параметры:

  • coin - символ монеты
Пример:

C#:
 string usdtBalance = binanceApi.GetUserAsset("USDT"); project.SendInfoToLog($"Баланс USDT: {usdtBalance}");
List GetWithdrawHistory()
Возвращает:
Список строк с историей выводов в формате "id:amount:coin:status"

Получает полную историю всех выводов.

Пример:

C#:
 var history = binanceApi.GetWithdrawHistory(); foreach(string withdrawal in history) { project.SendInfoToLog($"Вывод: {withdrawal}");

//показать каждую транзакцию

}
string GetWithdrawHistory(string searchId = "")
Возвращает:
Информацию о конкретной транзакции или "NoIdFound: {searchId}"

Поиск конкретной транзакции вывода по ID.

Параметры:

  • searchId - ID транзакции для поиска (необязательный)
Пример:

C#:
 string transaction = binanceApi.GetWithdrawHistory("12345"); if(!transaction.Contains("NoIdFound")) { project.SendInfoToLog($"Найдена транзакция: {transaction}");

}
DMail
Класс для работы с почтовым сервисом DMail. Позволяет авторизоваться в системе, получать список писем, читать сообщения, отмечать их как прочитанные или перемещать в корзину.

Конструкторы
DMail(IZennoPosterProjectModel project, string key = null, bool log = false)

Создает новый экземпляр класса DMail.

Параметры:

  • project - проект ZennoPoster
  • key - приватный ключ кошелька (необязательно, может быть получен из базы данных проекта)
  • log - включить логирование (по умолчанию false)
Пример:

C#:
 //создать экземпляр без логирования

var dmail = new DMail(project);

//создать экземпляр с логированием и указанным ключом

var dmail = new DMail(project, "your_private_key", true);
Публичные методы
CheckAuth() : void

Проверяет и устанавливает авторизацию в системе DMail. Автоматически пытается получить данные авторизации из переменных проекта "encstring" и "pid" или выполнить повторную авторизацию c помощью приватного ключа из ДБ

Возвращаемое значение: нет

Описание: Проверяет наличие токенов авторизации и при необходимости выполняет процедуру входа в систему.

Пример:

C#:
var dmail = new DMail(project); //проверить авторизацию

dmail.CheckAuth();
GetAll() : dynamic
Получает список всех писем из папки "Входящие".

Возвращаемое значение: динамический объект с массивом писем

Описание: Загружает первые 20 писем из папки входящих сообщений.

Пример:

C#:
 var dmail = new DMail(project); //получить все письма

dynamic allMails = dmail.GetAll(); project.SendInfoToLog($"Получено писем: {allMails.Count}");
ReadMsg(int index = 0, dynamic mail = null, bool markAsRead = true, bool trash = true) : Dictionary<string, string>
Читает конкретное письмо по индексу.

Возвращаемое значение: словарь с данными письма (отправитель, дата, тема, содержимое, идентификаторы)

Описание: Извлекает содержимое письма и опционально отмечает его как прочитанное или перемещает в корзину.

Параметры:

  • index - индекс письма в списке (по умолчанию 0)
  • mail - объект с письмами (если не указан, использует последний загруженный список)
  • markAsRead - отметить как прочитанное (по умолчанию true)
  • trash - переместить в корзину (по умолчанию true)
Пример:

C#:
 var dmail = new DMail(project); dmail.GetAll(); //прочитать первое письмо без удаления

var message = dmail.ReadMsg(0, markAsRead: true, trash: false); project.SendInfoToLog($"От: {message["sender"]}, Тема: {message["subj"]}");
GetUnread(bool parse = false, string key = null) : string
Получает информацию о непрочитанных сообщениях.

Возвращаемое значение: JSON-строка с информацией или конкретное значение, если указан ключ

Описание: Возвращает статистику непрочитанных писем и использования почтового ящика.

Параметры:

  • parse - парсировать ответ (по умолчанию false)
  • key - конкретный ключ для извлечения ("mail_unread_count", "message_unread_count", "not_read_count", "used_total_size")
Пример:

C#:
 var dmail = new DMail(project); //получить количество непрочитанных писем

string unreadCount = dmail.GetUnread(key: "mail_unread_count"); project.SendInfoToLog($"Непрочитанных писем: {unreadCount}");

//получить полную информацию

string fullInfo = dmail.GetUnread(); project.SendInfoToLog($"Полная статистика: {fullInfo}");
Trash(int index = 0, string dm_scid = null, string dm_smid = null) : void
Перемещает письмо в корзину.

Возвращаемое значение: нет

Описание: Перемещает указанное письмо из папки "Входящие" в корзину.

Параметры:

  • index - индекс письма (по умолчанию 0)
  • dm_scid - идентификатор беседы (если не указан, получает автоматически)
  • dm_smid - идентификатор сообщения (если не указан, получает автоматически)
Пример:

C#:
 var dmail = new DMail(project); dmail.GetAll(); //переместить первое письмо в корзину

dmail.Trash(0);
MarkAsRead(int index = 0, string dm_scid = null, string dm_smid = null) : void
Отмечает письмо как прочитанное.

Возвращаемое значение: нет

Описание: Изменяет статус письма на "прочитано" без перемещения в корзину.

Параметры:

  • index - индекс письма (по умолчанию 0)
  • dm_scid - идентификатор беседы (если не указан, получает автоматически)
  • dm_smid - идентификатор сообщения (если не указан, получает автоматически)
Пример:

C#:
 var dmail = new DMail(project); dmail.GetAll(); //отметить первое письмо как прочитанное

dmail.MarkAsRead(0);
FirstMail
Класс для работы с API сервиса временной почты FirstMail. Позволяет получать письма, извлекать из них коды подтверждения и ссылки.

Конструкторы
FirstMail(IZennoPosterProjectModel project, bool log = false)

Создает новый экземпляр класса FirstMail.

Параметры:

  • project (IZennoPosterProjectModel) - проект ZennoPoster
  • log (bool) - включить логирование (по умолчанию false)
Пример:

C#:
 // создать экземпляр без логирования

var firstMail = new FirstMail(project);

// создать экземпляр с логированием

var firstMail = new FirstMail(project, true);
Методы
GetMail(string email)

Получает последнее письмо для указанного email адреса и загружает его в JSON объект проекта.

Возвращает: string - JSON ответ от API

Параметры:

  • email (string) - email адрес для получения писем
Пример:

C#:
 // получить последнее письмо

string jsonResponse = firstMail.GetMail("[EMAIL]user@example.com[/EMAIL]");

// данные письма теперь доступны через project.Json

string subject = project.Json.subject; // тема письма

string text = project.Json.text; // текст письма
GetOTP(string email)
Извлекает 6-значный код подтверждения из последнего письма. Ищет код в теме, тексте и HTML содержимом письма.

Возвращает: string - найденный 6-значный код

Параметры:

  • email (string) - email адрес для поиска кода
Пример:

C#:
 try { // получить код подтверждения

string otpCode = firstMail.GetOTP("[EMAIL]user@example.com[/EMAIL]"); project.SendInfoToLog($"Получен код: {otpCode}");

} catch (Exception ex) { project.SendErrorToLog($"Ошибка получения кода: {ex.Message}");

}
GetLink(string email)
Извлекает первую найденную ссылку (http/https) из текста последнего письма.

Возвращает: string - найденная ссылка

Параметры:

  • email (string) - email адрес для поиска ссылки
Пример:

C#:
 try { // получить ссылку из письма

string link = firstMail.GetLink("[EMAIL]user@example.com[/EMAIL]"); project.SendInfoToLog($"Найдена ссылка: {link}");

// можно использовать ссылку для перехода

tab.Navigate(link); } catch (Exception ex) { project.SendErrorToLog($"Ссылка не найдена: {ex.Message}");

}
Delete(string email, bool seen = false)
Удаляет письма для указанного email адреса.

Возвращает: string - JSON ответ от API

Параметры:

  • email (string) - email адрес
  • seen (bool) - удалить только прочитанные письма (по умолчанию false)
Пример:

C#:
 // удалить все письма

string result = firstMail.Delete("[EMAIL]user@example.com[/EMAIL]");

// удалить только прочитанные письма

string result = firstMail.Delete("[EMAIL]user@example.com[/EMAIL]", true);
GetOne(string email)
Получает одно последнее письмо для указанного email адреса.

Возвращает: string - JSON ответ от API

Параметры:

  • email (string) - email адрес
Пример:

C#:
 // получить одно письмо

string message = firstMail.GetOne("[EMAIL]user@example.com[/EMAIL]"); project.Json.FromString(message);
GetAll(string email)
Получает все письма для указанного email адреса.

Возвращает: string - JSON ответ от API с массивом писем

Параметры:

  • email (string) - email адрес
Пример:

C#:
 // получить все письма

string allMessages = firstMail.GetAll("[EMAIL]user@example.com[/EMAIL]"); project.Json.FromString(allMessages);

// обработать каждое письмо в цикле

for (int i = 0; i < project.Json.messages.Count; i++) { string subject = project.Json.messages[i].subject; project.SendInfoToLog($"Письмо {i}: {subject}");

}
Galxe
Класс для работы с платформой Galxe. Позволяет парсить задания на странице, получать информацию о пользователе и лояльные очки через GraphQL API.

Конструкторы
Galxe(IZennoPosterProjectModel project, Instance instance, bool log = false)

Создает новый экземпляр класса Galxe.

Параметры:

  • project (IZennoPosterProjectModel) - проект ZennoPoster
  • instance (Instance) - экземпляр браузера
  • log (bool) - включить логирование (по умолчанию false)
Пример:

C#:
 // создать экземпляр для работы с Galxe

var galxe = new Galxe(project, instance);

// создать экземпляр с логированием

var galxe = new Galxe(project, instance, true);
Методы
ParseTasks(string type = "tasksUnComplete", bool log = false)

Парсит задания на текущей странице Galxe и возвращает список элементов в зависимости от типа.

Возвращает: List<HtmlElement> - список найденных элементов заданий

Параметры:

  • type (string) - тип заданий для возврата: "tasksComplete", "tasksUnComplete", "reqComplete", "reqUnComplete", "refComplete", "refUnComplete" (по умолчанию "tasksUnComplete")
  • log (bool) - включить логирование (по умолчанию false)
Пример:

C#:
 // получить невыполненные задания

var uncompletedTasks = galxe.ParseTasks("tasksUnComplete"); project.SendInfoToLog($"Найдено невыполненных заданий: {uncompletedTasks.Count}");

// получить выполненные требования

var completedRequirements = galxe.ParseTasks("reqComplete");

// пройти по всем невыполненным заданиям

foreach (var task in uncompletedTasks) { project.SendInfoToLog($"Задание: {task.InnerText}");

// кликнуть по заданию

task.Click(); }
BasicUserInfo(string token, string address)
Получает базовую информацию о пользователе через GraphQL API Galxe.

Возвращает: string - JSON ответ с информацией о пользователе или null при ошибке

Параметры:

  • token (string) - токен авторизации
  • address (string) - адрес кошелька пользователя
Пример:

C#:
 string userToken = "Bearer your_token_here"; string walletAddress = "0x1234567890abcdef...";

// получить информацию о пользователе

string userInfo = galxe.BasicUserInfo(userToken, walletAddress);

if (userInfo != null) { project.Json.FromString(userInfo);

// извлечь данные пользователя

string username = project.Json.data.addressInfo.username; string userLevel = project.Json.data.addressInfo.userLevel.level.name; int experience = project.Json.data.addressInfo.userLevel.exp;

project.SendInfoToLog($"Пользователь: {username}, Уровень: {userLevel}, Опыт: {experience}");

} else { project.SendErrorToLog("Не удалось получить информацию о пользователе");

}
GetLoyaltyPoints(string alias, string address)
Получает информацию о лояльных очках пользователя в конкретном пространстве Galxe.

Возвращает: string - JSON ответ с информацией об очках лояльности или null при ошибке

Параметры:

  • alias (string) - псевдоним (алиас) пространства в Galxe
  • address (string) - адрес кошелька пользователя
Пример:

C#:
 string spaceAlias = "example-space"; string walletAddress = "0x1234567890abcdef...";

// получить очки лояльности

string loyaltyInfo = galxe.GetLoyaltyPoints(spaceAlias, walletAddress);

if (loyaltyInfo != null) { project.Json.FromString(loyaltyInfo);

// извлечь данные об очках

int points = project.Json.data.space.addressLoyaltyPoints.points; int rank = project.Json.data.space.addressLoyaltyPoints.rank;

project.SendInfoToLog($"Очки лояльности: {points}, Ранг: {rank}");

} else { project.SendErrorToLog("Не удалось получить очки лояльности");

}
GazZip
Класс для выполнения операций межсетевого перевода токенов (рефьюел) через протокол GasZip. Позволяет автоматически находить подходящую сеть с достаточным балансом и выполнять переводы в указанную целевую сеть.

Конструкторы
GazZip(IZennoPosterProjectModel project, string key = null, bool log = false)

Создает новый экземпляр класса GazZip для работы с межсетевыми переводами.

Параметры:

  • project - проект ZennoPoster для работы с логами и переменными
  • key - ключ для операций (опционально)
  • log - включить подробное логирование операций
Пример:

C#:
 // создать экземпляр с логированием

var gazZip = new GazZip(project, log: true);

// создать экземпляр без логирования

var gazZip = new GazZip(project);
Методы
Refuel(string chainTo, decimal value, string rpc = null, bool log = false)
Возвращает:
string - хеш транзакции или сообщение об ошибке

Выполняет межсетевой перевод указанной суммы ETH в целевую сеть через протокол GasZip.

Параметры:

  • chainTo - целевая сеть (поддерживает: "sepolia", "soneum", "bsc", "gravity", "zero", "opbnb" или hex-адрес)
  • value - сумма для перевода в ETH
  • rpc - RPC эндпоинт исходной сети (если не указан, автоматически выбирается подходящая)
  • log - включить детальное логирование процесса
Пример:

C#:
 var gazZip = new GazZip(project, log: true);

// автоматический выбор исходной сети

string txHash = gazZip.Refuel("sepolia", 0.001m); project.SendInfoToLog($"Транзакция: {txHash}");

// использование конкретной исходной сети

string rpcUrl = "[URL]https://rpc.ankr.com/eth[/URL]"; string result = gazZip.Refuel("bsc", 0.005m, rpcUrl, true);

if (result.StartsWith("fail:")) { project.SendErrorToLog($"Ошибка: {result}");

} else { project.SendInfoToLog($"Успешно: {result}");

}
GitHubApi
Класс для работы с GitHub API, позволяющий управлять репозиториями, коллабораторами и их правами доступа. Предоставляет простые методы для создания репозиториев, изменения их видимости, добавления и удаления участников проекта.

Конструкторы
GitHubApi(string token, string username)

Создает новый экземпляр для работы с GitHub API.

Параметры:

  • token - токен доступа к GitHub API
  • username - имя пользователя GitHub
Пример:

C#:
 //создать подключение к GitHub API

var github = new GitHubApi("your_token_here", "your_username");
Методы
GetRepositoryInfo(string repoName)
Возвращает:
string - информация о репозитории в формате JSON или сообщение об ошибке

Получает подробную информацию о указанном репозитории.

Параметры:

  • repoName - название репозитория
Пример:

C#:
 //получить информацию о репозитории

string repoInfo = github.GetRepositoryInfo("my-project"); project.SendInfoToLog(repoInfo);
GetCollaborators(string repoName)
Возвращает:
string - список коллабораторов в формате JSON или сообщение об ошибке

Получает список всех участников репозитория.

Параметры:

  • repoName - название репозитория
Пример:

C#:
 //получить список участников репозитория

string collaborators = github.GetCollaborators("my-project"); project.SendInfoToLog(collaborators);
CreateRepository(string repoName)
Возвращает:
string - данные созданного репозитория в формате JSON или сообщение об ошибке

Создает новый приватный репозиторий.

Параметры:

  • repoName - название нового репозитория
Пример:

C#:
 //создать новый приватный репозиторий

string result = github.CreateRepository("new-project"); project.SendInfoToLog("Репозиторий создан: " + result);
ChangeVisibility(string repoName, bool makePrivate)
Возвращает:
string - результат операции в формате JSON или сообщение об ошибке

Изменяет видимость репозитория (публичный/приватный).

Параметры:

  • repoName - название репозитория
  • makePrivate - true для приватного, false для публичного
Пример:

C#:
 //сделать репозиторий публичным

string result = github.ChangeVisibility("my-project", false); project.SendInfoToLog("Видимость изменена: " + result);
AddCollaborator(string repoName, string collaboratorUsername, string permission = "pull")
Возвращает:
string - результат операции в формате JSON или сообщение об ошибке

Добавляет нового участника в репозиторий с указанными правами.

Параметры:

  • repoName - название репозитория
  • collaboratorUsername - имя пользователя нового участника
  • permission - права доступа: "pull", "push", "admin", "maintain", "triage" (по умолчанию "pull")
Пример:

C#:
 //добавить участника с правами на запись

string result = github.AddCollaborator("my-project", "developer123", "push"); project.SendInfoToLog("Участник добавлен: " + result);
RemoveCollaborator(string repoName, string collaboratorUsername)
Возвращает:
string - результат операции или сообщение об ошибке

Удаляет участника из репозитория.

Параметры:

  • repoName - название репозитория
  • collaboratorUsername - имя пользователя для удаления
Пример:

C#:
 //удалить участника из репозитория

string result = github.RemoveCollaborator("my-project", "old-developer"); project.SendInfoToLog("Участник удален: " + result);
ChangeCollaboratorPermission(string repoName, string collaboratorUsername, string permission = "pull")
Возвращает:
string - результат операции или сообщение об ошибке

Изменяет права доступа существующего участника репозитория.

Параметры:

  • repoName - название репозитория
  • collaboratorUsername - имя пользователя
  • permission - новые права: "pull", "push", "admin", "maintain", "triage" (по умолчанию "pull")
Пример:

C#:
 //изменить права участника на администраторские

string result = github.ChangeCollaboratorPermission("my-project", "developer123", "admin"); project.SendInfoToLog("Права изменены: " + result);
OkxApi
Класс для работы с OKX API, предоставляющий функциональность для управления криптовалютными счетами, субсчетами, выводом средств и получением рыночных данных.

Конструктор
OkxApi(IZennoPosterProjectModel project, bool log = false)

Создает новый экземпляр OkxApi для работы с биржей OKX.

Параметры:

  • project - экземпляр проекта ZennoPoster
  • log - включить ли логирование (по умолчанию false)
C#:
 // Создание экземпляра OkxApi

var okx = new OkxApi(project, log: true);
Методы
OKXGetSubAccs(string proxy = null, bool log = false)
Возвращает:
List<string> - список имен субсчетов

Получает список всех субсчетов на основном аккаунте OKX.

Параметры:

  • proxy - прокси для запроса (необязательно)
  • log - включить логирование (по умолчанию false)
C#:
 // Получить список всех субсчетов

var subAccounts = okx.OKXGetSubAccs(); foreach (string subName in subAccounts) { project.SendInfoToLog($"Найден субсчет: {subName}");

}
OKXGetSubMax(string accName, string proxy = null, bool log = false)
Возвращает:
List<string> - список в формате "валюта:максимальная_сумма_вывода"

Получает максимальные суммы для вывода с торгового счета указанного субаккаунта.

Параметры:

  • accName - имя субаккаунта
  • proxy - прокси для запроса (необязательно)
  • log - включить логирование (по умолчанию false)
C#:
 // Получить максимальные суммы для вывода с торгового счета

var maxWithdrawals = okx.OKXGetSubMax("sub1"); foreach (string balance in maxWithdrawals) { project.SendInfoToLog($"Доступно для вывода: {balance}");

}
OKXGetSubTrading(string accName, string proxy = null, bool log = false)
Возвращает:
List<string> - список торговых балансов

Получает торговые балансы указанного субаккаунта.

Параметры:

  • accName - имя субаккаунта
  • proxy - прокси для запроса (необязательно)
  • log - включить логирование (по умолчанию false)
C#:
 // Получить торговые балансы субсчета

var tradingBalances = okx.OKXGetSubTrading("sub1");
OKXGetSubFunding(string accName, string proxy = null, bool log = false)
Возвращает:
List<string> - список в формате "валюта:доступный_баланс"

Получает балансы фандинг-счета указанного субаккаунта.

Параметры:

  • accName - имя субаккаунта
  • proxy - прокси для запроса (необязательно)
  • log - включить логирование (по умолчанию false)
C#:
 // Получить балансы фандинг-счета

var fundingBalances = okx.OKXGetSubFunding("sub1"); foreach (string balance in fundingBalances) { string[] parts = balance.Split(':'); project.SendInfoToLog($"Валюта: {parts[0]}, Баланс: {parts[1]}");

}
OKXGetSubsBal(string proxy = null, bool log = false)
Возвращает:
List<string> - список в формате "субсчет:валюта:баланс"

Получает все ненулевые балансы со всех субсчетов (как с фандинг, так и с торговых счетов).

Параметры:

  • proxy - прокси для запроса (необязательно)
  • log - включить логирование (по умолчанию false)
C#:
 // Получить все балансы со всех субсчетов

var allBalances = okx.OKXGetSubsBal(log: true); foreach (string balance in allBalances) { project.SendInfoToLog($"Баланс: {balance}");

}
OKXWithdraw(string toAddress, string currency, string chain, decimal amount, decimal fee, string proxy = null, bool log = false)
Возвращает:
void

Выводит криптовалюту на указанный адрес.

Параметры:

  • toAddress - адрес получателя
  • currency - валюта для вывода (например, "USDT")
  • chain - блокчейн сеть (ethereum, bsc, polygon и др.)
  • amount - сумма для вывода
  • fee - комиссия за вывод
  • proxy - прокси для запроса (необязательно)
  • log - включить логирование (по умолчанию false)
C#:
 // Вывести 100 USDT на Ethereum

okx.OKXWithdraw( "0x1234567890abcdef1234567890abcdef12345678", "USDT", "ethereum", 100m, 1m );
OKXCreateSub(string subName, string accountType = "1", string proxy = null, bool log = false)
Возвращает:
void

Создает новый субаккаунт.

Параметры:

  • subName - имя нового субаккаунта
  • accountType - тип аккаунта (по умолчанию "1")
  • proxy - прокси для запроса (необязательно)
  • log - включить логирование (по умолчанию false)
C#:
 // Создать новый субаккаунт

okx.OKXCreateSub("myNewSubAccount");
OKXDrainSubs()
Возвращает:
void

Переводит все доступные средства со всех субсчетов на основной счет.

C#:
 // Собрать все средства с субсчетов на основной счет

okx.OKXDrainSubs();
OKXAddMaxSubs()
Возвращает:
void

Создает максимально возможное количество субсчетов до достижения лимита.

C#:
 // Создать максимальное количество субсчетов

okx.OKXAddMaxSubs();
OKXPrice(string pair, string proxy = null, bool log = false)
Возвращает:
T - цена в указанном типе данных

Получает текущую рыночную цену торговой пары.

Параметры:

  • pair - торговая пара (например, "BTC-USDT")
  • proxy - прокси для запроса (необязательно)
  • log - включить логирование (по умолчанию false)
C#:
 // Получить цену BTC в USDT как decimal

decimal btcPrice = okx.OKXPrice("BTC-USDT"); project.SendInfoToLog($"Цена BTC: {btcPrice} USDT");

// Получить цену как строку

string priceString = okx.OKXPrice("ETH-USDT");
UnlockApi
Класс для работы с Unlock Protocol смарт-контрактами в блокчейне Optimism. Позволяет получать информацию о владельцах NFT-ключей и времени истечения их действия.

Конструкторы
UnlockApi(IZennoPosterProjectModel project, bool log = false)

Создает новый экземпляр UnlockApi для работы с Unlock Protocol.

Параметры:

  • project - ссылка на проект ZennoPoster для логирования
  • log - включить дополнительное логирование (по умолчанию false)
Пример:

C#:
 //создать экземпляр UnlockApi

var unlockApi = new UnlockApi(project, true);
Методы
string keyExpirationTimestampFor(string addressTo, int tokenId, bool decode = true)
Возвращает:
string - временную метку истечения ключа

Получает временную метку истечения действия NFT-ключа по его ID.

Параметры:

  • addressTo - адрес смарт-контракта Unlock
  • tokenId - ID токена (ключа)
  • decode - декодировать результат в читаемый формат (по умолчанию true)
Пример:

C#:
 //получить время истечения ключа с ID 1

string expiration = unlockApi.keyExpirationTimestampFor("0x1234567890abcdef", 1); project.SendInfoToLog($"Ключ истекает: {expiration}");
string ownerOf(string addressTo, int tokenId, bool decode = true)
Возвращает:
string - адрес владельца ключа

Получает адрес владельца NFT-ключа по его ID.

Параметры:

  • addressTo - адрес смарт-контракта Unlock
  • tokenId - ID токена (ключа)
  • decode - декодировать результат в читаемый формат (по умолчанию true)
Пример:

C#:
 //получить владельца ключа с ID 1

string owner = unlockApi.ownerOf("0x1234567890abcdef", 1); project.SendInfoToLog($"Владелец ключа: {owner}");
string Decode(string toDecode, string function)
Возвращает:
string - декодированное значение

Декодирует результат вызова функции смарт-контракта из HEX формата в читаемый вид.

Параметры:

  • toDecode - HEX строка для декодирования
  • function - имя функции для определения типа декодирования
Пример:

C#:
 //декодировать HEX результат

string result = unlockApi.Decode("0x000000000000000000000000a1b2c3d4e5f6", "ownerOf"); project.SendInfoToLog($"Декодированный результат: {result}");
Dictionary<string, string> Holders(string contract)
Возвращает:
Dictionary<string, string> - словарь где ключ это адрес владельца, значение - время истечения

Получает всех держателей NFT-ключей контракта и время истечения их ключей.

Параметры:

  • contract - адрес смарт-контракта Unlock
Пример:

C#:
 //получить всех держателей ключей

var holders = unlockApi.Holders("0x1234567890abcdef"); foreach(var holder in holders) { //вывести информацию о каждом держателе

project.SendInfoToLog($"Владелец: {holder.Key}, истекает: {holder.Value}");

}
ProjectExtensions
Набор расширений для project . Методы для расширения Exсpetions с подробной трассирповкой исключений, упрощенные методы для работы с FileSystem, методы для формирования отчетов (успешных и не очень), в логи, БД, телеграмм и даже скриншот, методы для получения вских рандомов - от ожидания из настроек до рандомного инвайта из диапазона в БД, методы для упрощенной работы с переменными проекта локальтными и глобальными, и пачка других утилит не попавших под категоризацию
TracedException
Специализированный класс исключения, который автоматически собирает информацию о месте возникновения ошибки и вызывающем методе для упрощения отладки.

Конструкторы
TracedException(Exception, string)
Создает новое исключение с трассировкой на основе исходного исключения.

Параметры:

  • innerException (Exception) - Исходное исключение, которое нужно обернуть
  • caller (string, необязательный) - Имя вызывающего метода
C#:
 try { // какой-то код, который может выдать ошибку

var result = SomeMethod(); } catch (Exception ex) { //создать трассируемое исключение

var tracedException = new TracedException(ex, "MyMethod"); throw tracedException; }
ExceptionExtensions
Набор методов расширения для работы с исключениями, позволяющий легко логировать и выбрасывать ошибки с трассировкой.

Методы
Throw(Exception, IZennoPosterProjectModel, string, bool)
Возвращаемое значение:
string - Сообщение об ошибке

Обрабатывает исключение: логирует его и либо выбрасывает, либо возвращает сообщение об ошибке.

Параметры:

  • ex (Exception) - Исключение для обработки
  • project (IZennoPosterProjectModel) - Объект проекта для логирования
  • caller (string, необязательный) - Имя вызывающего метода (заполняется автоматически)
  • throwEx (bool, по умолчанию true) - Выбрасывать ли исключение после логирования
C#:
 try { // код, который может выдать ошибку

DoSomething(); } catch (Exception ex) { //логировать и выбросить исключение

ex.Throw(project); }

//или только залогировать без выброса исключения

try { DoSomething(); } catch (Exception ex) { //получить сообщение об ошибке без выброса исключения

string errorMessage = ex.Throw(project, throwEx: false); project.SendInfoToLog("Ошибка обработана: " + errorMessage);

}
Throw(Exception, string)
Возвращаемое значение:
Exception - Трассируемое исключение

Создает и выбрасывает трассируемое исключение на основе исходного.

Параметры:

  • ex (Exception) - Исключение для обработки
  • caller (string, необязательный) - Имя вызывающего метода (заполняется автоматически)
C#:
 try { // код, который может выдать ошибку

DoSomething(); } catch (Exception ex) { //создать и выбросить трассируемое исключение

ex.Throw(); }
Throw(IZennoPosterProjectModel, string, string)
Возвращаемое значение:
Exception - Трассируемое исключение

Создает и выбрасывает новое исключение с указанным сообщением, логируя информацию о последнем выполненном действии.

Параметры:

  • project (IZennoPosterProjectModel) - Объект проекта
  • exMessage (string, необязательный) - Сообщение об ошибке
  • caller (string, необязательный) - Имя вызывающего метода (заполняется автоматически)
C#:
 //проверить условие и выбросить ошибку при необходимости

if (someCondition) { project.Throw("Критическая ошибка: условие не выполнено");

}
Throw(IZennoPosterProjectModel, Exception, string)
Возвращаемое значение:
Exception - Трассируемое исключение

Обрабатывает существующее исключение, логирует его с информацией о последнем действии и выбрасывает трассируемую версию.

Параметры:

  • project (IZennoPosterProjectModel) - Объект проекта
  • ex (Exception) - Исключение для обработки
  • caller (string, необязательный) - Имя вызывающего метода (заполняется автоматически)
C#:
 try { // код, который может выдать ошибку

DoSomething(); } catch (Exception ex) { //обработать и выбросить с логированием контекста проекта

project.Throw(ex); }
Класс FS
Упрощенные методы для управления файлами и директориями

Конструкторы
FS(IZennoPosterProjectModel project, bool log = false)
Создает новый экземпляр класса FS.

Параметры:

  • project - экземпляр проекта ZennoPoster
  • log - включить логирование (по умолчанию false)
Пример использования:

C#:
 // создание экземпляра без логирования

var fs = new FS(project);

// создание экземпляра с включенным логированием

var fs = new FS(project, true);
Методы
void RmRf(string path)
Рекурсивно удаляет директорию со всем содержимым.

Параметры:

  • path - путь к удаляемой директории
Пример использования:

C#:
 var fs = new FS(project); //удалить директорию с файлами

fs.RmRf(@"C:\temp\folder");
void CopyDir(string sourceDir, string destDir)
Копирует директорию со всем содержимым в указанное место.

Параметры:
  • sourceDir - путь к исходной директории
  • destDir - путь к целевой директории
Пример использования:

C#:
 var fs = new FS(project); //скопировать папку с файлами

fs.CopyDir(@"C:\source", @"C:\destination");
string GetRandomFile(string directoryPath)
Возвращает: случайный файл из указанной директории или null, если файлы не найдены

Получает случайный файл из директории, включая подпапки.

Параметры:

  • directoryPath - путь к директории для поиска файлов
Пример использования:

C#:
 //получить случайный файл из папки

string randomFile = FS.GetRandomFile(@"C:\images"); if (randomFile != null) { project.SendInfoToLog("Выбран файл: " + randomFile);

}
string GetNewCreds(string dataType)
Возвращает: строку с учетными данными или null при ошибке

Получает новые учетные данные из файла fresh и перемещает их в файл used.

Параметры:
  • dataType - тип данных для получения (имя файла без расширения)
Пример использования:

C#:
 var fs = new FS(project, true); //получить новый аккаунт из $"{_project.Path}.data\fresh\{dataType}.txt"

string account = fs.GetNewCreds("twitter"); if (account != null) { project.SendInfoToLog("Получен аккаунт: " + account);

} else { project.SendWarningToLog("Аккаунты закончились");

}
Reporter
Класс для создания отчётов об ошибках и успешных операциях . Позволяет создавать отчёты в различных форматах и отправлять уведомления в Telegram.

Конструкторы
Reporter(IZennoPosterProjectModel project, Instance instance, bool log = false, string classEmoji = null)
Создаёт новый экземпляр класса Reporter для работы с отчётами.

Параметры:

  • project - объект проекта ZennoPoster
  • instance - экземпляр браузера
  • log - флаг включения логирования (по умолчанию false)
  • classEmoji - эмодзи для класса (по умолчанию null)
C#:
 //создание объекта Reporter

var reporter = new Reporter(project, instance);

//создание с дополнительными параметрами

var reporter = new Reporter(project, instance, true, "");
Методы
ErrorReport(bool toTg = false, bool toDb = false, bool screensot = false)
Возвращаемое значение:
string - текстовый отчёт об ошибке

Создаёт подробный отчёт о последней ошибке в проекте и выполняет дополнительные действия по настройке.

Параметры:

  • toTg - отправить отчёт в Telegram (по умолчанию false)
  • toDb - обновить статус в базе данных (по умолчанию false)
  • screensot - создать скриншот страницы (по умолчанию false)
C#:
 //создание простого отчёта об ошибке

string errorReport = reporter.ErrorReport(); project.SendInfoToLog("Отчёт об ошибке: " + errorReport);

//создание отчёта с отправкой в Telegram и скриншотом

string fullReport = reporter.ErrorReport(toTg: true, screensot: true);

//создание отчёта с обновлением базы данных

string dbReport = reporter.ErrorReport(toDb: true);
SuccessReport(bool log = false, bool ToTg = false)
Возвращаемое значение:
string - текстовый отчёт об успешном выполнении

Создаёт отчёт об успешном завершении операции с информацией о времени выполнения.

Параметры:

  • log - вывести отчёт в лог (по умолчанию false)
  • ToTg - отправить отчёт в Telegram (по умолчанию false)
C#:
 //создание простого отчёта об успехе

string successReport = reporter.SuccessReport();

//создание отчёта с выводом в лог

string loggedReport = reporter.SuccessReport(log: true);

//создание отчёта с отправкой в Telegram

string tgReport = reporter.SuccessReport(ToTg: true);
Класс Rnd
Статический класс для генерации различных случайных значений: строк, чисел, никнеймов и других данных

Методы
Seed()
Возвращаемое значение: string

Описание: Генерирует мнемоническую фразу из 12 слов на английском языке

C#:
 string mnemonic = Rnd.Seed(); project.SendInfoToLog($"Generated mnemonic: {mnemonic}");
RndHexString(int length)
Возвращаемое значение: string

Описание: Генерирует случайную hex-строку заданной длины с префиксом "0x"

Параметры:

  • length (int) - длина генерируемой hex-строки (без учета префикса "0x")
C#:
 string hexString = Rnd.RndHexString(8); project.SendInfoToLog($"Generated hex: {hexString}"); // Например: 0x1a2b3c4d
RndString(int length)
Возвращаемое значение: string

Описание: Генерирует случайную строку из букв и цифр заданной длины

Параметры:

  • length (int) - длина генерируемой строки
C#:
 string randomString = Rnd.RndString(10); project.SendInfoToLog($"Random string: {randomString}"); // Например: Kj8Xm2Qr9Z
RndNickname()
Возвращаемое значение: string

Описание: Генерирует случайный никнейм из прилагательного, существительного и суффикса (максимум 15 символов)

C#:
 string nickname = Rnd.RndNickname(); project.SendInfoToLog($"Generated nickname: {nickname}"); // Например: MysticWolfX
RndInvite(this IZennoPosterProjectModel project, object limit = null, bool log = false)
Возвращаемое значение: string

Описание: Получает случайный реферальный код из базы данных или использует существующий из переменной cfgRefCode

Параметры:

  • limit (object, опционально) - максимальный ID записи для выборки
  • log (bool) - включить логирование (по умолчанию false)
C#:
 string refCode = project.RndInvite(100, true); project.SendInfoToLog($"Using ref code: {refCode}");
RndPercent(decimal input, double percent, double maxPercent)
Возвращаемое значение: double

Описание: Вычисляет процент от числа с случайным уменьшением до максимального процента

Параметры:

  • input (decimal) - исходное число
  • percent (double) - процент от числа (0-100)
  • maxPercent (double) - максимальный процент случайного уменьшения (0-100)
C#:
 double result = Rnd.RndPercent(1000m, 50, 10); project.SendInfoToLog($"Result: {result}"); // 50% от 1000 с уменьшением до 10%
RndDecimal(this IZennoPosterProjectModel project, string Var)
Возвращаемое значение: decimal

Описание: Получает случайное decimal число из переменной проекта (поддерживает диапазон через дефис)

Параметры:

  • Var (string) - имя переменной проекта
C#:
 // Переменная содержит "10.5-20.7"

decimal randomDecimal = project.RndDecimal("myRange"); project.SendInfoToLog($"Random decimal: {randomDecimal}");
RndInt(this IZennoPosterProjectModel project, string Var)
Возвращаемое значение: int

Описание: Получает случайное целое число из переменной проекта (поддерживает диапазон через дефис)

Параметры:

  • Var (string) - имя переменной проекта
C#:
 // Переменная содержит "5-15"

int randomInt = project.RndInt("myIntRange"); project.SendInfoToLog($"Random integer: {randomInt}");
RndBool(this int truePercent)
Возвращаемое значение: bool

Описание: Возвращает случайное булево значение с заданной вероятностью true в процентах

Параметры:

  • truePercent (int) - вероятность получить true в процентах (0-100)
C#:
 bool result = 75.RndBool(); // 75% вероятность получить true

project.SendInfoToLog($"Random bool: {result}");
Utils
Статический класс с вспомогательными методами

Методы
L0g
Отправляет сообщение в лог проекта. (Короткая статическая обертка для логгера)

Параметры:

  • toLog (string) - сообщение для записи в лог
  • callerName (string, опционально) - имя вызывающего метода (заполняется автоматически)
  • show (bool, по умолчанию true) - показывать ли сообщение в интерфейсе
  • thr0w (bool, по умолчанию false) - выбрасывать ли исключение
  • toZp (bool, по умолчанию true) - отправлять ли в ZennoPoster
Пример использования:

C#:
 //отправить простое сообщение в лог

project.L0g("Операция выполнена успешно");

//отправить сообщение без отображения в интерфейсе

project.L0g("Отладочное сообщение", show: false);
Range
Обрабатывает диапазон аккаунтов и устанавливает соответствующие переменные проекта.

Возвращает: int - конечное значение диапазона

Параметры:

  • accRange (string, опционально) - строка диапазона, если не указана, берется из переменной cfgAccRange
  • output (string, опционально) - не используется в текущей реализации
  • log (bool, по умолчанию false) - выводить ли информацию в лог
Пример использования:

C#:
 //обработать диапазон из переменной проекта

int maxRange = project.Range();

//обработать конкретный диапазон

int maxRange = project.Range("1-10");

//обработать список аккаунтов

int maxRange = project.Range("1,5,8,12");
Clean
Очищает ресурсы браузера и профиля после завершения работы.

Параметры:
  • instance (Instance) - экземпляр браузера для очистки
Пример использования:

C#:
 //очистить ресурсы браузера

project.Clean(instance);
Finish
Завершает работу с аккаунтом, сохраняет данные и отправляет уведомления.

Параметры:
  • instance (Instance) - экземпляр браузера
Пример использования:

C#:
 //корректно завершить работу с аккаунтом

project.Finish(instance);

ObsoleteCode
Выводит предупреждение об использовании устаревшего кода со стеком

Параметры:
  • newName (string, по умолчанию "unknown") - рекомендуемый новый метод
Пример использования:

C#:
 //предупредить об устаревшем коде

project.ObsoleteCode("NewMethod.DoSomething");
RunZp
Выполняет другой проект ZennoPoster с передачей переменных.

Возвращает: bool - результат выполнения проекта

Параметры:
  • vars (List, опционально) - список имен переменных для передачи
Пример использования:

C#:
 //выполнить проект без передачи переменных

bool result = project.RunZp();

//выполнить проект с передачей переменных

var varsToPass = new List { "var1", "var2", "login" }; bool result = project.RunZp(varsToPass);
Vars - Работа с переменными проекта
Утилиты для упрощения работы с переменными

Методы
Var(string Var)
Возвращает: string

Получает значение переменной проекта по имени. Если переменная не существует, возвращает пустую строку.

Параметры:

  • Var - имя переменной
Пример использования:

C#:
 string userLogin = project.Var("userLogin"); project.SendInfoToLog($"Логин пользователя: {userLogin}");
Var(string var, object value)
Возвращает: string

Устанавливает значение переменной проекта. Возвращает пустую строку.

Параметры:

  • var - имя переменной
  • value - значение для установки
Пример использования:

C#:
 //установить значение переменной

project.Var("userLogin", "myusername123"); project.Var("userAge", 25);
VarRnd(string Var)
Возвращает: string

Обрабатывает переменную как диапазон (формат "мин-макс") и возвращает случайное число из этого диапазона. Если переменная не содержит диапазон, возвращает её значение без изменений.

Параметры:

  • Var - имя переменной
Пример использования:

C#:
 //если переменная delay содержит "5-10", получим случайное число от 5 до 10

string randomDelay = project.VarRnd("delay"); project.SendInfoToLog($"Случайная задержка: {randomDelay} секунд");
VarCounter(string varName, int input)
Возвращает: int

Увеличивает числовое значение переменной на указанное число и возвращает новое значение.

Параметры:

  • varName - имя переменной-счётчика
  • input - число для добавления (может быть отрицательным)
Пример использования:

C#:
 //увеличить счётчик попыток на 1

int attempts = project.VarCounter("loginAttempts", +1); project.SendInfoToLog($"Попытка входа номер: {attempts}");
project.VarCounter("loginAttemptsLeft", -1);
VarsMath(string varA, string operation, string varB, string varRslt = null)
Возвращает: decimal

Выполняет математические операции между двумя переменными. Поддерживает операции: +, -, *, /

Параметры:

  • varA - имя первой переменной
  • operation - математическая операция ("+", "-", "*", "/")
  • varB - имя второй переменной
  • varRslt - имя переменной для сохранения результата (необязательно)
Пример использования:

C#:
 //сложить значения двух переменных и сохранить результат

decimal sum = project.VarsMath("price", "+", "tax", "totalPrice"); project.SendInfoToLog($"Общая сумма: {sum}");
Constantas - Константы и настройки проекта
Методы для получения системных констант и настроек проекта.

Методы
ProjectName()
Возвращает: string

Получает имя текущего проекта из пути к файлу скрипта и сохраняет в переменную "projectName".

Пример использования:

C#:
 string name = project.ProjectName(); project.SendInfoToLog($"Имя проекта: {name}");
ProjectTable()
Возвращает: string

Генерирует имя таблицы для проекта в формате "__ИмяПроекта" и сохраняет в переменную "projectTable".

Пример использования:

C#:
 string tableName = project.ProjectTable(); project.SendInfoToLog($"Имя таблицы: {tableName}");
SessionId()
Возвращает: string

Генерирует уникальный идентификатор сессии и сохраняет в переменную "sessionId".

Пример использования:

C#:
 string sessionId = project.SessionId(); project.SendInfoToLog($"ID сессии: {sessionId}");
CaptchaModule()
Возвращает: string

Получает настройки модуля капчи из глобальных переменных. Если не получается то из настроек и записывает глобально в формате "CAPTCHA_ИмяПроекта".

Пример использования:

C#:
 try { string captchaModule = project.CaptchaModule(); project.SendInfoToLog($"Модуль капчи: {captchaModule}");

} catch (Exception ex) { project.SendErrorToLog($"Ошибка получения модуля капчи: {ex.Message}");

}
GVars - Глобальные переменные
Утилиты для работы с глобальными переменными и управления потоками выполнения.

Методы
GVar(string var)
Возвращает: string

Получает значение глобальной переменной. Имя переменной автоматически формируется как "_ИмяПроекта_ИмяПеременной". Идентичная Var функция для глобальных пеерменных

Параметры:

  • var - имя переменной
Пример использования:

C#:
 string globalConfig = project.GVar("config"); project.SendInfoToLog($"Глобальная конфигурация: {globalConfig}");
GVar(string var, object value)
Возвращает: string

Устанавливает значение глобальной переменной. Возвращает пустую строку.

Параметры:

  • var - имя переменной
  • value - значение для установки
Пример использования:

C#:
 //установить глобальную настройку

project.GVar("maxThreads", 5); project.GVar("status", "running");
GGetBusyList(bool log = false)
Возвращает: List<string>

Получает список занятых аккаунтов в формате "номер:значение". Проверяет глобальные переменные от acc1 до rangeEnd.

Параметры:

  • log - выводить информацию в лог (по умолчанию false)
Пример использования:

C#:
 var busyAccounts = project.GGetBusyList(true); foreach (var account in busyAccounts) { project.SendInfoToLog($"Занятый аккаунт: {account}");

}
GSetAcc(string input = null, bool force = false, bool log = false)
Возвращает: bool

Привязывает текущий поток к аккаунту через глобальные переменные. Возвращает true при успешной привязке.

Параметры:

  • input - значение для привязки (по умолчанию имя проекта)
  • force - принудительная привязка даже если аккаунт занят (по умолчанию false)
  • log - выводить информацию в лог (по умолчанию false)
Пример использования:

C#:
 //попробовать привязать аккаунт

if (project.GSetAcc("MyBot_v1.0", false, true)) { } else { project.SendWarningToLog("Не удалось привязать аккаунт");

}
GClean(bool log = false)
Возвращает: List<int>

Очищает все глобальные переменные аккаунтов (от acc1 до rangeEnd). Возвращает список номеров очищенных аккаунтов.

Параметры:

  • log - выводить информацию в лог (по умолчанию false)
Пример использования:

C#:
 //очистить все привязки аккаунтов

var cleanedAccounts = project.GClean(true); project.SendInfoToLog($"Очищено {cleanedAccounts.Count} аккаунтов");
OtherExtensions
Методы расширений для разных объектов (В текущей реализации тут только строки)
StringExtensions - Методы расширения для работы со строками
Статический класс с методами расширения для строк, предоставляющий удобные функции для работы с криптографией, блокчейн-данными, парсингом и другими распространенными операциями.
EscapeMarkdown
Возвращаемое значение: string - строка с экранированными символами разметки Markdown

Экранирует специальные символы Markdown в строке, добавляя перед ними обратный слэш.

Параметры:

  • text (string) - исходная строка для экранирования
Пример использования:

C#:
 string text = "Текст с [I]жирным[/I] и [I]курсивом[/I]";

string escaped = text.EscapeMarkdown(); project.SendInfoToLog(escaped); // Текст с *жирным* и _курсивом_
GetTxHash
Возвращаемое значение: string - хеш транзакции из ссылки

Извлекает хеш транзакции из URL-ссылки, беря последнюю часть после слэша.

Параметры:

  • link (string) - ссылка на транзакцию
Пример использования:

C#:
 string url = "[URL]https://etherscan.io/tx/0x1234567890abcdef[/URL]"; string hash = url.GetTxHash(); project.SendInfoToLog(hash); // 0x1234567890abcdef
ToPubEvm
Возвращаемое значение: string - публичный адрес Ethereum

Преобразует приватный ключ или seed-фразу в публичный адрес Ethereum.

Параметры:

  • key (string) - приватный ключ в hex формате или seed-фраза
Пример использования:

C#:
 string privateKey = "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"; string address = privateKey.ToPubEvm(); project.SendInfoToLog($"Адрес: {address}");
ToSecp256k1
Возвращаемое значение: string - приватный ключ в hex формате

Генерирует приватный ключ из seed-фразы по указанному пути деривации.

Параметры:

  • seed (string) - seed-фраза для генерации ключа
  • path (int, по умолчанию: 0) - индекс пути деривации
Пример использования:

C#:
 string seedPhrase = "word1 word2 word3 word4 word5 word6 word7 word8 word9 word10 word11 word12"; string privateKey = seedPhrase.ToSecp256k1(0); project.SendInfoToLog($"Приватный ключ: {privateKey}");
ToEvmPrivateKey
Возвращаемое значение: string - приватный ключ в hex формате

Создает приватный ключ из произвольной строки используя SHA256 хеширование.

Параметры:

  • input (string) - исходная строка для генерации ключа
Пример использования:

C#:
 string password = "мойпароль123";

string privateKey = password.ToEvmPrivateKey(); project.SendInfoToLog($"Сгенерированный ключ: {privateKey}");
TxToString
Возвращаемое значение: string[] - массив строк с данными транзакции

Парсит JSON данные транзакции и возвращает основные параметры в удобном формате.

Параметры:

  • txJson (string) - JSON строка с данными транзакции
Пример использования:

C#:
 string txJson = "{"gas":"0x5208","value":"0x0","from":"0x123...","to":"0x456...","data":"0x"}"; string[] txData = txJson.TxToString(); //txData[0] - gas, txData[1] - value, txData[2] - sender, txData[3] - data, txData[4] - recipient, txData[5] - gas в gwei

project.SendInfoToLog($"Gas: {txData[0]}, От: {txData[2]}");
ChkAddress
Возвращаемое значение: bool - результат проверки соответствия

Проверяет соответствие сокращенного адреса (с символом …) полному адресу.

Параметры:

  • shortAddress (string) - сокращенный адрес вида "0x1234…5678"
  • fullAddress (string) - полный адрес для проверки
Пример использования:

C#:
 string shortAddr = "0x1234…5678"; string fullAddr = "0x1234567890abcdef1234567890abcdef12345678"; bool isMatch = shortAddr.ChkAddress(fullAddr); project.SendInfoToLog($"Адреса совпадают: {isMatch}");
ParseCreds
Возвращаемое значение: Dictionary<string, string> - словарь с разобранными данными

Разбирает строку с данными по заданному формату с разделителями.

Параметры:

  • data (string) - строка данных для разбора
  • format (string) - формат с названиями полей в фигурных скобках
  • devider (char, по умолчанию: ':') - символ-разделитель
Пример использования:

C#:
 string data = "admin:password123:[EMAIL]user@email.com[/EMAIL]"; string format = "{login}:{password}:{email}"; var parsed = data.ParseCreds(format, ':'); project.SendInfoToLog($"Логин: {parsed["login"]}, Email: {parsed["email"]}");
ParseByMask
Возвращаемое значение: Dictionary<string, string> - словарь с извлеченными значениями

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

Параметры:

  • input (string) - исходная строка для парсинга
  • mask (string) - маска с переменными в фигурных скобках
Пример использования:

C#:
 string text = "Пользователь John имеет баланс 100.50";

string mask = "Пользователь {name} имеет баланс {balance}";

var result = text.ParseByMask(mask); project.SendInfoToLog($"Имя: {result["name"]}, Баланс: {result["balance"]}");
StringToHex
Возвращаемое значение: string - число в hex формате с префиксом 0x

Преобразует строковое число в hex формат с возможностью конвертации единиц измерения.

Параметры:

  • value (string) - числовое значение в виде строки
  • convert (string, по умолчанию: "") - тип конвертации: "gwei", "eth" или пустая строка
Пример использования:

C#:
 string amount = "1.5"; string hexEth = amount.StringToHex("eth"); string hexGwei = amount.StringToHex("gwei"); project.SendInfoToLog("1.5ETH=hexEth");project.SendInfoToLog("1.5 GWEI = {hexGwei}");
HexToString
Возвращаемое значение: string - числовое значение в виде строки

Преобразует hex значение в строку с возможностью конвертации единиц измерения.

Параметры:

  • hexValue (string) - hex значение (с префиксом 0x или без)
  • convert (string, по умолчанию: "") - тип конвертации: "gwei", "eth" или пустая строка
Пример использования:

C#:
 string hexValue = "0x1C9C380"; string ethAmount = hexValue.HexToString("eth"); string gweiAmount = hexValue.HexToString("gwei"); project.SendInfoToLog($"Значение в ETH: {ethAmount}");

project.SendInfoToLog($"Значение в GWEI: {gweiAmount}");
Range
Возвращаемое значение: string[] - массив строковых чисел

Создает массив чисел из диапазона или списка, заданного строкой.

Параметры:

  • accRange (string) - диапазон в формате "1-10", список "1,2,3,5" или одно число "10"
Пример использования:

C#:
 string range1 = "1-5"; string[] numbers1 = range1.Range(); // ["1", "2", "3", "4", "5"]

string range2 = "1,3,5,7"; string[] numbers2 = range2.Range(); // ["1", "3", "5", "7"]

string range3 = "3"; string[] numbers3 = range3.Range(); // ["1", "2", "3"]

project.SendInfoToLog($"Диапазон: {string.Join(", ", numbers1)}");
KeyType
Возвращаемое значение: string - тип ключа: "keyEvm", "keySol" или "seed"

Определяет тип ключа или seed-фразы по формату строки.

Параметры:

  • input (string) - строка с ключом или seed-фразой
Пример использования:

C#:
 string evmKey = "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"; string seedPhrase = "word1 word2 word3 word4 word5 word6 word7 word8 word9 word10 word11 word12"; string type1 = evmKey.KeyType(); // "keyEvm" string type2 = seedPhrase.KeyType(); // "seed" project.SendInfoToLog($"Тип ключа: {type1}");
GetLink
Возвращаемое значение: string - извлеченная ссылка

Извлекает URL-ссылку из текста.

Параметры:

  • text (string) - текст, содержащий ссылку
Пример использования:

C#:
 string message = "Перейдите по ссылке [URL='https://example.com/']https://example.com[/URL] для подтверждения";

string link = message.GetLink(); project.SendInfoToLog($"Найденная ссылка: {link}");
GetOTP
Возвращаемое значение: string - найденный OTP код

Извлекает 6-значный OTP код из текста.

Параметры:

  • text (string) - текст, содержащий OTP код
Пример использования:

C#:
 string smsText = "Ваш код подтверждения: 123456. Никому не сообщайте его";

string otp = smsText.GetOTP(); project.SendInfoToLog($"OTP код: {otp}"); // 123456
CleanFilePath
Возвращаемое значение: string - строка без недопустимых символов

Удаляет из строки символы, недопустимые для имен файлов.

Параметры:

  • text (string) - исходная строка для очистки
Пример использования:

C#:
 string fileName = "Файл<с>недопустимыми:символами?.txt";

string cleanName = fileName.CleanFilePath(); project.SendInfoToLog($"Очищенное имя: {cleanName}"); // ФайлснедопустимымисимволамиТХТ
ConvertUrl
Возвращаемое значение: string - отформатированные параметры URL

Извлекает и форматирует параметры из URL, с особой обработкой параметра addEthereumChainParameter.

Параметры:

  • url (string) - URL для парсинга
  • oneline (bool, по умолчанию: false) - выводить результат в одну строку
Пример использования:

C#:
 string url = "[URL='https://example.com/?param1=value1&param2=value2']https://example.com?param1=value1&param2=value2[/URL]"; string formatted = url.ConvertUrl(); string oneline = url.ConvertUrl(true); project.SendInfoToLog($"Параметры:\n{formatted}");

project.SendInfoToLog($"В одну строку: {oneline}");
NewPassword
Возвращаемое значение: string - сгенерированный пароль

Генерирует случайный пароль заданной длины, содержащий символы всех типов.

Параметры:

  • length (int) - длина пароля (минимум 8 символов)
Пример использования:

C#:
 string password = StringExtensions.NewPassword(12); project.SendInfoToLog($"Сгенерированный пароль: {password}");
Requests
Набор методов HTTP-запросов через Net.Http, а так же методов-надстроек над штатным http клиентом позволяюшие работать с запросами с минимальным количеством кода с автопарсингом json обработкой исключений и разными приятными плюшками.
NetHttp
Класс для выполнения HTTP запросов через Net.Http с поддержкой прокси, кастомных заголовков и автоматического логирования. Предоставляет удобный интерфейс для работы с веб-сервисами и API.

Конструктор
NetHttp(IZennoPosterProjectModel project, bool log = false)

Создает новый экземпляр класса NetHttp.

Параметры:

  • project - экземпляр проекта ZennoPoster
  • log - включить логирование запросов (по умолчанию false)
Пример:

C#:
 var httpClient = new NetHttp(project, true); //создать клиент с логированием
Методы
GET(string url, string proxyString = "", Dictionary<string, string> headers = null, bool parse = false, int deadline = 15, bool throwOnFail = false)
Возвращает:
string - ответ сервера

Выполняет GET запрос к указанному URL.

Параметры:

  • url - адрес для запроса
  • proxyString - строка прокси (формат: "ip:port" или "user:pass@ip:port")
  • headers - дополнительные HTTP заголовки
  • parse - автоматически парсить JSON ответ
  • deadline - таймаут запроса в секундах
  • throwOnFail - выбрасывать исключение при ошибке
Пример:

C#:
 var headers = new Dictionary<string, string> { {"Authorization", "Bearer token123"} }; string response = httpClient.GET("[URL]https://api.example.com/data[/URL]", "+", headers, true); //получить данные с авторизацией и парсингом JSON

project.SendInfoToLog(response);
POST(string url, string body, string proxyString = "", Dictionary<string, string> headers = null, bool parse = false, int deadline = 15, string callerName = "", bool throwOnFail = false)
Возвращает:
string - ответ сервера

Выполняет POST запрос с передачей данных в теле запроса.

Параметры:

  • url - адрес для запроса
  • body - тело запроса (обычно JSON)
  • proxyString - строка прокси
  • headers - дополнительные HTTP заголовки
  • parse - автоматически парсить JSON ответ
  • deadline - таймаут запроса в секундах
  • callerName - имя вызывающего метода для логирования
  • throwOnFail - выбрасывать исключение при ошибке
Пример:

C#:
 string jsonData = "{"name":"test","value":123}"; var headers = new Dictionary<string, string> { {"Content-Type", "application/json"} }; string response = httpClient.POST("[URL]https://api.example.com/create[/URL]", jsonData, "+", headers); //отправить JSON данные на сервер

project.SendInfoToLog("Ответ: " + response);
PUT(string url, string body = "", string proxyString = "", Dictionary<string, string> headers = null, bool parse = false, string callerName = "")
Возвращает:
string - ответ сервера

Выполняет PUT запрос для обновления данных на сервере.

Параметры:

  • url - адрес для запроса
  • body - тело запроса (необязательно)
  • proxyString - строка прокси
  • headers - дополнительные HTTP заголовки
  • parse - автоматически парсить JSON ответ
  • callerName - имя вызывающего метода для логирования
Пример:

C#:
 string updateData = "{"id":1,"status":"active"}"; string response = httpClient.PUT("[URL]https://api.example.com/update/1[/URL]", updateData, "+"); //обновить запись с id=1

project.SendInfoToLog("Обновлено: " + response);
DELETE(string url, string proxyString = "", Dictionary<string, string> headers = null, string callerName = "")
Возвращает:
string - ответ сервера

Выполняет DELETE запрос для удаления данных на сервере.

Параметры:

  • url - адрес для запроса
  • proxyString - строка прокси
  • headers - дополнительные HTTP заголовки
  • callerName - имя вызывающего метода для логирования
Пример:

C#:
 string response = httpClient.DELETE("[URL]https://api.example.com/delete/1[/URL]", "+"); //удалить запись с id=1

project.SendInfoToLog("Удалено: " + response);
CheckProxy(string proxyString = null)
Возвращает:
bool - true если прокси работает корректно

Проверяет работоспособность прокси, сравнивая IP адреса с прокси и без него.

Параметры:

  • proxyString - строка прокси для проверки (если null, берется из базы данных)
Пример:

C#:
 bool isProxyWorking = httpClient.CheckProxy("192.168.1.1:8080"); if (isProxyWorking) { } else { project.SendWarningToLog("Прокси не работает");

}
ProxySet(Instance instance, string proxyString = null)
Возвращает:
bool - true если прокси успешно установлен

Проверяет и устанавливает прокси для экземпляра браузера.

Параметры:

  • instance - экземпляр браузера для установки прокси
  • proxyString - строка прокси (если null, берется из базы данных)
Пример:

C#:
 bool proxySet = httpClient.ProxySet(instance, "user:pass@192.168.1.1:8080"); if (proxySet) { } else { project.SendErrorToLog("Не удалось установить прокси");

}
Requests
Расширения для выполнения HTTP-запросов в ZennoPoster с поддержкой прокси, логирования и автоматической обработки JSON. Предоставляет удобные методы GET и POST с настраиваемыми параметрами и обработкой ошибок.

Методы
GET
Возвращает:
string - ответ сервера или пустую строку при ошибке

Выполняет HTTP GET-запрос к указанному URL с возможностью настройки прокси, заголовков и таймаута.

Параметры:

  • url (string) - URL для запроса
  • proxy (string, необязательный) - прокси в формате "ip:port" или "login:pass@ip:port", символ "+" для автоматического получения из переменных
  • headers (string[], необязательный) - массив заголовков HTTP
  • log (bool, необязательный) - включить логирование запроса и ответа
  • parseJson (bool, необязательный) - автоматически парсить JSON-ответ
  • deadline (int, необязательный) - таймаут в секундах (по умолчанию 15)
  • throwOnFail (bool, необязательный) - выбрасывать исключение при ошибке
Пример использования:

C#:
 //простой GET-запрос

string response = project.GET("[URL]https://api.example.com/data[/URL]");

//запрос с прокси и логированием

string response = project.GET("[URL]https://api.example.com/data[/URL]", proxy: "192.168.1.1:8080", log: true);

//запрос с заголовками и JSON-парсингом

string[] headers = {"Authorization: Bearer token123"}; string response = project.GET("[URL]https://api.example.com/user[/URL]", headers: headers, parseJson: true);

//запрос с автоматическим прокси

string response = project.GET("[URL]https://api.example.com/data[/URL]", proxy: "+", deadline: 30);
POST
Возвращает:
string - ответ сервера или пустую строку при ошибке

Выполняет HTTP POST-запрос к указанному URL с телом запроса и настраиваемыми параметрами.

Параметры:

  • url (string) - URL для запроса
  • body (string) - тело POST-запроса
  • proxy (string, необязательный) - прокси в формате "ip:port" или "login:pass@ip:port", символ "+" для автоматического получения
  • headers (string[], необязательный) - массив заголовков HTTP
  • log (bool, необязательный) - включить логирование запроса и ответа
  • parseJson (bool, необязательный) - автоматически парсить JSON-ответ
  • deadline (int, необязательный) - таймаут в секундах (по умолчанию 15)
  • throwOnFail (bool, необязательный) - выбрасывать исключение при ошибке
Пример использования:

C#:
 //простой POST-запрос с JSON

string jsonData = "{"name":"test","value":123}"; string response = project.POST("[URL]https://api.example.com/create[/URL]", jsonData);

//POST с прокси и логированием

string response = project.POST("[URL]https://api.example.com/update[/URL]", body: jsonData, proxy: "user:pass@192.168.1.1:8080", log: true);

//POST с заголовками авторизации

string[] headers = {"Authorization: Bearer token123", "Content-Type: application/json"}; string response = project.POST("[URL]https://api.example.com/secure[/URL]", body: jsonData, headers: headers, parseJson: true);
SetProxy
Возвращает:
void

Устанавливает прокси для экземпляра браузера с проверкой корректности работы. Проверяет изменение IP-адреса для подтверждения работы прокси.

Параметры:

  • instance (Instance) - экземпляр браузера для настройки прокси
  • proxyString (string, необязательный) - строка прокси, если не указана - берется автоматически
Пример использования:

C#:
 //установка прокси для текущего экземпляра

project.SetProxy(instance);

//установка конкретного прокси

project.SetProxy(instance, "192.168.1.1:8080");

//установка прокси с авторизацией

project.SetProxy(instance, "user:pass@192.168.1.1:8080");
Socials
Коллекция классов для управления аккаунтами Discord, GitHub, Google, Twitter/X и Guild.xyz. Авторизация, аутентификация, парсинг данных, специфичные методы для работы с социалками.
Discord
Класс для автоматизации работы с Discord в ZennoPoster. Предоставляет методы для загрузки учетных данных из базы данных, авторизации в Discord и получения списка серверов.

Конструкторы
Discord(IZennoPosterProjectModel project, Instance instance, bool log = false)

Создает новый экземпляр класса Discord.

Параметры:

  • project - экземпляр проекта ZennoPoster
  • instance - экземпляр браузера
  • log - включить логирование (по умолчанию false)
Пример:

C#:
 var discord = new Discord(project, instance, true); //создать экземпляр Discord с включенным логированием
Методы
CredsFromDb()
Возвращает:
string - статус аккаунта Discord

Загружает данные Discord аккаунта из базы данных и сохраняет их в переменные проекта.

Пример:

C#:
 string status = discord.CredsFromDb(); //загрузить данные аккаунта из БД

project.SendInfoToLog($"Статус аккаунта: {status}");
Log(string tolog = "", string callerName = "", bool log = false)
Возвращает:
void

Отправляет сообщение в лог проекта с префиксом Discord.

Параметры:

  • tolog - текст сообщения для лога
  • callerName - имя вызывающего метода (заполняется автоматически)
  • log - принудительно показать лог даже если отключен
Пример:

C#:
 discord.Log("Начинаем авторизацию", log: true);

//отправить сообщение в лог с принудительным показом
DSload(bool log = false)
Возвращает:
string - результат загрузки (статус или имя пользователя)

Выполняет полную процедуру авторизации в Discord: загружает страницу, пытается авторизоваться по токену, при неудаче выполняет вход по логину/паролю.

Параметры:

  • log - включить дополнительное логирование
Пример:

C#:
 string result = discord.DSload(true); //авторизоваться в Discord

if (result == "ok" || result.Contains("@")) { }
DSservers()
Возвращает:
string - список серверов через запятую

Получает список всех серверов Discord, к которым подключен текущий аккаунт, включая серверы в папках.

Пример:

C#:
 string servers = discord.DSservers(); //получить список серверов

project.SendInfoToLog($"Серверы: {servers}");
GitHub
Класс для автоматизации работы с GitHub аккаунтами, включая авторизацию, двухфакторную аутентификацию и управление паролями.

Конструкторы
GitHub(IZennoPosterProjectModel project, Instance instance, bool log = false)

Создает новый экземпляр класса GitHub с автоматической загрузкой учетных данных.

Параметры:

  • project - экземпляр проекта ZennoPoster
  • instance - экземпляр браузера
  • log - включить логирование (по умолчанию false)
Пример:

C#:
 var github = new GitHub(project, instance, true);
Методы
void LoadCreds()

Загружает учетные данные GitHub из базы данных и сохраняет их в переменные проекта.

Пример:

C#:
 github.LoadCreds();
void InputCreds()
Вводит учетные данные на странице входа GitHub и обрабатывает двухфакторную аутентификацию.

Пример:

C#:
 github.InputCreds();
void Go()
Переходит на страницу входа GitHub и принимает cookies если необходимо.

Пример:

C#:
 github.Go();
void Verify2fa()
Выполняет верификацию двухфакторной аутентификации с использованием OTP кода.

Пример:

C#:
 github.Verify2fa();
string Load()
Возвращает:
имя текущего пользователя GitHub

Выполняет полный процесс входа в аккаунт GitHub с проверкой корректности авторизации и сохранением cookies.

Пример:

C#:
 string currentUser = github.Load(); project.SendInfoToLog($"Вошли как: {currentUser}");
string Current()
Возвращает:
имя текущего авторизованного пользователя

Получает имя текущего пользователя из навигационного меню GitHub.

Пример:

C#:
 string username = github.Current(); project.SendInfoToLog($"Текущий пользователь: {username}");
void ChangePass(string password = null)
Изменяет пароль аккаунта GitHub через функцию восстановления пароля с использованием email.

Параметры:

  • password - новый пароль (не используется в текущей реализации)
Пример:

C#:
 github.ChangePass();
void SaveCookies()
Сохраняет текущие cookies браузера в базу данных для последующего использования.

Пример:

C#:
 github.SaveCookies();
Google
Класс для автоматизации работы с аккаунтами Google. Загружает данные аккаунта из базы данных, выполняет авторизацию с обходом различных проверок безопасности и сохраняет куки для последующего использования.

Конструкторы
Google(IZennoPosterProjectModel project, Instance instance, bool log = false)

Создает новый экземпляр класса для работы с Google аккаунтом.

Параметры:

  • project - текущий проект ZennoPoster
  • instance - экземпляр браузера для работы
  • log - включить подробное логирование (по умолчанию false)
Пример:

C#:
 //создание экземпляра для работы с Google

Google google = new Google(project, instance, log: true);
Публичные методы
string Load(bool log = false, bool cookieBackup = true)

Выполняет полную авторизацию в аккаунте Google с автоматическим прохождением всех проверок.

Возвращает: Строка со статусом авторизации ("ok" при успехе)

Параметры:

  • log - включить логирование процесса (по умолчанию false)
  • cookieBackup - сохранить куки после успешной авторизации (по умолчанию true)
Пример:

C#:
 //авторизация в Google аккаунте

string result = google.Load(log: true, cookieBackup: true); if (result == "ok") { } else { project.SendErrorToLog($"Ошибка авторизации: {result}");

}
string State(bool log = false)
Определяет текущее состояние страницы авторизации Google.

Возвращает: Строка с текущим состоянием (например: "ok", "inputLogin", "inputPassword", "inputOtp")

Параметры:

  • log - включить логирование (по умолчанию false)
Пример:

C#:
 //проверка текущего состояния

string currentState = google.State(); project.SendInfoToLog($"Текущее состояние: {currentState}");

//обработка разных состояний

switch (currentState) { case "ok": break; case "inputLogin": break; case "CAPTCHA": project.SendWarningToLog("Обнаружена капча");

break; }
string GAuth(bool log = false)
Выполняет авторизацию через систему Google Auth (для сторонних сервисов).

Возвращает: Строка с результатом авторизации ("SUCCESS" при успехе)

Параметры:

  • log - включить логирование (по умолчанию false)
Пример:

C#:
 //авторизация через Google Auth

string authResult = google.GAuth(log: true); if (authResult.Contains("SUCCESS")) { } else { project.SendErrorToLog($"Ошибка Google Auth: {authResult}");

}
void SaveCookies()
Сохраняет текущие куки Google в базу данных для последующего использования.

Пример:

C#:
 //сохранение кук после успешной авторизации

google.SaveCookies();
void ParseSecurity()
Парсит информацию о настройках безопасности аккаунта Google и сохраняет в базу данных.

Пример:

C#:
 //получение информации о безопасности аккаунта

google.ParseSecurity();
Guild
Класс для работы с Guild.xyz . Предоставляет возможности для парсинга ролей гильдий, анализа подключений и управления элементами интерфейса.

Конструктор
Guild(IZennoPosterProjectModel project, Instance instance, bool log = false)

Создает новый экземпляр класса Guild для работы с гильдиями.

Параметры:

  • project - проект ZennoPoster
  • instance - экземпляр браузера
  • log - включить логирование (по умолчанию false)
Пример:

C#:
 // создание экземпляра Guild с логированием

var guild = new Guild(project, instance, true);

// создание экземпляра Guild без логирования

var guild = new Guild(project, instance);
Методы
void ParseRoles(string tablename, bool append = true)

Парсит роли гильдий на текущей странице и сохраняет данные в базу данных.

Параметры:

  • tablename - имя таблицы для сохранения данных
  • append - добавлять к существующим данным или перезаписывать (по умолчанию true)
Пример:

C#:
 // парсинг ролей с добавлением к существующим данным

guild.ParseRoles("guild_data", true);

// парсинг ролей с перезаписью данных

guild.ParseRoles("guild_data", false);

// проверка результатов

string doneRoles = project.Variables["guildDone"].Value; string undoneRoles = project.Variables["guildUndone"].Value; project.SendInfoToLog($"Завершенные роли: {doneRoles}");

project.SendInfoToLog($"Незавершенные роли: {undoneRoles}");
string Svg(string d)
Возвращает:
string - тип социальной сети

Определяет тип социальной сети по SVG-коду иконки.

Параметры:

  • d - SVG-код или HTML содержимое с иконкой
Пример:

C#:
 // определение типа по SVG

string svgCode = "M108,136a16,16,0,1,1-16-16A16,16,0,0,1,108,136Z..."; string socialType = guild.Svg(svgCode); project.SendInfoToLog($"Тип социальной сети: {socialType}"); // выведет "discord"

// если тип не распознан

string unknownSvg = "some-unknown-svg-code"; string result = guild.Svg(unknownSvg); project.SendInfoToLog($"Результат: {result}"); // выведет пустую строку
string Svg(HtmlElement he)
Возвращает:
string - тип социальной сети

Определяет тип социальной сети по HTML-элементу с иконкой.

Параметры:

  • he - HTML-элемент с SVG-иконкой
Пример:

C#:
 // получение элемента с иконкой

var iconElement = instance.ActiveTab.FindElementByAttribute("div", "class", "icon-container", "text", 0);

// определение типа социальной сети

string socialType = guild.Svg(iconElement); if (!string.IsNullOrEmpty(socialType)) { project.SendInfoToLog($"Найдена иконка: {socialType}");

} else { project.SendWarningToLog("Тип социальной сети не определен");

}
Dictionary<string, string> ParseConnections()
Возвращает:
Dictionary<string, string> - словарь подключений

Парсит информацию о подключенных социальных сетях на странице.

Пример:

C#:
 // парсинг подключений

var connections = guild.ParseConnections();

// обработка результатов

foreach (var connection in connections) { string platform = connection.Key; // тип платформы (discord, twitter и т.д.)

string status = connection.Value; // статус ("none" если не подключено, или текст со статусом)

if (status == "none") { project.SendWarningToLog($"{platform} не подключен");

} else { project.SendInfoToLog($"{platform}: {status}"); } }

// проверка конкретной платформы

if (connections.ContainsKey("discord")) { project.SendInfoToLog($"Discord статус: {connections["discord"]}");

}
HtmlElement MainButton()
Возвращает:
HtmlElement - главная кнопка на странице

Находит и возвращает основную кнопку действия на странице гильдии.

Пример:

C#:
 // получение главной кнопки

var mainButton = guild.MainButton();

if (mainButton != null) { // проверка текста кнопки

string buttonText = mainButton.InnerText; project.SendInfoToLog($"Текст кнопки: {buttonText}");

// клик по кнопке

mainButton.Click(); } else { project.SendErrorToLog("Главная кнопка не найдена");

}
Класс X
Упрощённый менеджер аккаунтов Twitter/X для автоматизации входа и работы с профилем. Выполняет авторизацию через токены или данные логина, проверяет статус аккаунта, анализирует информацию профиля и настройки безопасности.

Конструкторы
X(IZennoPosterProjectModel project, Instance instance, bool log = false)


Описание: Создает экземпляр менеджера X с указанным проектом, экземпляром браузера и настройкой логирования. Автоматически загружает данные аккаунта из базы данных.

Параметры:

  • project - модель проекта ZennoPoster
  • instance - экземпляр браузера
  • log - включить/выключить подробное логирование (по умолчанию false)
Пример:

C#:
 var x = new X(project, instance, true);
Публичные методы
Load(bool log = false)


Возвращает: string - статус аккаунта ("ok", "restricted", "suspended", "emailCapcha")

Описание: Выполняет полную загрузку и авторизацию в X. Проверяет состояние аккаунта, использует сохранённый токен или выполняет вход через логин/пароль при необходимости.

Параметры:

  • log - включить подробное логирование процесса
Пример:

C#:
 string status = x.Load(true); if (status == "ok") { } else { project.SendWarningToLog($"Проблема с аккаунтом: {status}", false);

}
Auth()

Описание: Выполняет пошаговую авторизацию в X для внешних приложений через OAuth. Обрабатывает все этапы входа: ввод логина, пароля, двухфакторную аутентификацию и подтверждение доступа.

Пример:

C#:
 try { x.Auth(); } catch (Exception ex) { project.SendErrorToLog($"Ошибка авторизации: {ex.Message}", false);

}
State()

Возвращает: string - текущее состояние страницы авторизации

Описание: Определяет текущий этап процесса авторизации. Возвращает состояния: "InputLogin", "InputPass", "InputOTP", "ClickLogin", "CheckUser", "AuthV1SignIn", "AuthV1Confirm" и другие.

Пример:

C#:
 string currentState = x.State(); project.SendInfoToLog($"Текущий этап авторизации: {currentState}", false);
UpdXCreds(Dictionary<string, string> data)

Описание: Обновляет данные аккаунта в базе данных. Принимает словарь с ключами: LOGIN, PASSWORD, EMAIL, EMAIL_PASSWORD, TOKEN, CODE2FA, RECOVERY_SEED.

Параметры:

  • data - словарь с новыми данными аккаунта
Пример:

C#:
 var newData = new Dictionary<string, string> { {"LOGIN", "newusername"}, {"PASSWORD", "newpassword"}, {"EMAIL", "[EMAIL]new@email.com[/EMAIL]"} }; x.UpdXCreds(newData);
ParseProfile()

Описание: Анализирует профиль пользователя X и сохраняет данные в базу: дату создания, ID, имя пользователя, описание, местоположение, аватар, баннер, количество подписчиков и подписок.

Пример:

C#:
 x.ParseProfile();
ParseSecurity()

Описание: Парсит страницу настроек безопасности аккаунта и сохраняет информацию: email, телефон, дату создания, страну, язык, пол, дату рождения.

Пример:

C#:
 x.ParseSecurity();
Sql
Набор для работы с SQLite и PostgreSQL базами данных. Содержит высокоуровневые статичные обертки для работы с БД(получение данных, обновления, управление таблицами и колонками) и базовый dSql класс с поддержкой асинхронных операций, параметризованных запросов, и автоматического определения подходящих драйверов подключения на основе Dapper.
Класс Db
Предоставляет удобные методы для выполнения SQL-операций, управления таблицами и колонками в базах PostgreSQL и SQLite, а также миграции данных между различными типами баз данных.

Основные методы для работы с данными
DbGet
Возвращает:
string - результат SQL-запроса SELECT в виде строки

Описание: Получает данные из указанной таблицы по заданным параметрам

Параметры:

  • toGet (string) - названия колонок через запятую для получения
  • tableName (string, optional) - название таблицы (по умолчанию из переменной projectTable)
  • log (bool, optional) - логировать ли запрос (по умолчанию false)
  • throwOnEx (bool, optional) - выбрасывать ли исключения (по умолчанию false)
  • key (string, optional) - название ключевого поля (по умолчанию "id")
  • acc (string, optional) - значение для поиска (по умолчанию из переменной acc0)
  • where (string, optional) - дополнительное условие WHERE
Пример использования:

C#:
 //получить статус текущей записи

string status = project.DbGet("status");

//получить email по конкретному ID

string email = project.DbGet("email", "users", key: "user_id", acc: "123");
DbUpd
Описание:
Обновляет данные в таблице

Параметры:

  • toUpd (string) - строка обновления в формате "column1=value1, column2=value2"
  • tableName (string, optional) - название таблицы
  • log (bool, optional) - логировать ли запрос
  • throwOnEx (bool, optional) - выбрасывать ли исключения
  • last (bool, optional) - автоматически обновлять поле last текущим временем (по умолчанию true)
  • key (string, optional) - название ключевого поля
  • acc (object, optional) - значение для поиска
  • where (string, optional) - дополнительное условие WHERE
Пример использования:

C#:
 //обновить статус текущей записи

project.DbUpd("status='completed'");

//обновить несколько полей без автоматического last

project.DbUpd("email='[EMAIL]test@test.com[/EMAIL]', phone='+123456'", last: false);
DbKey
Возвращает:
string - криптографический ключ указанного типа

Описание: Получает криптографический ключ из таблицы _wallets в зависимости от типа блокчейна

Параметры:

  • chainType (string, optional) - тип блокчейна: "evm" (Ethereum), "sol" (Solana), "seed" (мнемоническая фраза)
Пример использования:

C#:
 //получить приватный ключ для EVM сетей

string evmKey = project.DbKey("evm");

//получить приватный ключ для Solana

string solKey = project.DbKey("sol");
Методы для работы с таблицами
TblAdd
Описание:
Создает новую таблицу с заданной структурой, если она не существует

Параметры:

  • tableStructure (Dictionary<string, string>) - структура таблицы (имя колонки -> тип данных)
  • tblName (string) - название таблицы
  • log (bool, optional) - логировать ли операцию
Пример использования:

C#:
 var structure = new Dictionary<string, string> { {"id", "INTEGER PRIMARY KEY"}, {"name", "TEXT DEFAULT ''"}, {"email", "TEXT DEFAULT ''"} }; project.TblAdd(structure, "users");
TblExist
Возвращает:
bool - true если таблица существует

Описание: Проверяет существование таблицы в базе данных

Параметры:

  • tblName (string) - название таблицы
  • log (bool, optional) - логировать ли операцию
Пример использования:

C#:
 //проверить существование таблицы

if (project.TblExist("users")) { }
TblColumns
Возвращает:
List<string> - список названий колонок

Описание: Получает список всех колонок в таблице

Параметры:

  • tblName (string) - название таблицы
  • log (bool, optional) - логировать ли операцию
Пример использования:

C#:
 //получить список колонок

var columns = project.TblColumns("users"); foreach(var column in columns) { project.SendInfoToLog($"Колонка: {column}");

}
TblForProject
Возвращает:
Dictionary<string, string> - структура таблицы для проекта

Описание: Создает стандартную структуру таблицы для проекта на основе переменной cfgToDo и дополнительных колонок

Параметры:

  • projectColumns (List или string[], optional) - дополнительные колонки
  • defaultType (string, optional) - тип данных по умолчанию
Пример использования:

C#:
 //создать структуру с базовыми колонками

var structure = project.TblForProject();

//добавить дополнительные колонки

var customColumns = new List {"email", "phone", "address"}; var extendedStructure = project.TblForProject(customColumns);
TblPrepareDefault
Описание:
Полная подготовка таблицы проекта - создание, добавление недостающих колонок и заполнение записями

Параметры:

  • log (bool, optional) - логировать ли операции
Пример использования:

C#:
 //подготовить таблицу проекта со всеми необходимыми полями

project.TblPrepareDefault(log: true);
Методы для работы с колонками
ClmnAdd
Описание:
Добавляет колонку(и) в существующую таблицу

Параметры:

  • clmnName (string) - название колонки ИЛИ
  • columns (string[]) - массив названий колонок ИЛИ
  • tableStructure (Dictionary<string, string>) - структура колонок
  • tblName (string) - название таблицы
  • log (bool, optional) - логировать ли операцию
  • defaultValue (string, optional) - значение по умолчанию
Пример использования:

C#:
 //добавить одну колонку

project.ClmnAdd("phone", "users");

//добавить несколько колонок

string[] newColumns = {"phone", "address", "city"}; project.ClmnAdd(newColumns, "users");
ClmnExist
Возвращает:
bool - true если колонка существует

Описание: Проверяет существование колонки в таблице

Параметры:

  • clmnName (string) - название колонки
  • tblName (string) - название таблицы
  • log (bool, optional) - логировать ли операцию
Пример использования:

C#:
 //проверить наличие колонки перед использованием

if (!project.ClmnExist("email", "users")) { project.ClmnAdd("email", "users"); }
ClmnDrop
Описание:
Удаляет колонку(и) из таблицы

Параметры:

  • clmnName (string) - название колонки ИЛИ
  • tableStructure (Dictionary<string, string>) - структура колонок для удаления
  • tblName (string) - название таблицы
  • log (bool, optional) - логировать ли операцию
Пример использования:

C#:
 //удалить одну колонку

project.ClmnDrop("old_column", "users");
Методы для миграции и диапазонов
MigrateTable
Описание:
Копирует данные из одной таблицы в другую с переименованием ключевых полей

Параметры:

  • source (string) - исходная таблица
  • dest (string) - таблица назначения
Пример использования:

C#:
 //мигрировать данные между таблицами

project.MigrateTable("old_accounts", "new_accounts");
AddRange
Описание:
Добавляет записи с ID от текущего максимального до указанного значения

Параметры:

  • tblName (string) - название таблицы
  • range (int, optional) - конечный ID (по умолчанию из переменной rangeEnd)
  • log (bool, optional) - логировать ли операцию
Пример использования:

C#:
 //заполнить таблицу записями до ID 100

project.AddRange("accounts", 100);

//использовать значение из переменной rangeEnd

project.AddRange("accounts");
DbSettings
Описание:
Загружает настройки из таблицы _settings и устанавливает их как переменные проекта

Параметры:

  • set (bool, optional) - устанавливать ли переменные (по умолчанию true)
  • log (bool, optional) - логировать ли операцию
Пример использования:

C#:
 //загрузить все настройки из базы в переменные проекта

project.DbSettings(log: true);

//только прочитать настройки без установки переменных

project.DbSettings(set: false);
Класс dSql (Dapper based)
Описание

Универсальный класс для работы с базами данных SQLite и PostgreSQL. Предоставляет единый интерфейс для подключения, выполнения запросов, миграции данных и управления таблицами. Автоматически определяет тип базы данных и использует соответствующие методы для выполнения операций. Особенно полезен для проектов, где нужна поддержка нескольких типов баз данных одновременно.

Конструкторы
dSql(string dbPath, string dbPass)
Описание:
Создает подключение к базе данных SQLite по указанному пути.

Параметры:

  • dbPath - путь к файлу базы данных SQLite
  • dbPass - пароль базы данных (в данной реализации не используется)
Пример:

C#:
 var db = new dSql(@"C:\MyProject\database.sqlite", "");
dSql(string hostname, string port, string database, string user, string password)
Описание:
Создает подключение к базе данных PostgreSQL с указанными параметрами подключения.

Параметры:

  • hostname - адрес сервера базы данных
  • port - порт подключения
  • database - имя базы данных
  • user - имя пользователя
  • password - пароль пользователя
Пример:

C#:
 var db = new dSql("localhost", "5432", "mydb", "postgres", "password123");
dSql(string connectionstring)
Описание:
Создает подключение к базе данных PostgreSQL используя строку подключения.

Параметры:

  • connectionstring - полная строка подключения к базе данных
Пример:

C#:
 string connStr = "Host=localhost;Port=5432;Database=mydb;Username=postgres;Password=pass;"; var db = new dSql(connStr);
dSql(IDbConnection connection)
Описание:
Создает экземпляр используя существующее подключение к базе данных.

Параметры:

  • connection - готовое подключение к базе данных
Пример:

C#:
 var existingConnection = new SqliteConnection("Data Source=mydb.sqlite"); var db = new dSql(existingConnection);
Публичные методы
DbReadAsync(string sql, string columnSeparator = "|", string rawSeparator = "\r\n")
Возвращает:
Task - результат запроса в виде строки

Описание: Выполняет SQL-запрос на чтение данных и возвращает результат в виде текстовой строки с настраиваемыми разделителями.

Параметры:

  • sql - SQL-запрос для выполнения
  • columnSeparator - символ для разделения колонок (по умолчанию "|")
  • rawSeparator - символ для разделения строк (по умолчанию "\r\n")
Пример:

C#:
 var db = new dSql(@"C:\data.sqlite", ""); string result = await db.DbReadAsync("SELECT name, email FROM users WHERE active = 1", "|", "\n"); project.SendInfoToLog($"Получены данные: {result}", false);
DbRead(string sql, string separator = "|")
Возвращает:
string - результат запроса в виде строки

Описание: Синхронная версия DbReadAsync. Выполняет SQL-запрос на чтение данных.

Параметры:

  • sql - SQL-запрос для выполнения
  • separator - разделитель для колонок (по умолчанию "|")
Пример:

C#:
 var db = new dSql("localhost", "5432", "testdb", "user", "pass"); string users = db.DbRead("SELECT id, username FROM accounts LIMIT 10"); project.SendInfoToLog($"Список пользователей: {users}", false);
DbWriteAsync(string sql, params IDbDataParameter[] parameters)
Возвращает:
Task - количество затронутых строк

Описание: Выполняет SQL-запрос для записи, обновления или удаления данных с возможностью использования параметров.

Параметры:

  • sql - SQL-запрос для выполнения
  • parameters - параметры запроса для безопасной передачи значений
Пример:

C#:
 var db = new dSql(@"C:\accounts.sqlite", ""); var param = db.CreateParameter("@username", "john_doe"); int affected = await db.DbWriteAsync("UPDATE users SET last_login = NOW() WHERE username = @username", param); project.SendInfoToLog($"Обновлено записей: {affected}", false);
DbWrite(string sql, params IDbDataParameter[] parameters)
Возвращает:
int - количество затронутых строк

Описание: Синхронная версия DbWriteAsync. Выполняет запросы на изменение данных.

Параметры:

  • sql - SQL-запрос для выполнения
  • parameters - параметры запроса
Пример:

C#:
 var db = new dSql("localhost", "5432", "mydb", "admin", "secret"); var nameParam = db.CreateParameter("@name", "Новый пользователь");

var emailParam = db.CreateParameter("@email", "[EMAIL]user@example.com[/EMAIL]"); int result = db.DbWrite("INSERT INTO users (name, email) VALUES (@name, @email)", nameParam, emailParam); project.SendInfoToLog($"Добавлено записей: {result}", false);
CreateParameter(string name, object value)
Возвращает:
IDbDataParameter - параметр для SQL-запроса

Описание: Создает параметр для безопасной передачи значений в SQL-запросы, автоматически подбирая правильный тип в зависимости от типа базы данных.

Параметры:

  • name - имя параметра (например "@username")
  • value - значение параметра
Пример:

C#:
 var db = new dSql(@"C:\test.sqlite", ""); var param1 = db.CreateParameter("@userId", 123); var param2 = db.CreateParameter("@status", "active"); //использование параметров в запросе

int result = db.DbWrite("UPDATE accounts SET status = @status WHERE id = @userId", param1, param2);
CreateParameters(params (string name, object value)[] parameters)
Возвращает:
IDbDataParameter[] - массив параметров

Описание: Создает массив параметров для удобной передачи нескольких значений в SQL-запрос.

Параметры:

  • parameters - массив кортежей с именами и значениями параметров
Пример:

C#:
 var db = new dSql("localhost", "5432", "shop", "user", "pass"); var parameters = db.CreateParameters( ("@productName", "Товар 1"),

("@price", 1250.50), ("@categoryId", 5) ); int result = db.DbWrite("INSERT INTO products (name, price, category_id) VALUES (@productName, @price, @categoryId)", parameters);
CopyTableAsync(string sourceTable, string destinationTable)
Возвращает:
Task - количество скопированных строк

Описание: Полностью копирует структуру и данные таблицы, включая первичные ключи и ограничения. Поддерживает копирование между схемами в PostgreSQL.

Параметры:

  • sourceTable - имя исходной таблицы (может включать схему: "schema.table")
  • destinationTable - имя новой таблицы
Пример:

C#:
 var db = new dSql("localhost", "5432", "database", "user", "password"); try { int copiedRows = await db.CopyTableAsync("public.users", "public.users_backup"); project.SendInfoToLog($"Таблица скопирована, строк: {copiedRows}", false);

} catch (Exception ex) { project.SendErrorToLog($"Ошибка копирования: {ex.Message}", false);

}
MigrateAllTablesAsync(dSql sourceDb, dSql destinationDb)
Возвращает:
Task - общее количество мигрированных строк

Описание: Статический метод для миграции всех таблиц между разными типами баз данных. Переносит структуру таблиц, данные и пытается сохранить ограничения.

Параметры:

  • sourceDb - исходная база данных
  • destinationDb - целевая база данных
Пример:

C#:
 var sqliteDb = new dSql(@"C:\old_data.sqlite", ""); var postgresDb = new dSql("localhost", "5432", "newdb", "admin", "pass");

try { int totalRows = await dSql.MigrateAllTablesAsync(sqliteDb, postgresDb); project.SendInfoToLog($"Миграция завершена, перенесено строк: {totalRows}", false);

} catch (Exception ex) { project.SendErrorToLog($"Ошибка миграции: {ex.Message}", false);

} finally { sqliteDb.Dispose(); postgresDb.Dispose(); }
Upd(string toUpd, object id, string tableName = null, string where = null, bool last = false)
Возвращает:
Task - количество обновленных строк

Описание: Обновляет данные в таблице с возможностью автоматического добавления времени последнего изменения.

Параметры:

  • toUpd - строка с полями для обновления в формате "field1 = value1, field2 = value2"
  • id - идентификатор записи для обновления
  • tableName - имя таблицы
  • where - дополнительное условие WHERE (если не указано, используется id)
  • last - добавить поле last с текущим временем
Пример:

C#:
 var db = new dSql(@"C:\accounts.sqlite", ""); int updated = await db.Upd("status = 'completed', progress = 100", 15, "tasks", null, true); project.SendInfoToLog($"Обновлено записей: {updated}", false);
Get(string toGet, string id, string tableName = null, string where = null)
Возвращает:
Task - значение поля из базы данных

Описание: Получает значение указанного поля из таблицы по условию.

Параметры:

  • toGet - имя поля для получения значения
  • id - идентификатор записи
  • tableName - имя таблицы
  • where - дополнительное условие WHERE
Пример:

C#:
 var db = new dSql("localhost", "5432", "shop", "user", "pass"); string userName = await db.Get("username", "123", "users"); project.SendInfoToLog($"Имя пользователя: {userName}", false);

//с дополнительным условием

string email = await db.Get("email", "", "users", "username = 'admin' AND active = 1");
AddRange(int range, string tableName = null)
Возвращает:
Task - асинхронная операция

Описание: Добавляет записи с последовательными ID до указанного диапазона. Полезно для предварительного заполнения таблиц.

Параметры:

  • range - максимальный ID для добавления
  • tableName - имя таблицы
Пример:

C#:
 var db = new dSql(@"C:\accounts.sqlite", ""); await db.AddRange(1000, "accounts");
Tools
Разнообразная коллекция инструментов для упрощения рутинных задач. Включает графический интерфейс для просмотра балансов с цветовым кодированием, универсальный конвертер между форматами данных (hex, base64, bech32), конструктор интерактивных форм ввода, систему справки по API методам, генератор OTP-кодов, инструмент синхронизации проектов с GitHub и другие утилиты.
Accountant
Класс для отображения таблиц балансов в удобном графическом интерфейсе. Создает окна с данными из базы данных или списков, поддерживает цветовое кодирование балансов и расчет итоговых сумм.

Конструкторы
Accountant(IZennoPosterProjectModel project, bool log = false)

Создает новый экземпляр класса Accountant.

Параметры:

  • project (IZennoPosterProjectModel) - объект проекта ZennoPoster
  • log (bool) - включить логирование операций (по умолчанию false)
Пример:

C#:
 var accountant = new Accountant(project, true); //включаем логирование операций
Методы
void ShowBalanceTable(string chains = null)

Отображает таблицу балансов из базы данных в графическом окне с пагинацией и цветовым кодированием.

Параметры:

  • chains (string) - список колонок через запятую для отображения (если null, показываются все колонки)
Пример:

C#:
 //показать все колонки таблицы балансов

accountant.ShowBalanceTable();

//показать только определенные колонки

accountant.ShowBalanceTable("acc0,eth,btc,usdt");
void ShowBalanceTableFromList(List<string> data)
Отображает таблицу балансов из готового списка строк формата "счет:баланс".

Параметры:

  • data (List) - список строк в формате "счет:баланс"
Пример:

C#:
 var balances = new List { "wallet1:0.12345", "wallet2:0.00123", "wallet3:1.5678" }; //отобразить балансы из списка

accountant.ShowBalanceTableFromList(balances);
Особенности
  • Цветовое кодирование: Балансы окрашиваются разными цветами в зависимости от размера (от синего для больших сумм до красного для маленьких)
  • Автоматические суммы: В конце таблицы добавляется строка с итоговыми суммами по всем колонкам
  • Пагинация: Большие таблицы разбиваются на страницы по 100 строк с кнопками навигации
  • Форматирование: Все балансы отображаются с точностью до 7 знаков после запятой
Класс Converer
Описание

Статический класс для преобразования данных между различными форматами: hex (шестнадцатеричные строки), base64, bech32 (адреса блокчейна), bytes и обычный текст. Поддерживает двустороннее преобразование между любыми из этих форматов, что полезно при работе с криптографическими данными, адресами кошельков и кодированием информации.

Публичные методы
ConvertFormat(IZennoPosterProjectModel project, string toProcess, string input, string output, bool log = false)

Возвращает:
string - преобразованная строка или null в случае ошибки

Описание: Преобразует строку из одного формата в другой. Поддерживает форматы: hex, base64, bech32, bytes, text.

Параметры:

  • project - модель проекта для логирования
  • toProcess - строка для преобразования
  • input - исходный формат (hex/base64/bech32/bytes/text)
  • output - целевой формат (hex/base64/bech32/bytes/text)
  • log - включить логирование операции (по умолчанию false)
Пример:

C#:
 // преобразование hex в base64

string result = Converer.ConvertFormat(project, "48656c6c6f", "hex", "base64", true); project.SendInfoToLog($"Результат: {result}");

// преобразование текста в hex

string hexResult = Converer.ConvertFormat(project, "Hello World", "text", "hex"); project.SendInfoToLog($"Текст в hex: {hexResult}");

// преобразование bech32 адреса в hex

string bech32ToHex = Converer.ConvertFormat(project, "init1qqqsyqcyq5rqwzqfpg9scrgwpugpzysnpswf", "bech32", "hex"); //результат преобразования

if (bech32ToHex != null) { project.SendInfoToLog($"Bech32 в hex: {bech32ToHex}");

} else { project.SendErrorToLog("Ошибка преобразования bech32");

}
F0rms
Класс F0rms предоставляет набор методов для создания интерактивных диалоговых окон с различными типами пользовательского ввода. Позволяет создавать формы для ввода текста, ключ-значение пар, выбора из списка и других типов данных.

Конструкторы
F0rms(IZennoPosterProjectModel project)

Создает новый экземпляр класса F0rms.

Параметры:

  • project - экземпляр проекта для логирования
Пример:

C#:
 var forms = new F0rms(project);
Методы
InputBox
Возвращает:
string

Отображает простое диалоговое окно для ввода многострочного текста.

Параметры:

  • message - заголовок окна (по умолчанию "input data please")
  • width - ширина окна в пикселях (по умолчанию 600)
  • height - высота окна в пикселях (по умолчанию 600)
Пример:

C#:
 //получить текст от пользователя

string userText = F0rms.InputBox("Введите ваш текст:", 800, 400);

project.SendInfoToLog($"Введенный текст: {userText}");
GetLinesByKey
Возвращает:
Dictionary<string, string>

Создает диалоговое окно для ввода данных построчно с указанием имени ключевого столбца. Возвращает словарь где ключи - номера строк, а значения - SQL-подобные выражения.

Параметры:

  • keycolumn - имя столбца для ключа (по умолчанию "input Column Name")
  • title - заголовок окна (по умолчанию "Input data line per line")
Пример:

C#:
 //получить данные построчно

var dataDict = forms.GetLinesByKey("email", "Введите email адреса");

if (dataDict != null) { foreach (var pair in dataDict) { project.SendInfoToLog($"Строка {pair.Key}: {pair.Value}");

} }
GetLines
Возвращает:
List<string>

Создает диалоговое окно для ввода данных построчно. Возвращает список SQL-подобных выражений.

Параметры:

  • keycolumn - имя столбца для ключа (по умолчанию "input Column Name")
  • title - заголовок окна (по умолчанию "Input data line per line")
Пример:

C#:
 //получить список строк

var lines = forms.GetLines("username", "Введите имена пользователей");

if (lines != null) { foreach (string line in lines) { project.SendInfoToLog($"Строка: {line}");

} }
GetKeyValuePairs
Возвращает:
Dictionary<string, string>

Создает диалоговое окно с указанным количеством полей для ввода ключ-значение пар.

Параметры:

  • quantity - количество пар для ввода
  • keyPlaceholders - список значений по умолчанию для ключей (может быть null)
  • valuePlaceholders - список значений по умолчанию для значений (может быть null)
  • title - заголовок окна (по умолчанию "Input Key-Value Pairs")
  • prepareUpd - если true, подготавливает данные в SQL-формате (по умолчанию true)
Пример:

C#:
 //получить 3 пары ключ-значение

var keyPlaceholders = new List { "name", "age", "city" }; var valuePlaceholders = new List { "Введите имя", "Введите возраст", "Введите город" };

var pairs = forms.GetKeyValuePairs(3, keyPlaceholders, valuePlaceholders, "Данные пользователя");

if (pairs != null) { foreach (var pair in pairs) { project.SendInfoToLog($"Пара: {pair.Value}");

} }
GetKeyBoolPairs
Возвращает:
Dictionary<string, bool>

Создает диалоговое окно для ввода пар ключ-булево значение с использованием чекбоксов.

Параметры:

  • quantity - количество пар для ввода
  • keyPlaceholders - список текстов для ключей (может быть null)
  • valuePlaceholders - список текстов для чекбоксов (может быть null)
  • title - заголовок окна (по умолчанию "Input Key-Bool Pairs")
  • prepareUpd - если true, использует номера как ключи (по умолчанию true)
Пример:

C#:
 //получить настройки с чекбоксами

var options = new List { "option1", "option2", "option3" }; var labels = new List { "Включить уведомления", "Автосохранение", "Темная тема" };

var boolPairs = forms.GetKeyBoolPairs(3, options, labels, "Настройки");

if (boolPairs != null) { foreach (var pair in boolPairs) { project.SendInfoToLog($"Настройка {pair.Key}: {pair.Value}");

} }
GetKeyValueString
Возвращает:
string

Создает диалоговое окно для ввода ключ-значение пар и возвращает их как строку в формате "key1='value1', key2='value2'".

Параметры:

  • quantity - количество пар для ввода
  • keyPlaceholders - список значений по умолчанию для ключей (может быть null)
  • valuePlaceholders - список значений по умолчанию для значений (может быть null)
  • title - заголовок окна (по умолчанию "Input Key-Value Pairs")
Пример:

C#:
 //получить пары как строку

var pairsString = forms.GetKeyValueString(2, new List { "name", "email" }, new List { "Иван", "[EMAIL]ivan@example.com[/EMAIL]" },

"Контактные данные");

project.SendInfoToLog($"Пары: {pairsString}");

//результат: "name='Иван', email='[EMAIL]ivan@example.com[/EMAIL]'"
GetSelectedItem
Возвращает:
string

Создает диалоговое окно с выпадающим списком для выбора одного элемента из предоставленного списка.

Параметры:

  • items - список элементов для выбора
  • title - заголовок окна (по умолчанию "Select an Item")
  • labelText - текст метки (по умолчанию "Select:")
Пример:

C#:
 //выбор из списка браузеров

var browsers = new List { "Chrome", "Firefox", "Safari", "Edge" }; string selectedBrowser = forms.GetSelectedItem(browsers, "Выберите браузер", "Браузер:");

if (!string.IsNullOrEmpty(selectedBrowser)) { project.SendInfoToLog($"Выбран браузер: {selectedBrowser}");

}
Helper
Статический класс с утилитами для отладки и поиска документации по методам ZennoPoster API. Предоставляет удобный способ поиска информации о методах и их параметрах прямо из проекта.

Методы
Help
Возвращает
: void

Ищет документацию по методам в XML-файлах ZennoPoster и отображает результаты в удобном окне просмотра.

Параметры:

  • project (IZennoPosterProjectModel) - экземпляр проекта ZennoPoster
  • toSearch (string, необязательный) - строка для поиска в названиях методов. Если не указан, появится диалог ввода
Пример использования:

C#:
 //поиск всех методов содержащих слово "Click"

project.Help("Click");

//вызов с диалогом ввода поискового запроса

project.Help();

//поиск методов работы с элементами

project.Help("Element");
Метод автоматически просматривает XML-файлы документации ZennoPoster (ZennoLab.CommandCenter.xml, ZennoLab.InterfacesLibrary.xml, ZennoLab.Macros.xml, ZennoLab.Emulation.xml) и извлекает полную информацию о найденных методах, включая описание, параметры, возвращаемые значения, примеры использования и исключения. Результаты отображаются в удобном окне с возможностью копирования текста.

OTP
Статический класс для получения одноразовых паролей (OTP) различными способами. Позволяет генерировать TOTP коды в автономном режиме и получать их из сервиса FirstMail.

Методы
Offline
Возвращаемое значение:
string - сгенерированный TOTP код

Генерирует одноразовый пароль TOTP в автономном режиме по секретному ключу. Если до истечения текущего кода осталось мало времени, метод дожидается генерации нового кода для повышения надежности.

Параметры:

  • keyString (string) - секретный ключ в формате Base32
  • waitIfTimeLess (int, необязательный) - если до истечения кода осталось меньше указанных секунд, метод дожидается нового кода (по умолчанию 5)
Пример использования:

C#:
 string secret = "JBSWY3DPEHPK3PXP"; string otpCode = OTP.Offline(secret); project.SendInfoToLog($"Сгенерированный OTP код: {otpCode}");

//дождаться нового кода если осталось меньше 10 секунд

string otpCode2 = OTP.Offline(secret, 10); project.SendInfoToLog($"Новый OTP код: {otpCode2}");
FirstMail
Возвращаемое значение:
string - OTP код, полученный из сервиса FirstMail

Получает одноразовый пароль из сервиса FirstMail для указанного email адреса. Использует внутренний механизм для извлечения кода из почтовых сообщений.

Параметры:

  • project (IZennoPosterProjectModel) - экземпляр проекта ZennoPoster
  • email (string) - email адрес для получения OTP кода
Пример использования:

C#:
 string email = "[EMAIL]test@example.com[/EMAIL]"; string otpCode = OTP.FirstMail(project, email); project.SendInfoToLog($"OTP код из FirstMail: {otpCode}");
GHsync
Класс для автоматической синхронизации локальных папок с репозиториями GitHub. Позволяет массово коммитить и пушить изменения в несколько проектов одновременно, с проверкой размеров файлов и автоматическим созданием .gitignore.

Конструкторы
GHsync(IZennoPosterProjectModel project)

Создает новый экземпляр класса для синхронизации с GitHub.

Параметры:

  • project - экземпляр проекта ZennoPoster для логирования
Пример использования:

C#:
 var ghSync = new GHsync(project); //создаем экземпляр для работы с GitHub
Публичные методы
GetFileHash(string filePath) : string

Вычисляет MD5-хеш файла для проверки изменений.

Возвращает: MD5-хеш файла в виде строки или пустую строку при ошибке

Параметры:

  • filePath - полный путь к файлу
Пример использования:

C#:
 string hash = GHsync.GetFileHash(@"C:\myproject\file.txt"); project.SendInfoToLog($"Hash файла: {hash}");

//получаем хеш файла для проверки изменений
Main(string baseDir, string token, string username, string commmit = "ts")
Основной метод для синхронизации всех проектов из базовой директории с GitHub репозиториями.

Параметры:

  • baseDir - базовая директория, содержащая папки проектов
  • token - GitHub Personal Access Token (должен начинаться с "ghp_")
  • username - имя пользователя GitHub
  • commmit - текст коммита (по умолчанию "ts" - будет заменен на текущее время)
Пример использования:

C#:
 var ghSync = new GHsync(project); //создаем экземпляр синхронизации

ghSync.Main(@"C:\MyProjects", "ghp_your_token_here", "yourusername", "Обновление проектов");

//синхронизируем все проекты из папки
Особенности работы:

  • Читает конфигурацию из файла .sync.txt в базовой директории
  • Пропускает папки помеченные как false в конфигурации
  • Проверяет размеры файлов и репозиториев (максимум 100MB на файл, 1GB на репозиторий)
  • Исключает бинарные файлы и медиа-контент
  • Автоматически создает и обновляет .gitignore
  • Выводит подробную статистику по завершению
W3b
Комплекс для работы с различными блокчейнами. Содержит RPC, инструменты для отправки транзакций и взаимодействия с смарт-контрактами, универсальные методы получения балансов токенов (EVM, Solana, Aptos, Sui), интеграцию с ценовыми API (CoinGecko, DexScreener, KuCoin) и упрощенные обертки для быстрого выполнения стандартных блокчейн-операций.
Класс Rpc
Описание


Статический класс для получения URL-адресов RPC узлов различных блокчейн сетей. Предоставляет удобный доступ к публичным RPC эндпоинтам для популярных блокчейнов, включая Ethereum, Layer 2 сети, альтернативные блокчейны и тестовые сети.

Публичные методы

Get(string name)


Возвращает: string - URL-адрес RPC узла для указанной сети

Описание: Получает URL RPC узла по имени блокчейн сети. Поиск не чувствителен к регистру и игнорирует символы подчеркивания.

Параметры:

  • name - название блокчейн сети
Пример:

C#:
 //получить URL для Ethereum

string ethRpc = Rpc.Get("Ethereum"); project.SendInfoToLog($"Ethereum RPC: {ethRpc}", false);

//получить URL для Solana (нечувствителен к регистру)

string solanaRpc = Rpc.Get("solana"); project.SendInfoToLog($"Solana RPC: {solanaRpc}", false);

//обработка ошибки для неизвестной сети

try { string unknownRpc = Rpc.Get("UnknownChain"); } catch (ArgumentException ex) { project.SendErrorToLog($"Сеть не найдена: {ex.Message}", false);

}
Публичные свойства

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

Ethereum - Ethereum mainnet RPC Arbitrum - Arbitrum One RPC
Base - Base mainnet RPC Blast - Blast mainnet RPC Bsc - Binance Smart Chain RPC Polygon - Polygon mainnet RPC Avalanche - Avalanche C-Chain RPC Optimism - Optimism mainnet RPC Solana - Solana mainnet RPC Zksync - zkSync Era mainnet RPC

И многие другие сети включая тестовые (Sepolia, Solana_Devnet, Solana_Testnet)

Пример использования свойств:

C#:
 //прямой доступ к Ethereum RPC

string ethUrl = Rpc.Ethereum; project.SendInfoToLog($"ETH RPC: {ethUrl}", false);

//использование для разных сетей

string[] networks = { Rpc.Arbitrum, Rpc.Base, Rpc.Polygon }; foreach(string rpc in networks) { project.SendInfoToLog($"Network RPC: {rpc}", false); }
Tx
Класс для выполнения транзакций в блокчейн-сетях Ethereum. Предоставляет методы для отправки нативной валюты, ERC20 токенов, NFT, а также специальные операции типа approve и wrap.

Конструкторы
Tx(IZennoPosterProjectModel project, bool log = false)

Создает новый экземпляр класса для работы с блокчейн-транзакциями.

Параметры:

  • project - экземпляр проекта ZennoPoster
  • log - включить логирование операций (по умолчанию false)
Пример:

C#:
 var tx = new Tx(project, log: true); //создание экземпляра с включенным логированием
Методы
string SendTx(string chainRpc, string contractAddress, string encodedData, decimal value, string walletKey, int txType = 2, int speedup = 1)

Отправляет транзакцию в блокчейн с указанными параметрами.

Возвращает: string - хеш транзакции

Параметры:

  • chainRpc - URL RPC узла блокчейн-сети
  • contractAddress - адрес контракта или получателя
  • encodedData - закодированные данные транзакции
  • value - количество нативной валюты для отправки
  • walletKey - приватный ключ кошелька (если пустой, берется из базы проекта)
  • txType - тип транзакции (0 - legacy, 2 - EIP-1559, по умолчанию 2)
  • speedup - множитель для увеличения комиссии (по умолчанию 1)
Пример:

C#:
 string hash = tx.SendTx("[URL]https://rpc.ankr.com/eth[/URL]", "0x123...", "0xabcd...", 0.1m, "", 2, 2); //отправка транзакции с удвоенной комиссией

project.SendInfoToLog($"Транзакция отправлена: {hash}");
string Approve(string contract, string spender, string amount, string rpc)
Выдает разрешение на использование ERC20 токенов другому адресу или контракту.

Возвращает: string - хеш транзакции

Параметры:

  • contract - адрес контракта токена
  • spender - адрес, которому выдается разрешение
  • amount - количество токенов ("max" для максимального значения, "cancel" для отмены)
  • rpc - URL RPC узла
Пример:

C#:
 //выдать максимальное разрешение на USDT

string hash = tx.Approve("0xdAC17F958D2ee523a2206206994597C13D831ec7", "0x456...", "max", "[URL]https://rpc.ankr.com/eth[/URL]"); project.SendInfoToLog($"Approve выполнен: {hash}");
string Wrap(string contract, decimal value, string rpc)
Обменивает нативную валюту на wrapped-токен (например, ETH на WETH).

Возвращает: string - хеш транзакции

Параметры:

  • contract - адрес wrapped-контракта
  • value - количество нативной валюты для обмена
  • rpc - URL RPC узла
Пример:

C#:
 //обменять 1 ETH на WETH

string hash = tx.Wrap("0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", 1.0m, "[URL]https://rpc.ankr.com/eth[/URL]"); project.SendInfoToLog($"Wrapped {hash}");
string SendNative(string to, decimal amount, string rpc)
Отправляет нативную валюту блокчейна на указанный адрес.

Возвращает: string - хеш транзакции

Параметры:

  • to - адрес получателя
  • amount - количество для отправки
  • rpc - URL RPC узла
Пример:

C#:
 //отправить 0.5 ETH

string hash = tx.SendNative("0x789...", 0.5m, "[URL]https://rpc.ankr.com/eth[/URL]"); project.SendInfoToLog($"Отправлено: {hash}");
string SendERC20(string contract, string to, decimal amount, string rpc)
Отправляет ERC20 токены на указанный адрес.

Возвращает: string - хеш транзакции

Параметры:

  • contract - адрес контракта токена
  • to - адрес получателя
  • amount - количество токенов для отправки
  • rpc - URL RPC узла
Пример:

C#:
 //отправить 100 USDT

string hash = tx.SendERC20("0xdAC17F958D2ee523a2206206994597C13D831ec7", "0x789...", 100m, "[URL]https://rpc.ankr.com/eth[/URL]"); project.SendInfoToLog($"Токены отправлены: {hash}");
string SendERC721(string contract, string to, BigInteger tokenId, string rpc)
Отправляет NFT (ERC-721 токен) на указанный адрес.

Возвращает: string - хеш транзакции

Параметры:

  • contract - адрес контракта NFT
  • to - адрес получателя
  • tokenId - ID токена для отправки
  • rpc - URL RPC узла
Пример:

C#:
 //отправить NFT с ID 123

string hash = tx.SendERC721("0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D", "0x789...", 123, "[URL]https://rpc.ankr.com/eth[/URL]"); project.SendInfoToLog($"NFT отправлена: {hash}");
Класс EvmTools

Набор инструментов для работы с блокчейнами на базе Ethereum Virtual Machine (EVM). Предоставляет методы для проверки транзакций, получения балансов различных токенов, а также взаимодействия с RPC-узлами блокчейна.

Публичные методы

WaitTxExtended(string rpc, string hash, int deadline = 60, string proxy = "", bool log = false)


Возвращает: bool - статус выполнения транзакции (true = успех, false = провал)

Описание: Расширенная версия ожидания транзакции с дополнительной информацией о gas и статусе. Отслеживает как завершенные транзакции, так и находящиеся в ожидании.

Параметры:

  • rpc - URL RPC-узла блокчейна
  • hash - хэш транзакции для отслеживания
  • deadline - максимальное время ожидания в секундах (по умолчанию 60)
  • proxy - прокси в формате "login:pass:ip:port" (опционально)
  • log - включить подробное логирование процесса
Пример:

C#:
 var evmTools = new EvmTools(); string transactionHash = "0x123abc..."; bool success = await evmTools.WaitTxExtended("[URL]https://rpc.ankr.com/eth[/URL]", transactionHash, 120, "", true); if (success) { } else { project.SendWarningToLog("Транзакция провалилась", false);

}
WaitTx(string rpc, string hash, int deadline = 60, string proxy = "", bool log = false)

Возвращает: bool - статус выполнения транзакции

Описание: Базовая версия ожидания подтверждения транзакции в блокчейне. Проверяет статус транзакции до ее завершения или истечения времени.

Параметры:

  • rpc - URL RPC-узла блокчейна
  • hash - хэш транзакции
  • deadline - максимальное время ожидания в секундах
  • proxy - прокси-сервер (опционально)
  • log - включить логирование
Пример:

C#:
 var evmTools = new EvmTools(); bool result = await evmTools.WaitTx("[URL='https://bsc-dataseed.binance.org/']https://bsc-dataseed.binance.org[/URL]", "0xabc123...", 90); //проверить результат транзакции
Native(string rpc, string address)

Возвращает: string - баланс в hex-формате

Описание: Получает баланс нативной криптовалюты (ETH, BNB, MATIC и т.д.) для указанного адреса.

Параметры:

  • rpc - URL RPC-узла
  • address - адрес кошелька для проверки
Пример:

C#:
 var evmTools = new EvmTools(); string hexBalance = await evmTools.Native("[URL='https://polygon-rpc.com/']https://polygon-rpc.com[/URL]", "0x742d35Cc6B..."); //преобразовать hex в decimal используя расширения

decimal balance = hexBalance.ToDecimal(18); project.SendInfoToLog($"Баланс: {balance} MATIC", false);
Erc20(string tokenContract, string rpc, string address)

Возвращает: string - баланс токена в hex-формате

Описание: Получает баланс ERC-20 токена для указанного адреса кошелька.

Параметры:

  • tokenContract - адрес контракта токена
  • rpc - URL RPC-узла
  • address - адрес кошелька
Пример:

C#:
 var evmTools = new EvmTools(); string usdcContract = "0xA0b86a33E6.."; string balance = await evmTools.Erc20(usdcContract, "[URL]https://mainnet.infura.io/v3/key[/URL]", "0x123..."); //конвертировать в readable формат

decimal readableBalance = balance.ToDecimal(6); //USDC имеет 6 десятичных знаков

project.SendInfoToLog($"Баланс USDC: {readableBalance}", false);
Erc721(string tokenContract, string rpc, string address)

Возвращает: string - количество NFT в hex-формате

Описание: Получает количество NFT-токенов стандарта ERC-721, принадлежащих указанному адресу.

Параметры:

  • tokenContract - адрес контракта NFT-коллекции
  • rpc - URL RPC-узла
  • address - адрес кошелька
Пример:

C#:
 var evmTools = new EvmTools(); string nftContract = "0x60E4d786628Fea6478F785A6d7e704777c86a7c6"; //MAYC string count = await evmTools.Erc721(nftContract, "[URL='https://eth.llamarpc.com/']https://eth.llamarpc.com[/URL]", "0xabc123..."); int nftCount = Convert.ToInt32(count, 16); project.SendInfoToLog($"У адреса {nftCount} NFT", false);
Erc1155(string tokenContract, string tokenId, string rpc, string address)

Возвращает: string - баланс токена ERC-1155 в hex-формате

Описание: Получает баланс конкретного токена стандарта ERC-1155 для указанного адреса.

Параметры:

  • tokenContract - адрес контракта ERC-1155
  • tokenId - ID конкретного токена в коллекции
  • rpc - URL RPC-узла
  • address - адрес кошелька
Пример:

C#:
 var evmTools = new EvmTools(); string gameItemContract = "0xdef456..."; string tokenId = "1"; //первый предмет в игре

string balance = await evmTools.Erc1155(gameItemContract, tokenId, "[URL='https://polygon.llamarpc.com/']https://polygon.llamarpc.com[/URL]", "0x123..."); int itemCount = Convert.ToInt32(balance, 16); project.SendInfoToLog($"Игровых предметов: {itemCount}", false);
Nonce(string rpc, string address, string proxy = "", bool log = false)

Возвращает: string - nonce в hex-формате

Описание: Получает nonce (счетчик транзакций) для указанного адреса. Используется при создании новых транзакций.

Параметры:

  • rpc - URL RPC-узла
  • address - адрес кошелька
  • proxy - прокси-сервер (опционально)
  • log - включить логирование
Пример:

C#:
 var evmTools = new EvmTools(); string nonceHex = await evmTools.Nonce("[URL]https://mainnet.infura.io/v3/key[/URL]", "0xabc123..."); int currentNonce = Convert.ToInt32(nonceHex, 16); project.SendInfoToLog($"Текущий nonce: {currentNonce}", false);
ChainId(string rpc, string proxy = "", bool log = false)

Возвращает: string - ID блокчейна в hex-формате

Описание: Получает уникальный идентификатор блокчейна для указанного RPC-узла.

Параметры:

  • rpc - URL RPC-узла
  • proxy - прокси-сервер (опционально)
  • log - включить логирование
Пример:

C#:
 var evmTools = new EvmTools(); string chainIdHex = await evmTools.ChainId("[URL='https://polygon-rpc.com/']https://polygon-rpc.com[/URL]"); int chainId = Convert.ToInt32(chainIdHex, 16); //137 = Polygon, 1 = Ethereum, 56 = BSC project.SendInfoToLog($"Chain ID: {chainId}", false);
GasPrice(string rpc, string proxy = "", bool log = false)

Возвращает: string - цена gas в hex-формате

Описание: Получает текущую цену gas в блокчейне для оптимизации стоимости транзакций.

Параметры:

  • rpc - URL RPC-узла
  • proxy - прокси-сервер (опционально)
  • log - включить логирование
Пример:

C#:
 var evmTools = new EvmTools(); string gasPriceHex = await evmTools.GasPrice("[URL='https://eth.llamarpc.com/']https://eth.llamarpc.com[/URL]"); decimal gasPrice = gasPriceHex.ToDecimal(9); //gas измеряется в Gwei (9 decimals)

project.SendInfoToLog($"Текущая цена gas: {gasPrice} Gwei", false);
Класс SolTools

Инструменты для работы с блокчейном Solana. Предоставляет методы для получения балансов SOL, SPL-токенов и расчета комиссий за транзакции.

Публичные методы

GetSolanaBalance(string rpc, string address)


Возвращает: decimal - баланс SOL

Описание: Получает баланс нативной валюты SOL для указанного адреса кошелька.

Параметры:

  • rpc - URL RPC-узла Solana
  • address - адрес кошелька Solana
Пример:

C#:
 var solTools = new SolTools(); decimal solBalance = await solTools.GetSolanaBalance("[URL='https://api.mainnet-beta.solana.com/']https://api.mainnet-beta.solana.com[/URL]", "DYw8jCTfwHNRJhhmFcbXvVDTqWMEVFBX6ZKUmG5CNSKC"); project.SendInfoToLog($"Баланс SOL: {solBalance}", false);
GetSplTokenBalance(string rpc, string walletAddress, string tokenMint)

Возвращает: decimal - баланс SPL-токена

Описание: Получает баланс конкретного SPL-токена для указанного кошелька в блокчейне Solana.

Параметры:

  • rpc - URL RPC-узла Solana
  • walletAddress - адрес кошелька
  • tokenMint - mint-адрес SPL-токена
Пример:

C#:
 var solTools = new SolTools(); string usdcMint = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"; //USDC on Solana decimal usdcBalance = await solTools.GetSplTokenBalance("[URL='https://api.mainnet-beta.solana.com/']https://api.mainnet-beta.solana.com[/URL]", "DYw8jCT...", usdcMint); project.SendInfoToLog($"Баланс USDC: {usdcBalance}", false);
SolFeeByTx(string transactionHash, string rpc = null, string tokenDecimal = "9")

Возвращает: decimal - размер комиссии в SOL

Описание: Рассчитывает комиссию, уплаченную за конкретную транзакцию в сети Solana.

Параметры:

  • transactionHash - хэш транзакции для анализа
  • rpc - URL RPC-узла (по умолчанию mainnet)
  • tokenDecimal - количество десятичных знаков (по умолчанию 9 для SOL)
Пример:

C#:
 var solTools = new SolTools(); string txHash = "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW"; decimal fee = await solTools.SolFeeByTx(txHash); project.SendInfoToLog($"Комиссия за транзакцию: {fee} SOL", false);
Класс AptTools

Набор инструментов для работы с блокчейном Aptos. Включает методы для получения балансов нативной валюты APT и других токенов в экосистеме Aptos.

Публичные методы

GetAptBalance(string rpc, string address, string proxy = "", bool log = false)


Возвращает: decimal - баланс APT

Описание: Получает баланс нативной валюты APT для указанного адреса в блокчейне Aptos.

Параметры:

  • rpc - URL RPC-узла Aptos (по умолчанию mainnet)
  • address - адрес кошелька Aptos
  • proxy - прокси-сервер (опционально)
  • log - включить логирование
Пример:

C#:
 var aptTools = new AptTools(); decimal aptBalance = await aptTools.GetAptBalance("[URL]https://fullnode.mainnet.aptoslabs.com/v1[/URL]", "0x123abc..."); project.SendInfoToLog($"Баланс APT: {aptBalance}", false);
GetAptTokenBalance(string coinType, string rpc, string address, string proxy = "", bool log = false)

Возвращает: decimal - баланс токена

Описание: Получает баланс конкретного токена в экосистеме Aptos по его типу.

Параметры:

  • coinType - тип монеты/токена в формате Aptos
  • rpc - URL RPC-узла (по умолчанию mainnet)
  • address - адрес кошелька
  • proxy - прокси-сервер (опционально)
  • log - включить логирование
Пример:

C#:
 var aptTools = new AptTools(); string wethType = "0x1::aptos_coin::AptosCoin"; //пример типа токена

decimal tokenBalance = await aptTools.GetAptTokenBalance(wethType, "", "0xabc123...", "", true); project.SendInfoToLog($"Баланс токена: {tokenBalance}", false);
Класс SuiTools

Инструменты для взаимодействия с блокчейном Sui. Предоставляет методы для получения балансов нативной валюты SUI и других токенов в экосистеме.

Публичные методы

GetSuiBalance(string rpc, string address, string proxy = "", bool log = false)


Возвращает: decimal - баланс SUI

Описание: Получает баланс нативной валюты SUI для указанного адреса кошелька.

Параметры:

  • rpc - URL RPC-узла Sui (по умолчанию mainnet)
  • address - адрес кошелька Sui
  • proxy - прокси-сервер (опционально)
  • log - включить логирование
Пример:

C#:
 var suiTools = new SuiTools(); decimal suiBalance = await suiTools.GetSuiBalance("[URL='https://fullnode.mainnet.sui.io/']https://fullnode.mainnet.sui.io[/URL]", "0x123abc..."); project.SendInfoToLog($"Баланс SUI: {suiBalance}", false);
GetSuiTokenBalance(string coinType, string rpc, string address, string proxy = "", bool log = false)

Возвращает: decimal - баланс токена

Описание: Получает баланс конкретного токена в экосистеме Sui по его типу.

Параметры:

  • coinType - тип монеты/токена в экосистеме Sui
  • rpc - URL RPC-узла (по умолчанию mainnet)
  • address - адрес кошелька
  • proxy - прокси-сервер (опционально)
  • log - включить логирование
Пример:

C#:
 var suiTools = new SuiTools(); string usdcType = "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN"; decimal usdcBalance = await suiTools.GetSuiTokenBalance(usdcType, "", "0xabc123...", "", true); project.SendInfoToLog($"Баланс USDC на Sui: {usdcBalance}", false);
Класс CoinGecco

API-клиент для работы с сервисом CoinGecko. Позволяет получать актуальную информацию о ценах криптовалют и данные о токенах.

Публичные методы

CoinInfo(string CGid = "ethereum")


Возвращает: string - JSON с полной информацией о монете

Описание: Получает подробную информацию о криптовалюте по ее ID в CoinGecko.

Параметры:

  • CGid - идентификатор монеты в CoinGecko (по умолчанию "ethereum")
Пример:

C#:
 var coinGecko = new CoinGecco(); string ethInfo = await coinGecko.CoinInfo("ethereum"); project.SendInfoToLog($"Информация об Ethereum: {ethInfo}", false);
TokenByAddress(string CGid = "ethereum")

Возвращает: string - JSON с информацией о токене по адресу

Описание: Получает информацию о токене по его контрактному адресу в блокчейне.

Параметры:

  • CGid - идентификатор сети для поиска токена
Пример:

C#:
 var coinGecko = new CoinGecco(); string tokenInfo = await coinGecko.TokenByAddress("ethereum"); //обработать полученную информацию
PriceByTiker(string tiker)

Возвращает: decimal - цена в USD

Описание: Статический метод для быстрого получения цены криптовалюты по ее тикеру. Поддерживает ETH, BNB, SOL.

Параметры:

  • tiker - тикер криптовалюты (ETH, BNB, SOL)
Пример:

C#:
 decimal ethPrice = CoinGecco.PriceByTiker("ETH"); decimal bnbPrice = CoinGecco.PriceByTiker("BNB"); project.SendInfoToLog("ETH:{ethPrice}, BNB: ${bnbPrice}", false);
PriceById(string CGid = "ethereum")

Возвращает: decimal - цена в USD

Описание: Статический метод для получения цены криптовалюты по ее ID в CoinGecko.

Параметры:

  • CGid - идентификатор монеты в CoinGecko
Пример:

C#:
 decimal solPrice = CoinGecko.PriceById("solana"); decimal dotPrice = CoinGecko.PriceById("polkadot"); project.SendInfoToLog("SOL:{solPrice}, DOT: ${dotPrice}", false);
Класс DexScreener

API-клиент для работы с сервисом DexScreener. Предоставляет информацию о токенах и их торговле на децентрализованных биржах.

Публичные методы

CoinInfo(string contract, string chain)


Возвращает: string - JSON с информацией о токене

Описание: Получает информацию о токене по его контрактному адресу и блокчейну от DexScreener.

Параметры:

  • contract - адрес контракта токена
  • chain - название блокчейна (ethereum, solana, bsc и т.д.)
Пример:

C#:
 var dexScreener = new DexScreener(); string tokenContract = "0x6B175474E89094C44Da98b954EedeAC495271d0F"; //DAI string tokenInfo = await dexScreener.CoinInfo(tokenContract, "ethereum"); project.SendInfoToLog($"Данные о токене: {tokenInfo}", false);
Класс KuCoin

API-клиент для работы с биржей KuCoin. Позволяет получать данные о ценах и торговых парах.

Публичные методы

OrderbookByTiker(string ticker = "ETH")


Возвращает: string - JSON с данными ордербука

Описание: Получает данные ордербука (лучшие цены покупки и продажи) для торговой пары с USDT.

Параметры:

  • ticker - тикер криптовалюты (по умолчанию "ETH")
Пример:

C#:
 var kuCoin = new KuCoin(); string btcOrderbook = await kuCoin.OrderbookByTiker("BTC"); project.SendInfoToLog($"Ордербук BTC: {btcOrderbook}", false);
KuPrice(string tiker = "ETH")

Возвращает: decimal - цена в USDT

Описание: Статический метод для быстрого получения текущей цены торговой пары на KuCoin.

Параметры:

  • tiker - тикер криптовалюты
Пример:

C#:
 decimal adaPrice = KuCoin.KuPrice("ADA"); decimal linkPrice = KuCoin.KuPrice("LINK"); project.SendInfoToLog("ADA:{adaPrice}, LINK: ${linkPrice}", false);
Класс W3bTools

Статический класс с упрощенными методами для работы с блокчейнами. Предоставляет удобные обертки над основными классами для быстрого доступа к функциональности.

Публичные методы

EvmNative(string rpc, string address)


Возвращает: decimal - баланс в читаемом формате

Описание: Статический метод для получения баланса нативной валюты EVM-блокчейна с автоматическим преобразованием в decimal.

Параметры:

  • rpc - URL RPC-узла
  • address - адрес кошелька
Пример:

C#:
 decimal ethBalance = W3bTools.EvmNative("[URL='https://eth.llamarpc.com/']https://eth.llamarpc.com[/URL]", "0x123abc..."); decimal bnbBalance = W3bTools.EvmNative("[URL='https://bsc-dataseed.binance.org/']https://bsc-dataseed.binance.org[/URL]", "0x123abc..."); project.SendInfoToLog($"ETH: {ethBalance}, BNB: {bnbBalance}", false);
ERC20(string tokenContract, string rpc, string address, string tokenDecimal = "18")

Возвращает: decimal - баланс токена

Описание: Упрощенный метод для получения баланса ERC-20 токена с автоматическим преобразованием в читаемый формат.

Параметры:

  • tokenContract - адрес контракта токена
  • rpc - URL RPC-узла
  • address - адрес кошелька
  • tokenDecimal - количество десятичных знаков токена (по умолчанию 18-)
Пример:

C#:
 string usdtContract = "0xdAC17F958D2ee523a2206206994597C13D831ec7"; decimal usdtBalance = W3bTools.ERC20(usdtContract, "[URL='https://eth.llamarpc.com/']https://eth.llamarpc.com[/URL]", "0x123abc...", "6"); project.SendInfoToLog($"Баланс USDT: {usdtBalance}", false);
WaitTx(string rpc, string hash, int deadline = 60, string proxy = "", bool log = false, bool extended = false)

Возвращает: bool - статус транзакции

Описание: Упрощенный метод ожидания подтверждения транзакции с выбором базовой или расширенной версии.

Параметры:

  • rpc - URL RPC-узла
  • hash - хэш транзакции
  • deadline - время ожидания в секундах
  • proxy - прокси-сервер (опционально)
  • log - включить логирование
  • extended - использовать расширенную версию с дополнительной информацией
Пример:

C#:
 bool success = W3bTools.WaitTx("[URL='https://polygon-rpc.com/']https://polygon-rpc.com[/URL]", "0xabc123...", 120, "", true, true); //проверить результат
SolNative(string address, string rpc = "https://api.mainnet-beta.solana.com")

Возвращает: decimal - баланс SOL

Описание: Упрощенный метод для получения баланса SOL.

Параметры:

  • address - адрес кошелька Solana
  • rpc - URL RPC-узла (по умолчанию mainnet)
Пример:

C#:
 decimal solBalance = W3bTools.SolNative("DYw8jCTfwHNRJhhmFcbXvVDTqWMEVFBX6ZKUmG5CNSKC"); project.SendInfoToLog($"Баланс SOL: {solBalance}", false);
CGPrice(string CGid = "ethereum")

Возвращает: decimal - цена в USD

Описание: Упрощенный метод для получения цены криптовалюты через CoinGecko API.

Параметры:

  • CGid - идентификатор монеты в CoinGecko
Пример:

C#:
 decimal btcPrice = W3bTools.CGPrice("bitcoin"); decimal ethPrice = W3bTools.CGPrice("ethereum"); project.SendInfoToLog("BTC:{btcPrice}, ETH: ${ethPrice}", false);
UsdToToken(decimal usdAmount, string tiker, string apiProvider = "KuCoin")

Возвращает: decimal - количество токенов

Описание: Конвертирует сумму в USD в количество токенов по текущему курсу через выбранный API.

Параметры:

  • usdAmount - сумма в долларах для конвертации
  • tiker - тикер криптовалюты
  • apiProvider - источник цен (KuCoin, OKX, CoinGecco)
Пример:

C#:
 //конвертировать $100 в ETH по курсу KuCoin

decimal ethAmount = project.UsdToToken(100m, "ETH", "KuCoin"); project.SendInfoToLog($"$100 = {ethAmount} ETH", false);
Wallets
Набор для управления кошельками через браузерные расширения. Включает поддержку Backpack (Solana/Ethereum), Keplr (Cosmos ) и Zerion (Solana/Ethereum) с возможностями установки, импорта кошельков, разблокировки, подписания транзакций, переключения между сетями и мониторинга состояния операций.
BackpackWallet
Класс для автоматизации работы с кошельком Backpack в браузере Chrome. Обеспечивает установку, импорт, разблокировку и управление кошельком через расширение браузера.

Конструкторы
BackpackWallet(IZennoPosterProjectModel project, Instance instance, bool log = false, string key = null, string fileName = "Backpack0.10.94.crx")

Создает новый экземпляр класса для работы с кошельком Backpack.

Параметры:

  • project - экземпляр проекта ZennoPoster
  • instance - экземпляр браузера
  • log - включить логирование (по умолчанию false)
  • key - приватный ключ или seed фраза ("key", "seed" или конкретный ключ)
  • fileName - имя файла расширения (по умолчанию "Backpack0.10.94.crx")
Пример:

C#:
 var wallet = new BackpackWallet(project, instance, log: true, key: "key"); //создать экземпляр с логированием и ключом из базы данных
Методы
Launch(string fileName = null, bool log = false) : string

Запускает кошелек Backpack, устанавливает расширение и импортирует/разблокирует кошелек.

Возвращает: Адрес активного кошелька

Параметры:

  • fileName - имя файла расширения (необязательно)
  • log - включить логирование (по умолчанию false)
Пример:

C#:
 string address = wallet.Launch(log: true); project.SendInfoToLog($"Адрес кошелька: {address}");

//запустить кошелек и получить адрес
ActiveAddress(bool log = false) : string
Получает адрес текущего активного кошелька.

Возвращает: Адрес активного кошелька

Параметры:

  • log - включить логирование (по умолчанию false)
Пример:

C#:
 string address = wallet.ActiveAddress(); project.SendInfoToLog($"Текущий адрес: {address}");

//получить адрес активного кошелька
CurrentChain(bool log = true) : string
Определяет текущую блокчейн-сеть кошелька.

Возвращает: Название сети ("mainnet", "devnet", "testnet", "ethereum")

Параметры:

  • log - включить логирование (по умолчанию true)
Пример:

C#:
 string chain = wallet.CurrentChain(); //определить текущую сеть

if (chain == "mainnet") { }
Unlock(bool log = false) : void
Разблокирует кошелек с помощью пароля.

Параметры:

  • log - включить логирование (по умолчанию false)
Пример:

C#:
 wallet.Unlock(log: true); //разблокировать кошелек
Approve(bool log = false) : void
Подтверждает действие в кошельке (транзакцию, подключение и т.д.).

Параметры:

  • log - включить логирование (по умолчанию false)
Пример:

C#:
 wallet.Approve(); //подтвердить действие в кошельке
Connect(bool log = false) : void
Подключает кошелек к веб-сайту, обрабатывает запросы на подключение.

Параметры:

  • log - включить логирование (по умолчанию false)
Пример:

C#:
 wallet.Connect(); //подключить кошелек к сайту
Devmode(bool enable = true) : void
Включает или выключает режим разработчика в кошельке.

Параметры:

  • enable - включить режим разработчика (по умолчанию true)
Пример:

C#:
 wallet.Devmode(true); //включить режим разработчика
DevChain(string reqmode = "devnet") : void
Переключает кошелек на тестовую сеть (devnet, testnet).

Параметры:

  • reqmode - требуемый режим сети (по умолчанию "devnet")
Пример:

C#:
 wallet.DevChain("testnet"); //переключиться на тестовую сеть
Add(string type = "Ethereum", string source = "key") : void
Добавляет новый кошелек указанного типа.

Параметры:

  • type - тип блокчейна ("Ethereum" или "Solana")
  • source - источник импорта ("key" или "phrase")
Пример:

C#:
 wallet.Add("Solana", "key"); //добавить Solana кошелек из приватного ключа
Switch(string type) : void
Переключается между кошельками разных типов.

Параметры:

  • type - тип кошелька для переключения ("Solana" или "Ethereum")
Пример:

C#:
 wallet.Switch("Ethereum"); //переключиться на Ethereum кошелек
Current() : string
Определяет тип текущего активного кошелька.

Возвращает: Тип кошелька ("Solana", "Ethereum" или "Undefined")

Пример:

C#:
 string currentType = wallet.Current(); //определить тип текущего кошелька

project.SendInfoToLog($"Текущий тип: {currentType}");
KeplrWallet
Класс KeplrWallet предоставляет инструменты для автоматизации работы с криптокошельком Keplr через браузерное расширение. Позволяет устанавливать расширение, импортировать кошельки, управлять ими и подписывать транзакции.

Конструкторы
KeplrWallet(IZennoPosterProjectModel, Instance, bool, string, string)

Инициализирует новый экземпляр класса KeplrWallet для работы с кошельком Keplr.

Параметры:

  • project (IZennoPosterProjectModel) - проект ZennoPoster
  • instance (Instance) - экземпляр браузера
  • log (bool) - включить логирование (по умолчанию false)
  • key (string) - приватный ключ (опционально)
  • seed (string) - мнемоническая фраза (опционально)
Пример:

C#:
 // инициализация KeplrWallet с логированием

var keplrWallet = new KeplrWallet(project, instance, log: true);

//отправить информацию в лог
Публичные методы
Launch(string, string, bool)
Возвращаемое значение:
void

Запускает расширение Keplr, устанавливает его при необходимости и импортирует кошелек из указанного источника.

Параметры:

  • source (string) - источник для импорта ("seed" или "keyEvm", по умолчанию "seed")
  • fileName (string) - имя файла расширения (опционально, по умолчанию используется встроенное значение)
  • log (bool) - включить логирование (по умолчанию false)
Пример:

C#:
 // запуск Keplr с импортом из seed-фразы

keplrWallet.Launch("seed", log: true);

//отправить информацию в лог
SetSource(string, bool)
Возвращаемое значение:
void

Устанавливает активный источник кошелька в Keplr. Автоматически управляет импортированными кошельками и переключается на нужный.

Параметры:

  • source (string) - источник кошелька ("seed" или "keyEvm")
  • log (bool) - включить логирование (по умолчанию false)
Пример:

C#:
 // переключение на кошелек из приватного ключа

keplrWallet.SetSource("keyEvm", log: true);

//отправить информацию в лог
Unlock(bool)
Возвращаемое значение:
void

Разблокирует кошелек Keplr, вводя пароль. Автоматически определяет, нужна ли разблокировка.

Параметры:

  • log (bool) - включить логирование (по умолчанию false)
Пример:

C#:
 // разблокировка кошелька

keplrWallet.Unlock(log: true);

//отправить информацию в лог
Sign(bool)
Возвращаемое значение:
void

Подписывает транзакцию в Keplr, ожидая появления окна подтверждения и автоматически нажимая кнопку "Approve".

Параметры:

  • log (bool) - включить логирование (по умолчанию false)
Пример:

C#:
 // подписание транзакции

keplrWallet.Sign(log: true);

//отправить информацию в лог
KeplrApprove(bool)
Возвращаемое значение:
string

Устаревший метод для подписания транзакций. Рекомендуется использовать метод Sign().

Параметры:

  • log (bool) - включить логирование (по умолчанию false)
Пример:

C#:
 // использование устаревшего метода (не рекомендуется)

string result = keplrWallet.KeplrApprove(log: true);

//отправить предупреждение в лог

project.SendWarningToLog("Используется устаревший метод KeplrApprove");
ZerionWallet
Класс для автоматизации кошелька Zerion в браузерных скриптах. Позволяет устанавливать расширение, импортировать кошельки по приватному ключу или мнемонике, подписывать транзакции и проверять доступные для получения награды.

Конструктор
ZerionWallet(project, instance, log, key, fileName)

Создает новый экземпляр класса для работы с кошельком Zerion.

Параметры:

  • project (IZennoPosterProjectModel) - текущий проект
  • instance (Instance) - экземпляр браузера
  • log (bool) - включить логирование (по умолчанию false)
  • key (string) - ключ кошелька ("key", "seed" или прямое значение, по умолчанию "key")
  • fileName (string) - имя файла расширения (по умолчанию "Zerion1.21.3.crx")
Пример:

C#:
 var wallet = new ZerionWallet(project, instance, log: true);
Методы
Launch(fileName, log, source, refCode)
Возвращает:
string - адрес активного кошелька

Устанавливает расширение Zerion, импортирует кошелек и подготавливает его к использованию. Автоматически определяет состояние кошелька и выполняет необходимые действия для полной настройки.

Параметры:

  • fileName (string) - имя файла расширения (необязательно)
  • log (bool) - включить логирование (по умолчанию false)
  • source (string) - источник ключа ("key" или "seed", по умолчанию "key")
  • refCode (string) - реферальный код (необязательно)
Пример:

C#:
 //запустить кошелек с основным ключом

string address = wallet.Launch(); project.SendInfoToLog($"Кошелек запущен: {address}");

//запустить с реферальным кодом

string address = wallet.Launch(refCode: "ABC123"); project.SendInfoToLog($"Кошелек запущен с рефералом: {address}");
Sign(log, deadline)
Возвращает:
bool - true если транзакция успешно подписана

Подписывает транзакцию или сообщение в кошельке Zerion. Автоматически находит кнопки "Confirm" или "Sign" и нажимает их.

Параметры:

  • log (bool) - включить логирование (по умолчанию false)
  • deadline (int) - максимальное время ожидания в секундах (по умолчанию 10)
Пример:

C#:
 //подписать транзакцию

bool success = wallet.Sign(); if (success) { }

//подписать с увеличенным временем ожидания

bool success = wallet.Sign(deadline: 30);
Connect(log)
Подключает кошелек к веб-сайту. Автоматически обрабатывает процесс подключения, включая добавление сайта в список доверенных и подтверждение подключения.

Параметры:

  • log (bool) - включить логирование (по умолчанию false)
Пример:

C#:
 //подключить кошелек к сайту

wallet.Connect();
SwitchSource(addressToUse)
Переключает активный адрес кошелька на указанный источник.

Параметры:

  • addressToUse (string) - источник адреса ("key" для основного ключа, "seed" для мнемоники, по умолчанию "key")
Пример:

C#:
 //переключиться на основной ключ

wallet.SwitchSource("key");

//переключиться на адрес из мнемоники

wallet.SwitchSource("seed");
WaitTx(deadline, log)
Возвращает:
bool - true если транзакция успешна, false если неудачна

Ожидает завершения транзакции в истории кошелька. Проверяет статус последней транзакции до её завершения.

Параметры:

  • deadline (int) - максимальное время ожидания в секундах (по умолчанию 60)
  • log (bool) - включить логирование (по умолчанию false)
Пример:

C#:
 //дождаться завершения транзакции

bool success = wallet.WaitTx(); if (success) { } else { project.SendErrorToLog("Транзакция не удалась");

}
Claimable(address)
Возвращает:
List - список ID доступных для получения наград

Получает список квестов и наград, доступных для получения по указанному адресу через API Zerion.

Параметры:

  • address (string) - адрес кошелька для проверки
Пример:

C#:
 //получить список доступных наград

var rewards = wallet.Claimable("0x742d35Cc6634C0532925a3b8D46d07c30e5b7A0c"); foreach (string rewardId in rewards) { project.SendInfoToLog($"Доступна награда: {rewardId}");

}
ActiveAddress()
Возвращает:
string - адрес активного кошелька

Получает адрес текущего активного кошелька в расширении Zerion.

Пример:

C#:
 //получить адрес активного кошелька

string currentAddress = wallet.ActiveAddress(); project.SendInfoToLog($"Текущий адрес: {currentAddress}");
Статические методы
TxFromUrl(url)
Возвращает:
string - JSON с данными транзакции

Извлекает данные транзакции из URL расширения Zerion.

Параметры:

  • url (string) - URL с данными транзакции
Пример:

C#:
 //извлечь данные транзакции из URL

string txData = ZerionWallet.TxFromUrl(instance.ActiveTab.URL); project.SendInfoToLog($"Данные транзакции: {txData}");
 
Последнее редактирование:

web3grep

Client
Регистрация
27.11.2023
Сообщения
65
Благодарностей
113
Баллы
33
Некоторые функции библиотеки расчитаны на определенный формат хранения данных - получить базу с таковым форматом можно с помощью шаблона DbBuilder - в настройках нужно выбрать тип базы данных (SQLite/Postgre).
Функции шифрования подгружаются в память перед загрузкой проекта из шаблона _SAFU - в шаблоне хранится ключи.
После сохранения ключа в шаблоне нужно снять галку с allusers в разделе "шифрование" и переименовать в _SAFU.zp
Launcher - создает в бд новую таблицу основываясь на настройках выбирает аккаунт по определенным фильтрам и запускает браузер, подгоняя некоторые параметры для лучшей анонимности скора у сканнеров и запускает проект.

Ссылка на версию библиотеки под которой тестировались шаблоны и писалась статья
github https://github.com/w3bgr3p/z3nCore/tree/master/verions/v1.2.1.23
codeberg (mirror) https://codeberg.org/w3bgrep/z3nCore/src/branch/master/verions/v1.2.1.23
 

Вложения

Последнее редактирование:
  • Спасибо
Реакции: kul0n и NickR

Astraport

Client
Регистрация
01.05.2015
Сообщения
5 051
Благодарностей
4 539
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)