Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №2585664
А
Аноним
25 декабря 2024 12:50 · публичный вопрос
А
Аноним

import asyncio from telethon import TelegramClient import time api_id = input("Введите ваш api_id: ") api_hash = input("Введите ваш api_hash: ") phone = input("Введите ваш номер…

Запрос пользователя

Import asyncio from telethon import TelegramClient import time api_id = input("Введите ваш api_id: ") api_hash = input("Введите ваш api_hash: ") phone = input("Введите ваш номер телефона (с кодом страны, например, +1234567890): ") message = "тут сообщение любое" delay = float(input("Введите задержку между сообщениями (в секундах): ")) async def main(): async with TelegramClient('session_name', api_id, api_hash) as client: await client.start() async for dialog in client.iter_dialogs(): chat_id = dialog.id try: if dialog.is_group or dialog.is_channel or dialog.is_user: await client.send_message(chat_id, message) print(f"Сообщение успешно отправлено в {dialog.title} (ID: {chat_id}).") time.sleep(delay) # Задержка между отправкой сообщений except Exception as e: print(f"Ошибка при отправке сообщения в {dialog.title} (ID: {chat_id}): {e}") loop = asyncio.get_event_loop() loop.run_until_complete(main()) добавь в этот код чтобы ьекс отправлялся во все чаты телеграмма

Ответ нейросети
25 декабря 2024 12:50

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

  1. Убедитесь, что вы используете асинхронный способ для задержек, чтобы не блокировать основную асинхронную функцию.
  2. Также добавим проверку на все диалоги, которые могут быть группами, каналами или пользователями.

Ниже представлена улучшенная версия вашего кода:

import asyncio
from telethon import TelegramClient
import time

api_id = input("Введите ваш api_id: ")
api_hash = input("Введите ваш api_hash: ")
phone = input("Введите ваш номер телефона (с кодом страны, например, +1234567890): ")

message = "тут сообщение любое"
delay = float(input("Введите задержку между сообщениями (в секундах): "))

async def main():
    async with TelegramClient('session_name', api_id, api_hash) as client:
        await client.start()

        async for dialog in client.iter_dialogs():
            chat_id = dialog.id
            try:
                # Отправляем сообщение только если это группа, канал или пользователь
                if dialog.is_group or dialog.is_channel or dialog.is_user:
                    await client.send_message(chat_id, message)
                    print(f"Сообщение успешно отправлено в {dialog.title} (ID: {chat_id}).")
                    await asyncio.sleep(delay)  # Используем асинхронную задержку
            except Exception as e:
                print(f"Ошибка при отправке сообщения в {dialog.title} (ID: {chat_id}): {e}")

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

Объяснение изменений:

  • Заменена time.sleep(delay) на await asyncio.sleep(delay), чтобы не блокировать асинхронный цикл событий. Это позволяет отправлять сообщения в бесконечном цикле без ожидания завершения.
  • Код уже перебирает все доступные диалоги (чаты, группы, каналы), так что логика для отправки сообщений во все чаты остается на месте.

Таким образом, ваш код будет отправлять сообщения во все пары отобранных чатов. Убедитесь, что у вас есть разрешение на отправку сообщений, так как использование ботов может нарушать условия использования Телеграм.