Convert this config to C# class:
# НЕЛЬЗЯ УДАЛЯТЬ ЛЮБЫЕ СТРОКИ ИЗ ЭТОГО ФАЙЛА

# это комментарий и он не обрабатывается парсером
# любые комментарии удалять нельзя

# логика файла:
# сначала идет несколько строк-комментариев, в которых содержится информация о функции и допустимых значениях для её активации
# а затем поле для ввода одного из допустимых значений этой функции.

# для активации желаемой функции необходимо просто заменить старое значение функции - новым, сохраняя исходный формат ввода

# ============================================================================================================================

# Необходимо получить: App api_id, App api_hash для аккаунта, который планируете использовать под парсинг
# Заходим на сайт https://my.telegram.org/ и авторизовываемся в аккаунте, который будем использовать в парсере
# Далее переходим по ссылке "API development tools" на странице, полученной после авторизации
# После перехода необходимо заполнить только три поля: App title, Short name, Platform (выбираем Desktop), нажав на "Create Application".
# Пример заполнения: App title - my first tg app, Short name - my tg app
# Полученные App api_id, App api_hash вставить ниже в поля TELEGRAM_API_ID, TELEGRAM_API_HASH соответственно

# ВАЖНО: Отключите VPN либо выйдите из режима инкогнито, если при получении ключей возникает ошибка (ERROR)

TELEGRAM_API_ID = 12345678 # здесь App api_id, указано для примера
TELEGRAM_API_HASH = adksalkdsaklxsaklskdladkla # здесь App api_hash, указано для примера

# Прокси - случай мультиаккинга или Вы хотите скрыть свой реальный ip/geo/иное при парсинге
# Можно пользоваться хоть бесплатными прокси, парсер к ним адаптирован, главное чтобы они были не забанены телеграмом

PROXY_PARSING_ENABLED = False # True / False парсить через прокси
PROXY_PARSING_SCHEME = socks5 # socks4/5 / http протоколы (https также возможен, установить в таком случае http)
PROXY_PARSING_HOSTNAME = 167.71.241.136 # имя хоста, указано для примера
PROXY_PARSING_PORT = 33299 # порт, указано для примера
PROXY_PARSING_USERNAME = # при необходимости авторизации, иначе оставить пустым после знака =
PROXY_PARSING_PASSWORD = # при необходимости авторизации, иначе оставить пустым после знака =

# Задаем источник (донор) для парсинга контента и / или участников канала / группы
# Файл sources_links.txt находится в папке config

SOURCES_LINKS_FILE = sources_links.txt # файл с источниками, каждый из которых будем парсить

# Парсинг участников групп и сохранение в формате CSV
# При парсинге не учитываются удаленные аккаунты и боты

# Параметры выгрузки:
# id, фото, премиум подписка, статус участника (если не парсинг активных участников), имя, фамилия, юзернейм, номер телефона,
# дата вступления (если не парсинг активных участников), онлайн статус, последняя активность (если парсинг активных участников)

# Для парсинга онлайн статуса необходимо чтобы в аккаунте, который используется под парсинг, онлайн статус был виден всем
# Для повторного парсинга участников группы необходимо удалить полученный ранее csv файл в папке group_members_parsing

GROUP_MEMBERS_PARSING_CSV_ENABLED = False # True / False парсинг участников групп с сохранением в формате CSV
GROUP_MEMBERS_PARSING_BY_CHAT_HISTORY = False # True / False - True, если необходимо парсить только активных участников или они скрыты

# Парсинг участников каналов и сохранение в формате CSV

# По умолчанию, участники парсятся по анализу комментариев - активные участники (CHANNEL_MEMBERS_PARSING_CSV_ENABLED = True)
# Получить последних 200 подписчиков канала (для админов) - доп. установить CHANNEL_MEMBERS_PARSING_AS_ADMIN_ENABLED = True

# При парсинге не учитываются удаленные аккаунты и боты

# Параметры выгрузки:
# id, фото, премиум подписка, статус участника (включена опция для админов), имя, фамилия, юзернейм, номер телефона,
# дата вступления (включена опция для админов), онлайн статус, последняя активность (отключена опция для админов)

# Для парсинга онлайн статуса необходимо чтобы в аккаунте, который используется под парсинг, онлайн статус был виден всем
# Для повторного парсинга участников канала необходимо удалить полученный ранее csv файл в папке channel_members_parsing

CHANNEL_MEMBERS_PARSING_CSV_ENABLED = False # True / False парсинг участников каналов с сохранением в формате CSV
CHANNEL_MEMBERS_PARSING_AS_ADMIN_ENABLED = False # True / False парсинг последних 200 участников каналов (для админов)

# Парсинг участников в отрезке заданных дат

# В случае обычного парсинга участников - отрезок дат применяется к полю "дата вступления"
# В случае парсинга активных участников - отрезок дат применяется к полю "последняя активность"

# При вводе дат, учитывай, что:
# время местное (то, которое Вы видите под постом в доноре),
# формат строгий, т.е. должен быть такого вида 2022-11-02 00:01:02 (Год-Месяц-День Час:Минута:Секунда)
# где в записи 2022-11-02 00:01:02: 2022 - год, 11 - месяц, 02 - день, 00 - часов, 01 - минут, 02 секунд

MEMBERS_PARSING_FROM_TO_DATE_ENABLED = False # True / False парсинг участников в отрезке заданных дат
MEMBERS_PARSING_FROM_DATE_VALUE = 2023-06-21 00:00:00 # дата, с которой начинаем парсить участников
MEMBERS_PARSING_TO_DATE_VALUE = 2023-06-21 23:59:00 # дата, до которой парсим участников

# Фильтрация участников по полям: премиум подписка, юзернейм, номер телефона

MEMBERS_PARSING_ONLY_WITH_PREMIUM_SUBN = False # True / False парсить участников только с премиум подпиской
MEMBERS_PARSING_ONLY_WITH_USERNAME = False # True / False парсить участников только с наличием юзернейма
MEMBERS_PARSING_ONLY_WITH_PHONE_NUMBER = False # True / False парсить участников только с наличием номера телефона

# Дополнительно парсить поле "о себе" участников

MEMBERS_BIO_PARSING_ENABLED = False # True / False парсить дополнительно поле "о себе" участников

# Дополнительно выдать список участников, которые состоят во всех указанных источниках одновременно
# Результат сохраняется в папке members_parsing_intersect - "пересечение участников.csv"

MEMBERS_PARSING_INTERSECT_ENABLED = False # True / False список участников, состоящих во всех указанных источниках одновременно

# Парсинг постов донора ТОЛЬКО в отрезке дат ОТ и ДО
# Подходит когда нужно выбрать только некоторые посты (в отрезке дат) для парсинга, например чтобы сделать
# отложенный постинг по дате (см. ниже - "Отложенный постинг по дате"), либо просто запостить только эти посты

# При вводе дат, учитывай, что:
# время местное (то, которое Вы видите под постом в доноре),
# формат строгий, т.е. должен быть такого вида 2022-11-02 00:01:02 (Год-Месяц-День Час:Минута:Секунда)
# где в записи 2022-11-02 00:01:02: 2022 - год, 11 - месяц, 02 - день, 00 - часов, 01 - минут, 02 секунд

FROM_TO_DATE_PARSING_ENABLED = False # True / False парсить только с определенной даты и до определенной даты
FROM_TO_DATE_PARSING_FROM_VALUE = 2023-04-23 00:00:00 # дата, с которой начинаем парсить
FROM_TO_DATE_PARSING_TO_VALUE = 2023-04-23 23:59:59 # дата, до которой парсим

# Парсинг постов начиная с определенной даты и до последнего поста донора ИЛИ
# значение (0) - парсить с самого начала донора, значение (-1) - парсить только с новых или не парсить вообще в доноре

# В последующий запуск парсер будет парсить уже новые посты с указанной позиции ранее, а не начинать с указанной позиции вновь

# Эта функция игнорируется, если
# установлено FROM_TO_DATE_PARSING_ENABLED = True (см. выше - "Парсинг постов донора ТОЛЬКО в отрезке дат ОТ и ДО")

# При вводе даты, учитывай, что:
# время местное (то, которое Вы видите под постом в доноре),
# формат строгий, т.е. должен быть такого вида 2022-11-02 00:01:02 (Год-Месяц-День Час:Минута:Секунда)
# где в записи 2022-11-02 00:01:02: 2022 - год, 11 - месяц, 02 - день, 00 - часов, 01 - минут, 02 секунд

POSTS_PARSING_START_DATE = 0 # дата поста, ИЛИ 0, если с самого начала донора, -1 с новых постов или не парсить посты вообще

# Парсинг постов в режиме реального времени
# Если появился новый пост в доноре, то парсер моментально или с задержкой (по желанию) его схватывает и обрабатывает

# Если Вы указали POSTS_PARSING_START_DATE = -1 для того, чтобы парсить с новых, то в этой функции нужно выставить значение True

# Эта функция игнорируется, если
# установлено FROM_TO_DATE_PARSING_ENABLED = True (см. выше - "Парсинг постов донора ТОЛЬКО в отрезке дат ОТ и ДО")

# На все доноры (источники) должна быть подписка с аккаунта, который планируете использовать под парсинг

POSTS_PARSING_REAL_TIME_ENABLED = False # True / False парсинг постов в режиме реального времени
POSTS_PARSING_REAL_TIME_DELAY_SECS = 0.1 # задержка перед проверкой в секундах, игнорируется если TG_REAL_TIME_PARSING_POSTS_FAILURE = YES

# Возможность задать время ожидания в секундах с момента публикации автором поста перед его парсингом
# Например для случаев, когда посты могут редактироваться или удаляться после публикации

# Если с момента публикации уже прошло нижеуказанное число секунд, то ожидания не будет

POSTS_PARSING_DELAY_SECS = 0 # время ожидания в секундах с момента выхода поста перед его парсингом

# Информация об авторе поста (id, имя, @username, телефон, дата поста, ссылка на пост) при парсинге постов из групп / чатов

POSTS_PARSING_IN_GROUP_ADD_AUTHOR_INFO_ENABLED = False # True / False добавлять информацию об авторе после поста
POSTS_PARSING_IN_GROUP_ADD_AUTHOR_INFO_TITLE = Информация об авторе предыдущего поста:
POSTS_PARSING_IN_GROUP_ADD_AUTHOR_INFO_ID_ADD = True # True / False указывать айди автора
POSTS_PARSING_IN_GROUP_ADD_AUTHOR_INFO_NAME_ADD = True # True / False указывать имя автора
POSTS_PARSING_IN_GROUP_ADD_AUTHOR_INFO_USER_NAME_ADD = True # True / False указывать юзернейм автора
POSTS_PARSING_IN_GROUP_ADD_AUTHOR_INFO_PHONE_NUMBER_ADD = True # True / False указывать номер телефона автора
POSTS_PARSING_IN_GROUP_ADD_AUTHOR_INFO_POST_DATE_ADD = True # True / False указывать дату поста в источнике
POSTS_PARSING_IN_GROUP_ADD_AUTHOR_INFO_LINK_POST_ADD = True # True / False указывать ссылку на пост в источнике

# Пропуск постов указанных авторов (для групп или чатов)
# Файл posts_parsing_in_group_ignore_authors.txt находится в папке config

POSTS_PARSING_IN_GROUP_IGNORE_THESE_AUTHORS_ENABLED = False # True / False пропускать посты указанных авторов
POSTS_PARSING_IN_GROUP_IGNORE_THESE_AUTHORS_LIST = posts_parsing_in_group_ignore_authors.txt

# Парсинг постов только указанных авторов (для групп или чатов)
# Файл posts_parsing_in_group_authors.txt находится в папке config

POSTS_PARSING_IN_GROUP_ONLY_THESE_AUTHORS_ENABLED = False # True / False парсить посты только указанных авторов
POSTS_PARSING_IN_GROUP_ONLY_THESE_AUTHORS_LIST = posts_parsing_in_group_authors.txt

# Парсинг только постов, которые не содержат рекламу
# Вы можете указывать свои ссылки, которые не стоит считать за рекламу, в файле no_advert_ignore_links.txt папки config

POSTS_PARSING_NO_ADVERT_ENABLED = False # True / False парсить только те посты, которые не содержат рекламу
POSTS_PARSING_NO_ADVERT_IGNORE_LIST = no_advert_ignore_links.txt

# Парсинг только постов, которые содержат как минимум N ссылок

POSTS_PARSING_ONLY_WITH_LINKS = False # True / False парсить только те посты, которые содержат как минимум N ссылок
POSTS_PARSING_ONLY_WITH_LINKS_MIN_LINKS_NUMBER = 1 # минимальное число ссылок в посте для отбора

# Парсинг только уникальных постов из источников
# Позволяет пропускать уже ранее спаршенные или похожие (% сходства задается) на ранее спаршенные посты в источниках

POSTS_PARSING_TEXT_SIMILARITY_CHECK_ENABLED = False # True / False парсить только уникальные посты из источников
POSTS_PARSING_TEXT_SIMILARITY_PERCENT_MIN_VALUE = 80.0 # минимальный % сходства для пропуска

# Отбор постов по числу реакций / комментариев / репостов / просмотров / ER (уровень вовлечённости)
# Задаем минимальное значение по каждому параметру для отбора

POSTS_PARSING_BY_REACTIONS_MIN_VALUE = 0 # минимальное число реакций для отбора
POSTS_PARSING_BY_COMMENTS_MIN_VALUE = 0 # минимальное число комментариев для отбора
POSTS_PARSING_BY_FORWARDS_MIN_VALUE = 0 # минимальное число репостов для отбора
POSTS_PARSING_BY_VIEWS_MIN_VALUE = 0 # минимальное число просмотров для отбора
POSTS_PARSING_BY_ER_MIN_PERCENT_VALUE = 0.0 # минимальный уровень вовлечённости (%) для отбора

# Пропуск постов по ключевым словам/фразам/предложениям
# Файл skip_posts_keywords.txt находится в папке config

SKIP_POSTS_KEYWORDS_ENABLED = False # True / False пропускать посты по ключевым словам/фразам/предложениям
SKIP_POSTS_KEYWORDS_LIST = skip_posts_keywords.txt # файл с ключевыми словами/фразами/предложениями

# Отбор постов по ключевым словам/фразам/предложениям
# Файл selection_posts_keywords.txt находится в папке config

SELECTION_POSTS_KEYWORDS_ENABLED = False # True / False отбирать посты по ключевым словам/фразам/предложениям
SELECTION_POSTS_KEYWORDS_LIST = selection_posts_keywords.txt # файл с ключевыми словами/фразами/предложениями

# ChatGPT yes-no модерация постов
# Необходимо указать промпт, на который есть только два ответа - yes или no
# При yes - пост отбирается, а при no - пост пропускается

# Промпт писать на английском языке и по аналогии с предложенным форматом ниже

# Необходимо получить OpenAI API ключ на странице https://platform.openai.com/account/api-keys
# Если ChatGPT заблокирован в Вашей стране, то дополнительно нужен прокси - https / socks4/5

YES_NO_MODERATION_CHATGPT_ENABLED = False # True / False - ChatGPT yes-no модерация постов
YES_NO_MODERATION_CHATGPT_PROXY_URI = # указать здесь прокси в формате scheme://username:password@ip:port
YES_NO_MODERATION_CHATGPT_API_KEYS_LIST = yes_no_moderation_chatgpt_api_keys.txt # файл со списком OpenAI API ключей
YES_NO_MODERATION_CHATGPT_MODEL = gpt-3.5-turbo # модель OpenAI
YES_NO_MODERATION_CHATGPT_PROMPT_PART_1 = Are there any links in this text?
YES_NO_MODERATION_CHATGPT_PROMPT_PART_2 = Return only YES or only NO and nothing else
YES_NO_MODERATION_CHATGPT_TEMPERATURE = 1.0 # температура, от 0 до 2

# Вырезаем или заменяем (для замены дополнительно нужно установить CUT_LINKS_REPLACEMENT_RANDOMLY_ENABLED = True)
# все рекламные ссылки (те, на что можно нажать и перейти куда-то сразу) в постах
# Файл links_replacement_randomly_list.txt находится в папке config

CUT_LINKS_ENABLED = False # True / False - вырезать (или заменять на свои) ссылки, слова с ссылками
CUT_LINKS_REPLACEMENT_RANDOMLY_ENABLED = False # True / False заменять ли каждую ссылку случайной
CUT_LINKS_REPLACEMENT_RANDOMLY_LIST = links_replacement_randomly_list.txt # файл значений для случайной замены

# Замена в тексте
# Файл text_replacement_replace_to_list.txt находится в папке config

TEXT_REPLACEMENT_ENABLED = False # True / False - замена в тексте
TEXT_REPLACEMENT_REPLACEABLE_LIST = text_replacement_replaceable_list.txt # файл со словами/предложениями для поиска
TEXT_REPLACEMENT_RANDOMLY_REPLACE_TO_LIST = text_replacement_replace_to_list.txt # файл значений для случайной замены

# Удаление в тексте
# Файл cut_in_text_list.txt находится в папке config

CUT_IN_TEXT_ENABLED = False # True / False - удаление в тексте
CUT_IN_TEXT_LIST = cut_in_text_list.txt # файл со словами/предложениями/фразами для удаления

# Уникализация с помощью ChatGPT
# Делает текст поста уникальнее с сохранением форматирования

# Промпт писать на английском языке и по аналогии с предложенным форматом ниже

# Необходимо получить OpenAI API ключ на странице https://platform.openai.com/account/api-keys
# Если ChatGPT заблокирован в Вашей стране, то дополнительно нужен прокси - https / socks4/5

UNIQUENESS_TEXT_CHATGPT_ENABLED = False # True / False - уникализация текста с помощью ChatGPT
UNIQUENESS_TEXT_CHATGPT_PROXY_URI = # указать здесь прокси в формате scheme://username:password@ip:port
UNIQUENESS_TEXT_CHATGPT_API_KEYS_LIST = uniqueness_chatgpt_api_keys.txt # файл со списком OpenAI API ключей
UNIQUENESS_TEXT_CHATGPT_MODEL = gpt-3.5-turbo # модель OpenAI
UNIQUENESS_TEXT_CHATGPT_PROMPT_PART_1 = Please make the following text unique while keeping it in the original Russian language.
UNIQUENESS_TEXT_CHATGPT_PROMPT_PART_2 = Return only the unique text in the original Russian language and nothing else
UNIQUENESS_TEXT_CHATGPT_TEMPERATURE = 1.0 # температура, от 0 до 2

# Перевод с помощью ChatGPT
# Переводит текст поста на указанный Вами язык с сохранением форматирования

# Промпт писать на английском языке и по аналогии с предложенным форматом ниже

# Необходимо получить OpenAI API ключ на странице https://platform.openai.com/account/api-keys
# Если ChatGPT заблокирован в Вашей стране, то дополнительно нужен прокси - https / socks4/5

TRANSLATE_TEXT_CHATGPT_ENABLED = False # True / False - перевод текста с помощью ChatGPT
TRANSLATE_TEXT_CHATGPT_PROXY_URI = # указать здесь прокси в формате scheme://username:password@ip:port
TRANSLATE_TEXT_CHATGPT_API_KEYS_LIST = translate_chatgpt_api_keys.txt # файл со списком OpenAI API ключей
TRANSLATE_TEXT_CHATGPT_MODEL = gpt-3.5-turbo # модель OpenAI
TRANSLATE_TEXT_CHATGPT_PROMPT_PART_1 = Translate the following text into English language. Retain the original format.
TRANSLATE_TEXT_CHATGPT_PROMPT_PART_2 = Return only the translation into English language and nothing else
TRANSLATE_TEXT_CHATGPT_TEMPERATURE = 1.0 # температура, от 0 до 2

# Добавление хэштегов к посту с помощью ChatGPT
# Генерирует желаемое число хэштегов исходя из текста поста и добавляет в конец поста

# Добавление хэштегов не происходит, если в посте уже есть как минимум один хэштег
# Промпт писать на английском языке и по аналогии с предложенным форматом ниже

# Необходимо получить OpenAI API ключ на странице https://platform.openai.com/account/api-keys
# Если ChatGPT заблокирован в Вашей стране, то дополнительно нужен прокси - https / socks4/5

ADD_HASHTAGS_CHATGPT_ENABLED = False # True / False - добавление хэштегов к посту с помощью ChatGPT
ADD_HASHTAGS_CHATGPT_PROXY_URI = # указать здесь прокси в формате scheme://username:password@ip:port
ADD_HASHTAGS_CHATGPT_API_KEYS_LIST = add_hashtags_chatgpt_api_keys.txt # файл со списком OpenAI API ключей
ADD_HASHTAGS_CHATGPT_MODEL = gpt-3.5-turbo # модель OpenAI
ADD_HASHTAGS_CHATGPT_PROMPT_PART_1 = Please generate 5 hashtags for this text in the same language and in one line.
ADD_HASHTAGS_CHATGPT_PROMPT_PART_2 = Return only the 5 hashtags for this text in the same language and in one line and nothing else
ADD_HASHTAGS_CHATGPT_TEMPERATURE = 1.0 # температура, от 0 до 2

# Добавление ссылки на источник в конец поста
# Указывает ссылку на источник в конец поста

ADD_SOURCE_LINK_AT_END_OF_POST_ENABLED = False # True / False - добавлять ссылку на источник в конец поста
ADD_SOURCE_LINK_AT_END_OF_POST_TEXT_BEFORE = Источник # добавить свой текст перед ссылкой либо оставить поле пустым

# Добавление подписи в конец поста
# Указывает текст + ссылка в конце поста

# В поле ADD_POST_SIGNATURE_DATA можно указать значения вида:
# Текст->Ссылка - к "Текст" привязывается значение "Ссылка"
# Текст1|Текст2|Текст3->Ссылка - к случайному из трех значений "Текст1", "Текст2", "Текст3" привязывается значение "Ссылка"
# Текст->Ссылка1|Ссылка2|Ссылка3 - к "Текст" случайно привязывается одно из трех значений "Ссылка1", "Ссылка2", "Ссылка3"
# Текст1|Текст2|Текст3->Ссылка1|Ссылка2|Ссылка3 - текст и ссылка выбираются случайно для каждого множества значений

ADD_POST_SIGNATURE_ENABLED = False # True / False - добавлять подпись (текст + ссылка) в конец поста
ADD_POST_SIGNATURE_DATA = Telegram Content Parser|tgcparser->@tgcparser|t.me/tgcparser|t.me/+ICUPGfjchl9iZTAy # текст + ссылка

# Добавление водяного знака на изображение
# Наносит Ваш водяной знак (логотип) на фото

# Позиции нанесения водяного знака (для ADD_WATERMARK_ON_IMAGE_LOGO_PASTE_POSITION):
# left-up - левый верхний угол нанесения
# left-down - левый нижний угол нанесения
# right-up - правый верхний угол нанесения
# right-down - правый нижний угол нанесения

ADD_WATERMARK_ON_IMAGE_ENABLED = False # True / False - добавлять водяной знак на изображение
ADD_WATERMARK_ON_IMAGE_LOGO_FILE_NAME = watermark.png # имя файла - логотипа в папке config, который будем наносить
ADD_WATERMARK_ON_IMAGE_LOGO_PASTE_POSITION = right-down # left-up / left-down / right-up / right-down - позиция нанесения
ADD_WATERMARK_ON_IMAGE_LOGO_PASTE_LR_INDENT = 5 # отступ слева / справа от логотипа в пикселях
ADD_WATERMARK_ON_IMAGE_LOGO_PASTE_UD_INDENT = 5 # отступ сверху / снизу от логотипа в пикселях

# Задаем получателя для постинга

# Допустимые значения (нужно указать ровно 1 значение допустимыми способами):
# None - если нужно спарсить участников и завершить работу программы
# txt - если нужно выгрузить посты в txt формате
# csv - если нужно выгрузить посты в csv формате (дата, текст, просмотров, репостов, реакций, комментариев, ER, ссылка на пост)
# Имя канала / группы / чата (например, Telegram Content Parser) - В этом случае, Вы должны состоять в получателе в аккаунте
# Ссылка на него (например, t.me/tgcparser или @tgcparser), в т.ч. инвайт (приглашения) ссылки
# Его id (например, -1001813229634) - В этом случае, Вы должны состоять в получателе в аккаунте
# Для получения id получателя достаточно переслать любое сообщение из получателя от имени получателя в бот @getmyid_bot
# Число в строчке "Forwarded from" в ответном от бота сообщении и будет id получателя

TARGET_LINK = your_target_link_here # None / txt / csv / получатель

# Отложенный постинг по таймеру
# Перед отправкой каждого поста ожидаем некоторое число секунд из указанного Вами возможного отрезка ожидания

# Программа сама определит значение для ожидания случайным образом
# Равенство границ отрезка означает, что ожидание будет равно границе этого отрезка

SCHEDULED_POSTING_BY_TIMER_ENABLED = False # True / False отложенный постинг по таймеру
SCHEDULED_POSTING_BY_TIMER_REAL_TIME_IGNORE = False # True / False игнорировать функцию при парсинге в режиме ожидания новых постов
SCHEDULED_POSTING_BY_TIMER_MIN_TIME_SECS = 10 # левая граница отрезка возможного ожидания в секундах
SCHEDULED_POSTING_BY_TIMER_MAX_TIME_SECS = 10 # правая граница отрезка возможного ожидания в секундах

# Отложенный постинг по дате
# Можно обработать посты заранее к каждой указанной дате отправки без необходимости запускать парсер для этого в дальнейшем

# Эта функция работает только одновременно с функцией "Парсинг постов донора ТОЛЬКО в отрезке дат ОТ и ДО" (см. выше)

# Просто указываем в функции парсинга постов в отрезке дат посты (их даты) от которого и до которого парсим в доноре,
# а затем указываем в этой функции желаемое число постов в день и границы времени постинга ежедневно

# Также, после обработки парсером, перед отправкой, можно будет вручную обработать (изменить) каждый запланированный пост.
# В канале/группе/чате получателе появится значок календаря, нажав на него, Вы увидите посты, которые будут отправлены,
# с возможностью их изменения / удаления и т.д.

# Ограничение: Не более 100 запланированных сообщений для отправки в один канал / чат / группу.
# Даже если Вы превысите лимит, программа запланирует максимально возможное число постов для отправки самостоятельно.

SCHEDULED_POSTING_BY_DATE_ENABLED = False # True / False отложенный постинг по дате
SCHEDULED_POSTING_BY_DATE_START_DATE = auto # auto - начиная со следующего дня, значение yyyy-mm-dd - начиная с указанной даты
SCHEDULED_POSTING_BY_DATE_START_TIME_HOURS = 0 # указываем границу начала отрезка времени постинга, от 0 до 23
SCHEDULED_POSTING_BY_DATE_END_TIME_HOURS = 23 # указываем границу конца отрезка времени постинга, от 0 до 23
SCHEDULED_POSTING_BY_DATE_RANDOMLY_ENABLED = False # True / False выбирать пост из указанных постов случайным образом
SCHEDULED_POSTING_BY_DATE_FROM_POSTS_PER_DAY_VALUE = 3 # минимальное желаемое количество запланированных постов в день
SCHEDULED_POSTING_BY_DATE_TO_POSTS_PER_DAY_VALUE = 4 # максимальное желаемое количество запланированных постов в день

# Типы постов, которые можно парсить

ALLOW_AUTHOR_POSTS = True # True / False - парсить авторские посты
ALLOW_REPLIES_POSTS = True # True / False - парсить ответные посты
ALLOW_FORWARDED_POSTS = True # True / False - парсить пересланные посты

# Типы текстовых сообщений, которые можно парсить

ALLOW_TEXT_MESSAGES = True # True / False - парсить обычные текстовые сообщения, в т.ч. с предпросмотром
ALLOW_CAPTION_MESSAGES = True # True / False - парсить описания к медиа

# Типы медиа, которые можно парсить

ALLOW_PHOTOS = True # True / False - парсить фото
ALLOW_VIDEOS = True # True / False - парсить видео
ALLOW_GIFS = True # True / False - парсить гифки
ALLOW_STICKERS = True # True / False - парсить стикеры
ALLOW_VOICES = True # True / False - парсить голосовые
ALLOW_VIDEO_NOTES = True # True / False - парсить видеокружки
ALLOW_DOCUMENTS = True # True / False - парсить документы
ALLOW_AUDIOS = True # True / False - парсить аудио
ALLOW_POLLS = True # True / False - парсить опросы

# Другие настройки

AUTO_CONTINUE_POSTS_PARSING = NO # YES / NO - автоматически продолжать парсинг постов с места остановки
TG_REAL_TIME_PARSING_POSTS_FAILURE = YES # YES / NO - установить YES, если не работает парсинг в реальном времени
TG_REAL_TIME_PARSING_POSTS_FAILURE_INTERVAL = 10.0 # интервал проверки всех доноров в секундах
MEDIA_GROUP_PROCESSING_TIME_WAIT = 5.0 # время ожидания для корректной обработки медиа группы
SKIP_EMPTY_CAPTION_MESSAGES = NO # YES / NO - пропускать посты с пустым описанием к медиа
SKIP_REPLY_MARKUP_MESSAGES = NO # YES / NO - пропускать посты с кнопками
DOWNLOAD_MEDIA_CONTENT = NO # YES / NO - загружать медиа с донора, влияет на скорость обработки постов
POSTS_SOUND_NOTIFICATION_FREQUENCY = 1 # частота звуковых уведомлений при постинге: 0 - без звука, N - только каждый N-ый пост со звуком
CHATGPT_PROMPT_MAX_ATTEMPTS = 128 # максимальное число попыток получить корректный чатгпт-ответ на промпт
CHATGPT_SKIP_POSTS_IF_FAILURE = NO # YES / NO - пропускать посты, которые чатгпт не смог обработать
AUTO_CLOSE_PARSER_ON_SUCCESS = NO # YES / NO - автоматически завершать работу парсера в случае успешного парсинга
SEND_ERROR_INFO_TO_TG_USERNAME = # тг юзернейм - куда отправляем уведомление в случае, если парсер упал с ошибкой