Files
ReklamaWorldBot/main.py

105 lines
4.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# main.py
# Замена рекламщикам
import asyncio
import sys
from os import getenv
from pyrogram import Client
from loguru import logger
# Сообщение и путь к картинке, которую хотите отправить
image = 'img.png'
message = "<b>Привет! Это тестовое сообщение с картинкой.</b>"
# Список 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 = ("<green>{time:YYYY-MM-DD HH:mm:ss}</green> <red>|</red> "
"<blue>PRIMO-Message</blue> <red>|</red> "
"<red>{extra[user]} |</red> <level>{message}</level>")
error_text = ("<level>{time:YYYY-MM-DD HH:mm:ss} | "
"<bold>PRIMO-ERROR</bold> | "
"{extra[user]} | {message}</level>")
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())