Есть код на pyrogram для прослушивания каналов. Все отлично работает, бот копирует сообщения с целевого канала и пересылает в мой канал, кроме каналов типа
https://t.me/nn_liquidation. Почему-то сообщения именно из этого канала не забираются и бот их вообще не видит. Пытался настроить логирование и принтовал все входящие сообщения, но ничего не происходит, словно сообщения не приходят. Есть мысли,что что-то не так с кодировкой, но пока не могу осилить. Пример текстового сообщения из канала: #GMT Liquidated Short: $31.9K at $0.226⠀Bybit [NN]
import os
import tgcrypto
import sys
import logging
import asyncio
from pyrogram import Client, filters, idle # idle модуль для прослушивания входящих сообщений
from pyrogram.types import Message
from pyrogram.handlers import MessageHandler
from typing import List
from pyrogram import utils
# Открываем текстовый файл с API данными
api = open('Api.txt').read().split(':')
# Ключи доступа к API Telegram
api_id = int(api[0])
api_hash = str(api[1])
bot_token: str = open('Token.txt').read()
donors_ids = int(input('Откуда парсить, введите id канала: '))
technical_channel = int(input('Куда парсить, введите id канала: '))
target_channel = int(input('Введите id целевого канала: '))
if int(target_channel) == 0:
print()
def get_peer_type_new(peer_id: int) -> str:
peer_id_str = str(peer_id)
if not peer_id_str.startswith("-"):
return "user"
elif peer_id_str.startswith("-100"):
return "channel"
else:
return "chat"
utils.get_peer_type = get_peer_type_new
async def new_post(client: Client, message: Message): # Функция будет запускаться при поступлении новых сообщений
await client.copy_message(chat_id=technical_channel, from_chat_id=message.chat.id, message_id=message.id) # Копируем сообщения
async def forward_media(client: Client, message: Message): # Функция для работы с видео и аудиофайлами
if message.audio or message.video:
media_file = message.audio or message.video
await client.copy_message(chat_id=technical_channel, from_chat_id=message.chat.id, message_id=message.message_id)
async def forward_post(client: Client, message: Message): # Функция для модерирования контента и отправки его в целевой канал
await client.copy_message(chat_id=target_channel, from_chat_id=message.chat.id, message_id=message.reply_to_message_id) # reply_to_message.id для отправки ответа на ранее созданное сообщения
await message.delete() # Удаляем сообщения из технического канала
await message.reply_to_message.delete() # Удаляем цитируемое сообщение
async def start(): # Функция запуска программы
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(name)s - %(message)s") # basicConfig выполняет базовую настройку системы ведения журнала
user_bot = Client(name='user_bot', api_id=api_id, api_hash=api_hash) # Копируем сообщения из каналов доноров в технический канал
bot_content = Client(name='bot_content', api_id=api_id, api_hash=api_hash, bot_token=bot_token) # Публикация контента из технического канала в целевой
user_bot.add_handler(MessageHandler(new_post, filters.chat(chats=donors_ids))) # add_handler отвечает за передачу различных видов сообщений
bot_content.add_handler(MessageHandler(forward_post, filters.reply)) # MessageHandler предназначен для обработки всех сообщений Telegram
# Запускаем 2-х клиентов
await user_bot.start()
await bot_content.start()
await idle() # Вызываем метод idle асинхронно
# Останавливаем оба клиента
await user_bot.stop()
await bot_content.stop()
# Запускаем программу
if __name__ == '__main__':
asyncio.run(start())