Как проверить с помощью библиотеки telethon открыты ли комментарии к постам в каналах Telegram
Проблема заключается в том, что я хочу пропарсить каналы по ключевым словам и в итоге парсер должен мне выдать информацию в Exel файле включающую данные о том можно ли оставлять комментарии под постом или нет.
# Фильтрация и обработка каналов
for dialog in dialogs:
if isinstance(dialog, Channel) or isinstance(dialog, Chat):
title = dialog.title
participants_count = dialog.participants_count
# Проверка ключевых слов
for keyword in keywords:
if keyword.lower() in title.lower():
# Получение информации о последних постах
messages = client.get_messages(dialog, limit=2)
if len(messages) >= 2:
views_previous = messages[0].views
views_latest = messages[1].views
else:
views_previous = 0
views_latest = 0
# Проверка возможности комментирования
can_comment = dialog.megagroup or (not dialog.broadcast and not dialog.restricted)
# Формирование ссылки на канал или группу
if isinstance(dialog, Channel):
link = f'https://t.me/{dialog.username}'
else:
link = f'https://t.me/c/{dialog.id}/{dialog.access_hash}'
# Добавление данных в Excel
sheet.append([title, 'Канал' if isinstance(dialog, Channel) else 'Группа',
link, participants_count,
views_previous, views_latest, 'Да' if can_comment else 'Нет'])
break
# Сохранение Excel-файла
wb.save('channels.xlsx')
Опять же повторюсь, что проблема заключается в том, что код получается реагирует только на чаты и пишет только для чатов что доступна отправка сообщений, но он не видит возможность отправки сообщений под постами в Telegram каналах
На скриншоте ниже можно заметить как парсер указывает только Чаты как те каналы в которых можно отправлять сообщения
Вот библиотеки которые у меня импортированны:
import openpyxl
from telethon.sync import TelegramClient
from telethon.tl.types import Channel, Chat, InputPeerEmpty
from telethon.tl.functions.messages import GetDialogsRequest
from telethon.errors import SessionPasswordNeededError
Вот создание Exel-файла:
# Создание эксель-файла и заголовков столбцов
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(['Название канала', 'Тип', 'Ссылка на канал', 'Количество участников',
'Просмотры под предпоследним постом', 'Просмотры под последним постом', 'Можно комментировать'])
Прошу вашей помощи так как я нигде не могу найти решение данной проблемы если оно конечно есть.
Ответы (1 шт):
В возвращаемом объекте Message вы можете посмотреть атрибут 'replies' далее в нем уже можно найти 'comments: True | False' с флагом, думаю это то что вам нужно.
Для примера вот структура одного объекта Message:
{
'_': 'Message',
'id': 705,
'peer_id': {
'_': 'PeerChannel',
'channel_id': 1665165740
},
'date': '2023-08-01T09:57:56+00:00',
'message': '?Планы на август: что будет на канале?\n\nАвгуст это не только самый сладкий месяц лета, но и возможность заложить основу на осень. Этим я и планирую заняться.\n\nЧто же будет на канале:\n\n♦️В августе я закрываю продажу всех своих курсов в том виде, как это есть сейчас. Кто хотел успевайте купить.\n\n♦️ Проведу 1-2 прямых эфира?\n\n♦️Сделаю Открытый урок по вокалу и поделюсь последними ноу-хау по работе с микстом и песнями?\n\n♦️ Презентую новый, офигенный формат работы со мной с сентября.\n\n♦️ Грядет повышение цен на индивидуальные уроки, для тех кто сейчас занимается будет спец предложение!\n\nА еще немного личного:\n\n?Поездка со старшей дочкой в Санкт-Петербург! \n\n?? Создание моего уникального органичного стиля вместе со стилистом, результаты вы точно не сможете не заметить?\n\nКакие у вас планы на последний месяц лета?',
'out': False,
'mentioned': False,
'media_unread': False,
'silent': False,
'post': True,
'from_scheduled': False,
'legacy': False,
'edit_hide': True,
'pinned': False,
'noforwards': False,
'from_id': None,
'fwd_from': None,
'via_bot_id': None,
'reply_to': None,
'media': None,
'reply_markup': None,
'entities': [{
'_': 'MessageEntityBold',
'offset': 2,
'length': 38
}, {
'_': 'MessageEntityBold',
'offset': 160,
'length': 23
}, {
'_': 'MessageEntityBold',
'offset': 592,
'length': 22
}, {
'_': 'MessageEntitySpoiler',
'offset': 646,
'length': 17
}, {
'_': 'MessageEntityItalic',
'offset': 782,
'length': 42
}],
'views': 148,
'forwards': 0,
'replies': {
'_': 'MessageReplies',
'replies': 1,
'replies_pts': 4244,
'comments': True,
'recent_repliers': [{
'_': 'PeerUser',
'user_id': 1837922800
}],
'channel_id': 1250833771,
'max_id': 2730,
'read_max_id': 2730
},
'edit_date': '2023-08-01T10:27:18+00:00',
'post_author': None,
'grouped_id': None,
'reactions': {
'_': 'MessageReactions',
'results': [{
'_': 'ReactionCount',
'reaction': {
'_': 'ReactionEmoji',
'emoticon': '?'
},
'count': 4,
'chosen_order': None
}],
'min': False,
'can_see_list': False,
'recent_reactions': []
},
'restriction_reason': [],
'ttl_period': None }
