Какие могут быть причины блокировки аккаунта , скрипт по рассылке телеграм


import random
import asyncio

from telethon.sync import TelegramClient
from telethon.tl.functions.contacts import ImportContactsRequest
from telethon.tl.types import InputPhoneContact

# Функция для загрузки данных из файлов с указанием кодировки
def load_data(filename):
    with open(filename, 'r', encoding='utf-8') as file:
        return file.read().strip()

# Загрузка данных из файлов
api_id, api_hash = load_data('api.txt').split(':')
phones = load_data('phones.txt').split('\n')

# Функция для авторизации
async def auth(api_id, api_hash):
    client = TelegramClient('session', api_id, api_hash)
    await client.start()
    return client

# Функция для добавления контакта
async def add_contact(client, phone):
    try:
        # Добавляем контакт в список контактов
        await client(ImportContactsRequest(contacts=[InputPhoneContact(client_id=0, phone=phone, first_name=phone, last_name='')]))

        print(f"Контакт {phone} добавлен.")
    except Exception as e:
        print(f"Ошибка при добавлении контакта {phone}: {e}")

# Функция для отправки сообщения без добавления в контакты
async def send_message_without_contact(client, phone, message):
    try:
        # Отправляем сообщение без добавления в контакты
        await client.send_message(phone, message)
        print(f"Сообщение отправлено на номер: {phone}")
        return True
    except Exception as e:
        print(f"Ошибка при отправке на номер {phone}: {e}")
        return False

# Функция для отправки сообщений
async def send_messages(client):
    # Загрузка сообщений из файла
    with open('message.txt', 'r', encoding='utf-8') as file:
        message_modules = file.read().strip().split('+++')

    # Запрос количества сообщений для отправки
    num_messages = int(input("Введите количество сообщений для отправки: "))

    # Запрос диапазона задержки между сообщениями
    delay_range_start, delay_range_end = map(int, input("Введите диапазон задержки между сообщениями (в секундах), через пробел: ").split())

    # Переменные для статистики
    sent_count = 0
    not_sent = []

    # Отправка сообщений
    for phone in phones:
        # Выбираем случайный модуль из списка модулей
        random_module = random.choice(message_modules)
        await add_contact(client, phone)  # Добавляем контакт перед отправкой сообщения
        if await send_message_without_contact(client, phone, random_module):
            sent_count += 1
            if sent_count >= num_messages:
                break
        else:
            not_sent.append(phone)
        # Выбираем случайное время задержки из диапазона и ждем
        delay = random.randint(delay_range_start, delay_range_end)
        print(f"Следующее сообщение будет отправлено через {delay} секунд")
        await asyncio.sleep(delay)

    # Вывод статистики
    print(f"Отправлено сообщений: {sent_count}/{num_messages}")
    print("Номера, на которые не были отправлены сообщения:")
    for phone in not_sent:
        print(phone)

    # Ожидание нажатия Enter для завершения программы
    input("Для выхода нажмите Enter...")

# Главная функция
async def main():
    # Авторизация
    client = await auth(api_id, api_hash)

    while True:
        # Запрос действия пользователя
        action = int(input("Выберите действие:\n1. Отправить сообщения\n2. Выйти из программы\nВведите номер действия: "))

        if action == 1:
            # Оставляем текущую логику для отправки сообщений
            await send_messages(client)
        elif action == 2:
            break
        else:
            print("Некорректный выбор действия.")

if __name__ == "__main__":
    asyncio.run(main())

Ответы (0 шт):