├── proxy.txt ├── static ├── favicon.ico ├── style.css └── script.js ├── data └── recipients.xlsx ├── messages.json ├── templates └── index.html ├── main.py ├── Convert.py ├── Search.py ├── Sender.py ├── CreateSession.py ├── README.md └── LICENSE /proxy.txt: -------------------------------------------------------------------------------- 1 | @NameSession:IP:PORT:Login:Passoword -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KEV0143/Telegram-Software-SMM/HEAD/static/favicon.ico -------------------------------------------------------------------------------- /data/recipients.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KEV0143/Telegram-Software-SMM/HEAD/data/recipients.xlsx -------------------------------------------------------------------------------- /messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "Торговля": [ 3 | "Здравствуйте, {ФИО}, это сообщение для торговли!" 4 | ], 5 | 6 | "Кафе": [ 7 | "Здравствуйте, {ФИО}!, это сообщение для кафе!" 8 | ], 9 | 10 | "3": [ 11 | "Здравствуйте, {ФИО}!" 12 | ], 13 | 14 | "__default__": [ 15 | "Здравствуйте, {ФИО}!", 16 | "У нас есть интересное предложение для вас.", 17 | "Свяжитесь с нами, чтобы узнать подробности." 18 | ] 19 | } -------------------------------------------------------------------------------- /templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Контактная информация 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 |

16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import webbrowser 2 | import time 3 | 4 | author_name = "Климкин Егор" 5 | telegram_link_text = "https://t.me/ne_sravnim" 6 | github_repo_link = "https://github.com/KEV0143/Telegram_Software_SMM" 7 | 8 | print(f"\nАвтор: {author_name}") 9 | print(f"Связь для уточнения деталей по проекту: Telegram ({telegram_link_text})") 10 | print(f"Репозиторий проекта: {github_repo_link}") 11 | 12 | user_choice = input(f"\nВведите '1', чтобы открыть ссылку (написать автору в Telegram): ") 13 | 14 | if user_choice == '1': 15 | print(f"\nОткрываю Telegram: {telegram_link_text}") 16 | time.sleep(1) 17 | try: 18 | webbrowser.open_new_tab(telegram_link_text) 19 | print("Ссылка должна была открыться в вашем браузере.") 20 | except Exception as e: 21 | print(f"Не удалось автоматически открыть ссылку. Ошибка: {e}") 22 | print(f"Пожалуйста, скопируйте и вставьте ссылку вручную: {telegram_link_text}") 23 | else: 24 | print("\nДействие отменено или введен неверный символ.") 25 | 26 | print(f"Репозиторий проекта: {github_repo_link}") 27 | 28 | input("\nНажмите Enter для выхода...") -------------------------------------------------------------------------------- /Convert.py: -------------------------------------------------------------------------------- 1 | import webbrowser 2 | import time 3 | 4 | author_name = "Климкин Егор" 5 | telegram_link_text = "https://t.me/ne_sravnim" 6 | github_repo_link = "https://github.com/KEV0143/Telegram_Software_SMM" 7 | 8 | print(f"\nАвтор: {author_name}") 9 | print(f"Связь для уточнения деталей по проекту: Telegram ({telegram_link_text})") 10 | print(f"Репозиторий проекта: {github_repo_link}") 11 | 12 | user_choice = input(f"\nВведите '1', чтобы открыть ссылку (написать автору в Telegram): ") 13 | 14 | if user_choice == '1': 15 | print(f"\nОткрываю Telegram: {telegram_link_text}") 16 | time.sleep(1) 17 | try: 18 | webbrowser.open_new_tab(telegram_link_text) 19 | print("Ссылка должна была открыться в вашем браузере.") 20 | except Exception as e: 21 | print(f"Не удалось автоматически открыть ссылку. Ошибка: {e}") 22 | print(f"Пожалуйста, скопируйте и вставьте ссылку вручную: {telegram_link_text}") 23 | else: 24 | print("\nДействие отменено или введен неверный символ.") 25 | 26 | print(f"Репозиторий проекта: {github_repo_link}") 27 | 28 | input("\nНажмите Enter для выхода...") -------------------------------------------------------------------------------- /Search.py: -------------------------------------------------------------------------------- 1 | import webbrowser 2 | import time 3 | 4 | author_name = "Климкин Егор" 5 | telegram_link_text = "https://t.me/ne_sravnim" 6 | github_repo_link = "https://github.com/KEV0143/Telegram_Software_SMM" 7 | 8 | print(f"\nАвтор: {author_name}") 9 | print(f"Связь для уточнения деталей по проекту: Telegram ({telegram_link_text})") 10 | print(f"Репозиторий проекта: {github_repo_link}") 11 | 12 | user_choice = input(f"\nВведите '1', чтобы открыть ссылку (написать автору в Telegram): ") 13 | 14 | if user_choice == '1': 15 | print(f"\nОткрываю Telegram: {telegram_link_text}") 16 | time.sleep(1) 17 | try: 18 | webbrowser.open_new_tab(telegram_link_text) 19 | print("Ссылка должна была открыться в вашем браузере.") 20 | except Exception as e: 21 | print(f"Не удалось автоматически открыть ссылку. Ошибка: {e}") 22 | print(f"Пожалуйста, скопируйте и вставьте ссылку вручную: {telegram_link_text}") 23 | else: 24 | print("\nДействие отменено или введен неверный символ.") 25 | 26 | print(f"Репозиторий проекта: {github_repo_link}") 27 | 28 | input("\nНажмите Enter для выхода...") -------------------------------------------------------------------------------- /Sender.py: -------------------------------------------------------------------------------- 1 | import webbrowser 2 | import time 3 | 4 | author_name = "Климкин Егор" 5 | telegram_link_text = "https://t.me/ne_sravnim" 6 | github_repo_link = "https://github.com/KEV0143/Telegram_Software_SMM" 7 | 8 | print(f"\nАвтор: {author_name}") 9 | print(f"Связь для уточнения деталей по проекту: Telegram ({telegram_link_text})") 10 | print(f"Репозиторий проекта: {github_repo_link}") 11 | 12 | user_choice = input(f"\nВведите '1', чтобы открыть ссылку (написать автору в Telegram): ") 13 | 14 | if user_choice == '1': 15 | print(f"\nОткрываю Telegram: {telegram_link_text}") 16 | time.sleep(1) 17 | try: 18 | webbrowser.open_new_tab(telegram_link_text) 19 | print("Ссылка должна была открыться в вашем браузере.") 20 | except Exception as e: 21 | print(f"Не удалось автоматически открыть ссылку. Ошибка: {e}") 22 | print(f"Пожалуйста, скопируйте и вставьте ссылку вручную: {telegram_link_text}") 23 | else: 24 | print("\nДействие отменено или введен неверный символ.") 25 | 26 | print(f"Репозиторий проекта: {github_repo_link}") 27 | 28 | input("\nНажмите Enter для выхода...") -------------------------------------------------------------------------------- /CreateSession.py: -------------------------------------------------------------------------------- 1 | import webbrowser 2 | import time 3 | 4 | author_name = "Климкин Егор" 5 | telegram_link_text = "https://t.me/ne_sravnim" 6 | github_repo_link = "https://github.com/KEV0143/Telegram_Software_SMM" 7 | 8 | print(f"\nАвтор: {author_name}") 9 | print(f"Связь для уточнения деталей по проекту: Telegram ({telegram_link_text})") 10 | print(f"Репозиторий проекта: {github_repo_link}") 11 | 12 | user_choice = input(f"\nВведите '1', чтобы открыть ссылку (написать автору в Telegram): ") 13 | 14 | if user_choice == '1': 15 | print(f"\nОткрываю Telegram: {telegram_link_text}") 16 | time.sleep(1) 17 | try: 18 | webbrowser.open_new_tab(telegram_link_text) 19 | print("Ссылка должна была открыться в вашем браузере.") 20 | except Exception as e: 21 | print(f"Не удалось автоматически открыть ссылку. Ошибка: {e}") 22 | print(f"Пожалуйста, скопируйте и вставьте ссылку вручную: {telegram_link_text}") 23 | else: 24 | print("\nДействие отменено или введен неверный символ.") 25 | 26 | print(f"Репозиторий проекта: {github_repo_link}") 27 | 28 | input("\nНажмите Enter для выхода...") -------------------------------------------------------------------------------- /static/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #282c34; 3 | color: #f0f0f0; 4 | font-family: 'Segoe UI', 'Roboto', 'Helvetica', 'Arial', sans-serif; 5 | display: flex; 6 | flex-direction: column; 7 | justify-content: center; 8 | align-items: center; 9 | height: 100vh; 10 | margin: 0; 11 | text-align: center; 12 | } 13 | 14 | #info-container { 15 | background-color: #3a3f4b; 16 | padding: 25px 40px; 17 | border-radius: 10px; 18 | box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); 19 | max-width: 500px; 20 | } 21 | 22 | #info-container p { 23 | margin: 12px 0; 24 | line-height: 1.6; 25 | } 26 | 27 | a { 28 | color: #61dafb; 29 | text-decoration: none; 30 | font-weight: bold; 31 | } 32 | 33 | a:hover { 34 | text-decoration: underline; 35 | } 36 | 37 | #open-link-button { 38 | background-color: #007bff; 39 | color: white; 40 | border: none; 41 | padding: 12px 25px; 42 | margin-top: 20px; 43 | border-radius: 5px; 44 | font-size: 16px; 45 | cursor: pointer; 46 | transition: background-color 0.3s ease, transform 0.2s ease; 47 | } 48 | 49 | #open-link-button:hover { 50 | background-color: #0056b3; 51 | transform: translateY(-2px); 52 | } 53 | 54 | #status-message { 55 | margin-top: 20px; 56 | color: #cccccc; 57 | min-height: 1.2em; 58 | } 59 | 60 | //css styles 61 | -------------------------------------------------------------------------------- /static/script.js: -------------------------------------------------------------------------------- 1 | const author_name = "Климкин Егор"; 2 | const telegram_link_text = "https://t.me/ne_sravnim"; 3 | const github_repo_link = "https://github.com/KEV0143/Telegram_Software_SMM"; 4 | 5 | const infoContainer = document.getElementById('info-container'); 6 | const openLinkButton = document.getElementById('open-link-button'); 7 | const statusMessage = document.getElementById('status-message'); 8 | 9 | infoContainer.innerHTML = ` 10 |

Автор: ${author_name}

11 |

Связь для уточнения деталей по проекту: Telegram

12 |

Репозиторий проекта: ${github_repo_link}

13 | `; 14 | 15 | openLinkButton.addEventListener('click', () => { 16 | statusMessage.textContent = `Открываю Telegram: ${telegram_link_text}`; 17 | 18 | setTimeout(() => { 19 | try { 20 | const newWindow = window.open(telegram_link_text, '_blank'); 21 | if (newWindow) { 22 | statusMessage.textContent = "Ссылка должна была открыться в вашем браузере."; 23 | } else { 24 | throw new Error("Браузер заблокировал открытие новой вкладки."); 25 | } 26 | } catch (e) { 27 | statusMessage.textContent = `Не удалось автоматически открыть ссылку. Пожалуйста, скопируйте и вставьте ссылку вручную: ${telegram_link_text}`; 28 | console.error("Ошибка при открытии ссылки:", e); 29 | } 30 | }, 1000); 31 | }); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Telegram_Software_SMM 2 | 3 | ⚙️ Программный комплекс для Telegram: Централизованная SMM-платформа,
4 | рассылка сообщений по критериям, валидация пользователей, автоматизация чатов. 5 | 6 | --- 7 | 8 | **Разработчики проекта:** 9 | * **Брагуца Евгений (jmksjm)** - [GitHub](https://github.com/jmksjm) 10 | * **Климкин Егор (KevY5)** - [GitHub](https://github.com/KEV0143) 11 | * **Снигаренко Антон (AntonTriceps)** - [GitHub](https://github.com/AntonTriceps)
12 | 13 | Связь для уточнения деталей по проекту: [Telegram](https://t.me/ne_sravnim) 14 | 15 | --- 16 | 17 | ## Цель проекта 18 | 19 | Цель проекта — предоставить профессионалам комплексное решение, которое превратит Telegram из простого мессенджера в полноценную SMM-машину. Продукт позволит пользователям: 20 | * **Централизовать** все операции по управлению каналами и чатами. 21 | * **Автоматизировать** до 90% рутинных задач, от рассылок до модерации. 22 | * **Повысить точность** маркетинговых кампаний за счет глубокой сегментации аудитории. 23 | * **Увеличить ROI** от деятельности в Telegram благодаря умным инструментам. 24 | 25 | --- 26 | 27 | ## Проблема проекта, которая решается 28 | 29 | Работа в Telegram для бизнеса и SMM часто превращается в хаос. Маркетологам и администраторам приходится вручную управлять десятками чатов, использовать различные боты и скрипты, тратить часы на фильтрацию аудитории и рассылку сообщений. Это неэффективно, трудозатратно и плохо масштабируется. 30 | 31 | ## Ключевые преимущества проекта 32 | 33 | В отличие от других скриптов и сервисов, проект предлагает готовые решения для SMM-специалистов: 34 | 35 | 1. **Единый центр управления:** предоставляет централизованную панель, где все ваши каналы, чаты, рассылки и аналитика собраны в одном месте. Больше не нужно переключаться между десятками окон и сервисов. 36 | 37 | 2. **Гибкая система рассылок:** комплекс позволяет организовывать сложные, персонализированные рассылки по десяткам критериев (активность, дата вступления, роль в чате и т.д.), что многократно повышает их эффективность. 38 | 39 | 3. **Инструменты для создания качественной аудитории:** встроенный валидатор пользователей и гибкие фильтры позволяют автоматически отсеивать ботов и неактивные аккаунты. Вы работаете только с живой и целевой аудиторией. 40 | 41 | 4. **Полная автоматизация рутины:** настройте автоматические приветствия, ответы на типовые вопросы, модерацию спама и правила для участников чата. Освободите свое время для решения стратегических, а не рутинных задач. 42 | 43 | --- 44 | 45 | ## Целевая аудитория (Кому пригодится) 46 | 47 | Программный комплекс создан для всех, кто хочет использовать Telegram на 100% профессионально и эффективно: 48 | 49 | * **SMM-менеджеры и маркетологи:** для проведения рекламных кампаний, таргетированных рассылок и анализа аудитории. 50 | * **Владельцы бизнеса и предприниматели:** для автоматизации общения с клиентами и продвижения своих товаров и услуг. 51 | * **Администраторы Telegram-каналов и чатов:** для эффективной модерации, повышения вовлеченности и автоматизации рутинных задач. 52 | * **HR-специалисты и рекрутеры:** для поиска кандидатов и автоматизированной коммуникации с ними. 53 | * **Комьюнити-менеджеры:** для построения живых и активных сообществ, автоматизируя модерацию и вовлекая участников. 54 | * **Арбитражники трафика:** для работы с большими объемами аудитории, ее фильтрации и монетизации. 55 | 56 | ## 🛠️ Настройка и запуск проекта 57 | 58 | Для успешного запуска проекта следуйте этим шагам. 59 | 60 | ### 1. Создание сессии Telegram 61 | 62 | Для работы приложения требуется как минимум один файл сессии Telegram, который будет эмулировать работу вашего аккаунта. 63 | 64 | **1.1. Настройка `.env`** 65 | 66 | Прежде всего, необходимо указать данные вашего Telegram-приложения. 67 | 68 | * Откройте файл `.env` в корне проекта. 69 | * Укажите ваши `API_ID` и `API_HASH`. 70 | 71 | > **Где взять API ID и API HASH?** Их можно получить на официальном сайте Telegram: [my.telegram.org](https://my.telegram.org). 72 | 73 | ![image](https://github.com/user-attachments/assets/d5c1f0b8-ab2a-4481-aa02-d82cc83400c8) 74 | 75 | **1.2. Генерация файла сессии** 76 | 77 | Теперь запустите скрипт для создания файла сессии с помощью фреймворка Pyrogram. 78 | 79 | * Выполните в терминале команду: 80 | ```bash 81 | python CreateSession.py 82 | ``` 83 | * В консоли вам будет предложено ввести номер телефона, код подтверждения из Telegram и, если установлен, пароль двухфакторной аутентификации (2FA). 84 | 85 | ![image](https://github.com/user-attachments/assets/8bad6f26-0097-4ce7-8b68-90d4943a5c83) 86 | 87 | После успешной авторизации в корневой папке проекта будет создана директория `sessions`, в которую будет помещен файл вашей сессии (например, `KevTest.session`). 88 | 89 | ### 2. Настройка прокси 90 | 91 | Если вы планируете использовать прокси для сессий, их необходимо добавить в файл `proxy.txt`. 92 | 93 | * Каждая строка в файле соответствует одной сессии и должна иметь следующий формат: 94 | ``` 95 | имя_сессии:ip:port:login:password 96 | ``` 97 | * Где `имя_сессии` — это название файла сессии из папки `sessions` **без расширения** `.session`. 98 | 99 | * **Пример содержимого `proxy.txt`:** 100 | ``` 101 | 109.236.82.42:9999:55wi111gav-corp.mobile.res-country-RU-state-531113-city-41117-hold-session-session-61111303010:111KbiwC11YMtX 102 | ``` 103 | 104 | > **Важно:** Для каждой сессии нобходмо указать прокси в `proxy.txt`. 105 | 106 | ### 3. Запуск основного приложения 107 | 108 | После выполнения всех предыдущих шагов вы готовы запустить единый центр управления. 109 | 110 | * Запустите главный скрипт: 111 | ```bash 112 | python main.py 113 | ``` 114 | * В консоли вы увидите отладочную информацию о запуске сервера. 115 | 116 | ![image](https://github.com/user-attachments/assets/135bcecb-8261-4085-8e39-3818c92837ba) 117 | 118 | * После этого веб-интерфейс будет доступен в вашем браузере по адресу: 119 | 120 | ![image](https://github.com/user-attachments/assets/cba40ac5-06a9-407c-af7d-35c54e97b2a1) 121 | 122 | ## 4. Конвертация сессий из Pyrogram в Telethon 123 | 124 | Для работы с другими модулями программного комплекса необходимо преобразовать сессии, созданные с помощью фреймворка **Pyrogram**, в формат, совместимый с фреймворком **Telethon**. 125 | 126 | Для этого используется скрипт `Convert.py`. Он автоматически анализирует все сессионные файлы из папки `sessions` (формат Pyrogram) и конвертирует их в формат Telethon, после чего перемещает готовые сессии в соответствующие папки: 127 | - `sessions_for_search` 128 | - `sessions_for_sender` 129 | 130 | ### Требования для корректной конвертации 131 | 132 | Для успешной конвертации требуется указать IP-адреса дата-центров Telegram. Ниже приведён актуальный список серверов: 133 | 134 | ```python 135 | DEFAULT_DCS_PROD = { 136 | 1: ("149.154.175.53", 443), 137 | 2: ("149.154.167.51", 443), 138 | 3: ("149.154.175.100", 443), 139 | 4: ("149.154.167.91", 443), 140 | 5: ("91.108.56.130", 443), 141 | } 142 | ``` 143 | 144 | ![Пример выполнения Convert.py](https://github.com/user-attachments/assets/0f60aba8-923a-4e95-ad54-f66f7fbd9839) 145 | 146 | --- 147 | 148 | ## 5. Валидация пользователей Telegram 149 | 150 | **Цель:** Проверка регистрации пользователя в мессенджере Telegram по его номеру телефона — даже в случае, если профиль скрыт или ограничено отображение данных. 151 | 152 | ### Как это работает? 153 | 154 | Для проверки используется модуль `Search.py`. 155 | Чтобы обеспечить уникальность сессий и минимизировать риск блокировок, реализована подмена User-Agent'ов. Для этого используются следующие параметры: 156 | 157 | #### Поддерживаемые устройства: 158 | ```python 159 | DEVICE_MODELS = [ 160 | "Pixel 7 Pro", "Samsung Galaxy S23 Ultra", "iPhone 15 Pro Max", "Xiaomi 13 Pro", 161 | "OnePlus 11", "Google Pixel Fold", "Samsung Galaxy Z Fold 5", "Motorola Edge+ (2023)", 162 | "Asus ROG Phone 7", "Sony Xperia 1 V", "Desktop Client", "WebK Browser" 163 | ] 164 | ``` 165 | 166 | #### Версии операционных систем: 167 | ```python 168 | SYSTEM_VERSIONS = [ 169 | "Android 14", "Android 13", "iOS 17.2", "iOS 16.7", "Windows 11 SDK 22621", 170 | "macOS Sonoma 14.1", "Linux Kernel 6.6", "Chrome OS 120", "Firefox 121.0" 171 | ] 172 | ``` 173 | 174 | #### Версии Telegram-клиента: 175 | ```python 176 | APP_VERSIONS = [ 177 | "10.5.0", "10.4.1", "10.3.2", "4.14.8", "4.13.0", "Telegram Desktop 4.15.1" 178 | ] 179 | ``` 180 | 181 | ### Результат работы модуля 182 | 183 | Результат выполнения программы представлен на изображении ниже: 184 | 185 | ![Результат работы Search.py](https://github.com/user-attachments/assets/4c6e4d85-70a2-41bb-92be-58d023b13698) 186 | 187 | ## 6. Рассылка сообщений по критериям 188 | 189 | Исходная база данных содержит следующие столбцы: 190 | 191 | `ФИО | ИНН | Вид деятельности | Объем выручки за год | Ник в ТГ | Номер телефона | Запущена проверка на username | Электронная почта | Первое сообщение | Обработано сессией | Статус сообщения | Дата отправки | Отправленное сообщение` 192 | 193 | ![image](https://github.com/user-attachments/assets/666a042b-dde9-4bc6-85ae-81be2a4f378d) 194 | 195 | Основой для работы модуля служит столбец **"Вид деятельности"** в базе данных. Алгоритм выглядит следующим образом: 196 | 197 | 1. **Анализ данных**: Система считывает значение из столбца **"Вид деятельности"** для каждой строки в базе. 198 | 2. **Подбор сообщения**: Модуль обращается к файлу `messages.json`, где хранятся шаблоны сообщений. 199 | * Если в файле найден ключ, точно соответствующий виду деятельности (например, "Кафе"), используется связанный с ним текст. 200 | * Если точное соответствие не найдено, применяется универсальное сообщение, которое хранится под ключом `__default__`. 201 | 202 | ![image](https://github.com/user-attachments/assets/2b54c5bd-1e24-4fc0-a865-3f7fee4108ec) 203 | 204 | ### Результат работы модуля 205 | 206 | **Запустить рассылку первых сообщений** 207 | Этот режим предназначен для инициации первого контакта с большой группой пользователей. Система последовательно обрабатывает строки, для которых еще не было отправлено сообщение, подбирает релевантный текст и производит отправку. 208 | 209 | ![image](https://github.com/user-attachments/assets/186bc364-266e-449c-8780-0d946daf8072) 210 | 211 | **Демонстрация отображения базы данных после работы модуля**, изменились столбцы: 212 | 213 | `Первое сообщение, Обработано сессией, Статус сообщения, Дата отправки, Отправленное сообщение` 214 | 215 | ![image](https://github.com/user-attachments/assets/4c53dde6-1a8b-446b-b37e-b4d16feb2135) 216 | 217 | **Отправить сообщение только одному пользователю** 218 | 219 | Этот режим предназначен для целевой коммуникации. Он позволяет отправить сообщение конкретному пользователю, выбрав его из 220 | списка или указав контактные данные вручную. Функция удобна для повторной связи, отправки персонализированных предложений и ответов на запросы. 221 | 222 | ![image](https://github.com/user-attachments/assets/3fc0ae6c-a940-4b30-8192-3418327fd087) 223 | 224 | ## 7. Инструменты для управления сессиями 225 | 226 | Вспомогательный модуль для проверки и поддержания работоспособности сессий. 227 | 228 | **Основное меню инструмента** 229 | 230 | ![image](https://github.com/user-attachments/assets/d6ea6f1d-abb4-4a45-a90e-1947a818bb6e) 231 | 232 | **1. Активация сессий** 233 | Функция для "прогрева" сессий путем отправки сообщения в "Избранное" (`Saved Messages`), что снижает риск блокировки при дальнейшей работе. 234 | 235 | ![image](https://github.com/user-attachments/assets/d1e863b3-4407-48b1-a99f-fd5043304f56) 236 | 237 | **2. Проверка на спам-блок** 238 | Автоматизированная проверка статуса аккаунта на наличие ограничений через официального `@SpamBot`. 239 | 240 | ![image](https://github.com/user-attachments/assets/a69ecf3f-aa4f-4eee-b31e-2ac6d13cdcca) 241 | 242 | **3. Проверка статуса аккаунта** 243 | Определение, является ли аккаунт активным или был удален (заблокирован) платформой Telegram. 244 | 245 | ![image](https://github.com/user-attachments/assets/7ddf4273-4d6b-4035-a4ca-6487d9b5b013) 246 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | --------------------------------------------------------------------------------