Ошибка при попытке спарсить закрытый чат Telegram
Коллеги из отдела маркетинга поставили задачу. Они состоят в тематических группах в Telegram, которые вручную просматривают на предмет упоминания бренда и продукции компании. Попросили написать парсер, который будет искать сообщения, содержащие определенные ключевые слова и подходящие сообщения пересылать в отдельную группу. Код представлен ниже:
from telethon.sync import TelegramClient, events
from datetime import date, timedelta
import datetime
import schedule
import time
import pandas as pd
import configparser
import json
import asyncio
import re
config = configparser.ConfigParser()
config.read("config.ini")
api_id = config['Telegram']['api_id']
api_hash = config['Telegram']['api_hash']
username = config['Telegram']['username']
client = TelegramClient(username, api_id, api_hash, system_version='4.16.30-vxCUSTOM')
client.start()
print(client.get_me())
def time_now():
current_time = datetime.datetime.now().time()
current_hour = current_time.hour
current_minute = current_time.minute
time_now = f'{current_hour}:{current_minute}'
return time_now
def parcer_chats():
chats = ['https://t.me/SantehChat', 'https://t.me/chatmontazhnik', 'https://t.me/montazhchat']
date_message = date.today() - timedelta(days=1)
for chat in chats:
part_mes= client.get_messages(chat, limit = 2000)
for message in part_mes:
if message.text:
if re.search('(\s|\A)[Кк][Рр][Аа][Нн](\s|\Z|[^a-zA-Zа-ъА-Ъь-яЬ-Я0-9])', message.text) and message.date.date() == date_message or re.search('(\s|\A)[Шш][Аа][Рр][Оо][Вв][Ыы][Йй](\s|\Z|[^a-zA-Zа-яА-Я0-9])', message.text) and message.date.date() == date_message or re.search('(\s|\A)[Лл][Оо][Пп][Нн][Уу][Лл](\s|\Z|[^a-zA-Zа-яА-Я0-9])', message.text) and message.date.date() == date_message or re.search('(\s|\A)[Фф][Ии][Тт][Ии][Нн][Гг](\s|\Z|[^a-zA-Zа-зА-зй-яЙ-Я0-9])', message.text) and message.date.date() == date_message:
client.send_message('https://t.me/my_chat', f'<a href={chat}>{message.chat.title}</a>', parse_mode = 'HTML')
client.send_message('https://t.me/my_chat', str(message.date))
message.forward_to('https://t.me/my_chat')
client.send_message('https://t.me/my_chat', '-----------------------')
while True:
if time_now() in ['7:00']:
parcer_chats()
time.sleep(60)
Код работает абсолютно корректно, но когда доходим до закрытой группы получаю сообщение в интерпретаторе:
Cannot find any entity corresponding to "https://t.me/c/1234567890"
Учетная запись, через которую происходит парсинг, является участником этой закрытой группы. Сбор информации происходит исключительно в мирных целях - выявлять упоминание о компании и вступать в диалог с участниками по возникшим вопросам. Одним словом, может кто-то подсказать как корректно парсить закрытый чат, может кто-то сталкивался?