Ваш код уже настроен на отправку сообщения во все чаты, так как вы используете client.iter_dialogs(), который проходит по всем диалогам (чаты, группы и каналы). При этом для каждого диалога вы отправляете сообщение.
Тем не менее, я замечаю, что используете time.sleep(delay), что может приостановить выполнение всего асинхронного события. Вместо этого лучше использовать await asyncio.sleep(delay), чтобы избежать блокировки.
Вот ваш код с внесёнными улучшениями:
import asyncio
from telethon import TelegramClient
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())
В этом обновлённом коде await asyncio.sleep(delay) позволяет вашему коду оставаться асинхронным и не блокировать выполнение других задач. Это улучшит производительность вашего скрипта при отправке сообщений.
Пробуйте использовать данный код, и если у вас есть дополнительные вопросы или вам нужна помощь с другими аспектами, не стесняйтесь задавать их!