# main.py # Замена рекламщикам import asyncio import sys from os import getenv from pyrogram import Client from loguru import logger # Сообщение и путь к картинке, которую хотите отправить image = 'img.png' message = "Привет! Это тестовое сообщение с картинкой." # Список ID групп, куда будут отправляться сообщения group_ids = [-1000000000, ] # Ваши данные для авторизации api_id = getenv('API_KEY') # Получите это на https://my.telegram.org api_hash = getenv('API_HASH') # Получите это на https://my.telegram.org phone_number = getenv('PHONE_NUMBER') # Ваш номер телефона в международном формате password = getenv('PASSWORD') # Если включена двухфакторная аутентификация bot_token = getenv('BOT_TOKEN') Perm = "bot" # Функция отправки по id async def send_greetings(client): # Проходим по каждой группе и отправляем сообщение for group_id in group_ids: try: # Отправка картинки await client.send_photo(group_id, photo=image, caption=message) logger.bind(user=group_id).info("Сообщение успешно отправлено в группу") except Exception as e: logger.bind(user=group_id).error(f"Ошибка при отправке в группу: {e}") # Функция бесконечного цикла сообщений async def periodic_send(client): while True: await send_greetings(client) # Ожидание 60 секунд перед отправкой следующего сообщения await asyncio.sleep(14400) # 60 секунд = 1 минута, 1 час = 3600 секунд, 4 часа = 14400 # Функция создания логгеров async def loger(): logger.remove() max_size = '500 MB' info_text = ("{time:YYYY-MM-DD HH:mm:ss} | " "PRIMO-Message | " "{extra[user]} | {message}") error_text = ("{time:YYYY-MM-DD HH:mm:ss} | " "PRIMO-ERROR | " "{extra[user]} | {message}") logger.add(sys.stderr, colorize=True, format=info_text, level="INFO", filter=lambda record: record["level"].name == "INFO", ) # Добавлен аргумент sink logger.add(sys.stderr, colorize=True, format=error_text, level="ERROR", filter=lambda record: record["level"].name == "ERROR", ) # Добавлен аргумент sink logger.add("start.log", rotation=max_size, format=info_text, backtrace=True, diagnose=True, level="INFO", filter=lambda record: record["level"].name == "INFO",) logger.add("error.log", rotation=max_size, format=error_text, backtrace=True, diagnose=True, level="ERROR", filter=lambda record: record["level"].name == "ERROR",) logger.bind(user="@Console").info("Программа запущена!\n") # Основная функция запуска клиента async def main(): await loger() if Perm == 1: # Исправлено условие # Создаем клиента с использованием api_id и api_hash async with Client("user_session", api_id=api_id, api_hash=api_hash, in_memory=True, phone_number=phone_number, password=password) as client: # Запускаем периодическую отправку сообщений await periodic_send(client) else: # Создаем клиента с использованием api_id, api_hash и bot_token async with Client("bot_session", bot_token=bot_token) as client: # Запускаем периодическую отправку сообщений await periodic_send(client) # Бесконечный запуск if __name__ == "__main__": asyncio.run(main())