[SPOILER= ProjectExtentions]
[SPOILER= Exceptions]
TracedException
Специализированный класс исключения, который автоматически собирает информацию о месте возникновения ошибки и вызывающем методе для упрощения отладки.
Конструкторы
TracedException(Exception, string)
Создает новое исключение с трассировкой на основе исходного исключения.
Параметры:
innerException(Exception) - Исходное исключение, которое нужно обернутьcaller(string, необязательный) - Имя вызывающего метода
[CODE=csharp] try { // какой-то код, который может выдать ошибку var result = SomeMethod(); } catch (Exception ex) { //создать трассируемое исключение var tracedException = new TracedException(ex, “MyMethod”); throw tracedException; } [/CODE]
ExceptionExtensions
Набор методов расширения для работы с исключениями, позволяющий легко логировать и выбрасывать ошибки с трассировкой.
Методы
Throw(Exception, IZennoPosterProjectModel, string, bool)
Возвращаемое значение: string - Сообщение об ошибке
Обрабатывает исключение: логирует его и либо выбрасывает, либо возвращает сообщение об ошибке.
Параметры:
ex(Exception) - Исключение для обработкиproject(IZennoPosterProjectModel) - Объект проекта для логированияcaller(string, необязательный) - Имя вызывающего метода (заполняется автоматически)throwEx(bool, по умолчанию true) - Выбрасывать ли исключение после логирования
[CODE=csharp] try { // код, который может выдать ошибку DoSomething(); } catch (Exception ex) { //логировать и выбросить исключение ex.Throw(project); }
//или только залогировать без выброса исключения try { DoSomething(); } catch (Exception ex) { //получить сообщение об ошибке без выброса исключения string errorMessage = ex.Throw(project, throwEx: false); project.SendInfoToLog(“Ошибка обработана: ” + errorMessage); } [/CODE]
Throw(Exception, string)
Возвращаемое значение: Exception - Трассируемое исключение
Создает и выбрасывает трассируемое исключение на основе исходного.
Параметры:
ex(Exception) - Исключение для обработкиcaller(string, необязательный) - Имя вызывающего метода (заполняется автоматически)
[CODE=csharp] try { // код, который может выдать ошибку DoSomething(); } catch (Exception ex) { //создать и выбросить трассируемое исключение ex.Throw(); } [/CODE]
Throw(IZennoPosterProjectModel, string, string)
Возвращаемое значение: Exception - Трассируемое исключение
Создает и выбрасывает новое исключение с указанным сообщением, логируя информацию о последнем выполненном действии.
Параметры:
project(IZennoPosterProjectModel) - Объект проектаexMessage(string, необязательный) - Сообщение об ошибкеcaller(string, необязательный) - Имя вызывающего метода (заполняется автоматически)
[CODE=csharp] //проверить условие и выбросить ошибку при необходимости if (someCondition) { project.Throw(“Критическая ошибка: условие не выполнено”); } [/CODE]
Throw(IZennoPosterProjectModel, Exception, string)
Возвращаемое значение: Exception - Трассируемое исключение
Обрабатывает существующее исключение, логирует его с информацией о последнем действии и выбрасывает трассируемую версию.
Параметры:
project(IZennoPosterProjectModel) - Объект проектаex(Exception) - Исключение для обработкиcaller(string, необязательный) - Имя вызывающего метода (заполняется автоматически)
[CODE=csharp] try { // код, который может выдать ошибку DoSomething(); } catch (Exception ex) { //обработать и выбросить с логированием контекста проекта project.Throw(ex); } [/CODE][/SPOILER] [SPOILER= FS]
Класс FS
Утилитарный класс для работы с файловой системой, предоставляющий методы для управления файлами и директориями, копирования данных и работы с учетными данными.
Конструкторы
FS(IZennoPosterProjectModel project, bool log = false, string classEmoji = null)
Создает новый экземпляр класса FS.
Параметры:
project- экземпляр проекта ZennoPosterlog- включить логирование (по умолчанию false)classEmoji- эмодзи для класса (необязательный параметр)
Пример использования: [CODE=csharp] // создание экземпляра без логирования var fs = new FS(project);
// создание экземпляра с включенным логированием var fs = new FS(project, true); [/CODE]
Методы
void RmRf(string path)
Рекурсивно удаляет директорию со всем содержимым.
Параметры:
path- путь к удаляемой директории
Пример использования: [CODE=csharp] var fs = new FS(project); //удалить директорию с файлами fs.RmRf(@“C:\temp\folder”); [/CODE]
void CopyDir(string sourceDir, string destDir)
Копирует директорию со всем содержимым в указанное место.
Параметры:
sourceDir- путь к исходной директорииdestDir- путь к целевой директории
Пример использования: [CODE=csharp] var fs = new FS(project); //скопировать папку с файлами fs.CopyDir(@“C:\source”, @“C:\destination”); [/CODE]
string GetRandomFile(string directoryPath)
Возвращает: случайный файл из указанной директории или null, если файлы не найдены
Получает случайный файл из директории, включая подпапки.
Параметры:
directoryPath- путь к директории для поиска файлов
Пример использования: [CODE=csharp] //получить случайный файл из папки string randomFile = FS.GetRandomFile(@“C:\images”); if (randomFile != null) { project.SendInfoToLog(“Выбран файл: ” + randomFile); } [/CODE]
string GetNewCreds(string dataType)
Возвращает: строку с учетными данными или null при ошибке
Получает новые учетные данные из файла fresh и перемещает их в файл used.
Параметры:
dataType- тип данных для получения (имя файла без расширения)
Пример использования: [CODE=csharp] 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(“Аккаунты закончились”); } [/CODE][/SPOILER] [SPOILER= Reporter]
Reporter
Класс для создания отчётов об ошибках и успешных операциях в проектах. Позволяет собирать информацию о последних ошибках, создавать отчёты в различных форматах и отправлять уведомления в Telegram.
Конструкторы
Reporter(IZennoPosterProjectModel project, Instance instance, bool log = false, string classEmoji = null)
Создаёт новый экземпляр класса Reporter для работы с отчётами.
Параметры:
project- объект проекта ZennoPosterinstance- экземпляр браузераlog- флаг включения логирования (по умолчанию false)classEmoji- эмодзи для класса (по умолчанию null)
[CODE=csharp] //создание объекта Reporter var reporter = new Reporter(project, instance);
//создание с дополнительными параметрами
var reporter = new Reporter(project, instance, true, ”📋”);
[/CODE]
Методы
ErrorReport(bool toTg = false, bool toDb = false, bool screensot = false)
Возвращаемое значение: string - текстовый отчёт об ошибке
Создаёт подробный отчёт о последней ошибке в проекте и выполняет дополнительные действия по настройке.
Параметры:
toTg- отправить отчёт в Telegram (по умолчанию false)toDb- обновить статус в базе данных (по умолчанию false)screensot- создать скриншот страницы (по умолчанию false)
[CODE=csharp] //создание простого отчёта об ошибке string errorReport = reporter.ErrorReport(); project.SendInfoToLog(“Отчёт об ошибке: ” + errorReport);
//создание отчёта с отправкой в Telegram и скриншотом string fullReport = reporter.ErrorReport(toTg: true, screensot: true);
//создание отчёта с обновлением базы данных string dbReport = reporter.ErrorReport(toDb: true); [/CODE]
SuccessReport(bool log = false, bool ToTg = false)
Возвращаемое значение: string - текстовый отчёт об успешном выполнении
Создаёт отчёт об успешном завершении операции с информацией о времени выполнения.
Параметры:
log- вывести отчёт в лог (по умолчанию false)ToTg- отправить отчёт в Telegram (по умолчанию false)
[CODE=csharp] //создание простого отчёта об успехе string successReport = reporter.SuccessReport();
//создание отчёта с выводом в лог string loggedReport = reporter.SuccessReport(log: true); project.SendInfoToLog(“Операция завершена успешно”);
//создание отчёта с отправкой в Telegram string tgReport = reporter.SuccessReport(ToTg: true); [/CODE][/SPOILER] [SPOILER= Rnd]
Класс Rnd
Статический класс для генерации различных случайных значений: строк, чисел, никнеймов и других данных, используемых в автоматизации.
Методы
Seed()
Возвращаемое значение: string
Описание: Генерирует мнемоническую фразу из 12 слов на английском языке
[CODE=csharp] string mnemonic = Rnd.Seed(); project.SendInfoToLog($“Generated mnemonic: {mnemonic}”); [/CODE]
RndHexString(int length)
Возвращаемое значение: string
Описание: Генерирует случайную hex-строку заданной длины с префиксом “0x”
Параметры:
length(int) - длина генерируемой hex-строки (без учета префикса “0x”)
[CODE=csharp] string hexString = Rnd.RndHexString(8); project.SendInfoToLog($“Generated hex: {hexString}”); // Например: 0x1a2b3c4d [/CODE]
RndString(int length)
Возвращаемое значение: string
Описание: Генерирует случайную строку из букв и цифр заданной длины
Параметры:
length(int) - длина генерируемой строки
[CODE=csharp] string randomString = Rnd.RndString(10); project.SendInfoToLog($“Random string: {randomString}”); // Например: Kj8Xm2Qr9Z [/CODE]
RndNickname()
Возвращаемое значение: string
Описание: Генерирует случайный никнейм из прилагательного, существительного и суффикса (максимум 15 символов)
[CODE=csharp] string nickname = Rnd.RndNickname(); project.SendInfoToLog($“Generated nickname: {nickname}”); // Например: MysticWolfX [/CODE]
RndInvite(this IZennoPosterProjectModel project, object limit = null, bool log = false)
Возвращаемое значение: string
Описание: Получает случайный реферальный код из базы данных или использует существующий из переменной cfgRefCode
Параметры:
limit(object, опционально) - максимальный ID записи для выборкиlog(bool) - включить логирование (по умолчанию false)
[CODE=csharp] string refCode = project.RndInvite(100, true); project.SendInfoToLog($“Using ref code: {refCode}”); [/CODE]
RndPercent(decimal input, double percent, double maxPercent)
Возвращаемое значение: double
Описание: Вычисляет процент от числа с случайным уменьшением до максимального процента
Параметры:
input(decimal) - исходное числоpercent(double) - процент от числа (0-100)maxPercent(double) - максимальный процент случайного уменьшения (0-100)
[CODE=csharp] double result = Rnd.RndPercent(1000m, 50, 10); project.SendInfoToLog($“Result: {result}”); // 50% от 1000 с уменьшением до 10% [/CODE]
RndDecimal(this IZennoPosterProjectModel project, string Var)
Возвращаемое значение: decimal
Описание: Получает случайное decimal число из переменной проекта (поддерживает диапазон через дефис)
Параметры:
Var(string) - имя переменной проекта
[CODE=csharp] // Переменная содержит “10.5-20.7” decimal randomDecimal = project.RndDecimal(“myRange”); project.SendInfoToLog($“Random decimal: {randomDecimal}”); [/CODE]
RndInt(this IZennoPosterProjectModel project, string Var)
Возвращаемое значение: int
Описание: Получает случайное целое число из переменной проекта (поддерживает диапазон через дефис)
Параметры:
Var(string) - имя переменной проекта
[CODE=csharp] // Переменная содержит “5-15” int randomInt = project.RndInt(“myIntRange”); project.SendInfoToLog($“Random integer: {randomInt}”); [/CODE]
RndBool(this int truePercent)
Возвращаемое значение: bool
Описание: Возвращает случайное булево значение с заданной вероятностью true в процентах
Параметры:
truePercent(int) - вероятность получить true в процентах (0-100)
[CODE=csharp] bool result = 75.RndBool(); // 75% вероятность получить true project.SendInfoToLog($“Random bool: {result}”); [/CODE][/SPOILER] [SPOILER= Utils]
Utils
Статический класс с вспомогательными методами для упрощения работы с ZennoPoster.
Методы
L0g
Отправляет сообщение в лог проекта.
Параметры:
toLog(string) - сообщение для записи в логcallerName(string, опционально) - имя вызывающего метода (заполняется автоматически)show(bool, по умолчанию true) - показывать ли сообщение в интерфейсеthr0w(bool, по умолчанию false) - выбрасывать ли исключениеtoZp(bool, по умолчанию true) - отправлять ли в ZennoPoster
Пример использования: [CODE=csharp] //отправить простое сообщение в лог project.L0g(“Операция выполнена успешно”);
//отправить сообщение без отображения в интерфейсе project.L0g(“Отладочное сообщение”, show: false); [/CODE]
Range
Обрабатывает диапазон аккаунтов и устанавливает соответствующие переменные проекта.
Возвращает: int - конечное значение диапазона
Параметры:
accRange(string, опционально) - строка диапазона, если не указана, берется из переменной cfgAccRangeoutput(string, опционально) - не используется в текущей реализацииlog(bool, по умолчанию false) - выводить ли информацию в лог
Пример использования: [CODE=csharp] //обработать диапазон из переменной проекта int maxRange = project.Range();
//обработать конкретный диапазон int maxRange = project.Range(“1-10”);
//обработать список аккаунтов int maxRange = project.Range(“1,5,8,12”); [/CODE]
Clean
Очищает ресурсы браузера и профиля после завершения работы.
Параметры:
instance(Instance) - экземпляр браузера для очистки
Пример использования: [CODE=csharp] //очистить ресурсы браузера project.Clean(instance); [/CODE]
Finish
Завершает работу с аккаунтом, сохраняет данные и отправляет уведомления.
Параметры:
instance(Instance) - экземпляр браузера
Пример использования: [CODE=csharp] //корректно завершить работу с аккаунтом project.Finish(instance); [/CODE]
GetExtVer
Получает версию расширения из файла настроек Chrome.
Возвращает: string - версия расширения
Параметры:
securePrefsPath(string) - путь к файлу Secure PreferencesextId(string) - ID расширения
Пример использования: [CODE=csharp] //получить версию расширения string version = Utils.GetExtVer(@“C:\Chrome\Default\Secure Preferences”, “extension_id”); project.SendInfoToLog($“Версия расширения: {version}”); [/CODE]
ObsoleteCode
Выводит предупреждение об использовании устаревшего кода.
Параметры:
newName(string, по умолчанию “unknown”) - рекомендуемый новый метод
Пример использования: [CODE=csharp] //предупредить об устаревшем коде project.ObsoleteCode(“NewMethod.DoSomething”); [/CODE]
RunZp
Выполняет другой проект ZennoPoster с передачей переменных.
Возвращает: bool - результат выполнения проекта
Параметры:
vars(List, опционально) - список имен переменных для передачи
Пример использования: [CODE=csharp] //выполнить проект без передачи переменных bool result = project.RunZp();
//выполнить проект с передачей переменных
var varsToPass = new List