И уже на основе их написал свой новый код:



import os

import asyncio

import logging

from telethon import TelegramClient, events

from dotenv import load_dotenv



# Здесь я загружаю переменные окружения из файла .env, чтобы безопасно хранить конфиденциальные данные

load_dotenv()



# Настраиваю логирование, чтобы записывать важные события и ошибки в файл

logging.basicConfig(

filename='monitoring.log',

format='%(asctime)s - %(levelname)s - %(message)s',

level=logging.INFO

)



# Получаю API ID и API HASH из переменных окружения

api_id = os.getenv('API_ID')

api_hash = os.getenv('API_HASH')

session_name = 'monitoring_session'



# Указываю список каналов, которые хочу мониторить

MONITORED_CHANNELS = ['realgachi', 'mgerkom']



# Определяю ключевые слова, по которым буду искать сообщения

KEYWORDS = ['промокод', 'акция', 'розыгрыш', 'раздача']



# Получаю свой Telegram ID для пересылки сообщений

YOUR_TELEGRAM_ID = int(os.getenv('YOUR_TELEGRAM_ID'))



# Создаю клиент Telethon с заданными параметрами

client = TelegramClient(session_name, api_id, api_hash)



# Обработчик новых сообщений в указанных каналах

@client.on(events.NewMessage(chats=MONITORED_CHANNELS))

async def handler(event):

try:

message = event.message.message

# Проверяю, содержит ли сообщение одно из ключевых слов

if any(keyword.lower() in message.lower() for keyword in KEYWORDS):

# Пересылаю сообщение на свой Telegram ID

await client.forward_messages(YOUR_TELEGRAM_ID, event.message)

logging.info(f"Сообщение из {event.chat.username} переслано.")

except Exception as e:

logging.error(f"Ошибка при обработке сообщения: {e}")



async def main():

# Запускаю клиента и начинаю мониторинг

await client.start()

logging.info("Мониторинг запущен.")

await client.run_until_disconnected()



if __name__ == '__main__':

asyncio.run(main())




Теперь он прекрасно справляется со своей задачей. Мой второй аккаунт моментально пересылает мне сообщения после того, как в указанном публичном канале появился пост. +, я сам могу подписаться на любой канал - закрытый или открытый.



Возможно, идея не нова, не претендую на авторство, реализовал - так. Если кому-то интересно узнать полный разбор кода бота и бота на вашу учетку - могу сделать, но только если будет спрос.