Как удалить целевое сообщение telegram, если исходное сообщение удалено

#python #telegram #telegram-bot #telethon

#python #telegram #telegram-бот #телемарафон

Вопрос:

Я создаю программу на python с помощью Telethon, чтобы найти способ удалить сообщение в целевом канале после удаления исходного сообщения.

Например:
A — исходный канал
B — целевой канал

A отправляет сообщение X, которое пересылается на канал назначения B. Через некоторое время A удаляет сообщение X, B также должен удалить это сообщение.

Мой код выглядит так:

 @client.on(events.MessageDeleted)
async def edit_message_bot(event):
    ...
  

Но проблема в том, что когда я использую этот метод, msg_id из события отличается для исходного и целевого каналов и, следовательно, не может найти способ его удалить.

Пожалуйста, помогите

Комментарии:

1. также «Обратите внимание, что это событие не является надежным на 100%, поскольку Telegram не всегда уведомляет клиентов о том, что сообщение было удалено». как упоминалось в документах

Ответ №1:

Я нашел исходный код для MessageDeleted события, и в документации говорится:

Telegram не отправляет информацию о том, где было удалено сообщение, если это происходит в личных беседах с другими пользователями или в чатах небольших групп, поскольку идентификаторы сообщений уникальны, и вы можете идентифицировать чат только по идентификатору сообщения, если вы сохранили его ранее.

Telethon не сохраняет информацию о том, где происходят сообщения, поэтому он не может знать, в каком чате было удалено сообщение (это будет работать только в каналах, где присутствует идентификатор канала).

Это означает, что chats= параметр не будет работать надежно, если вы не собираетесь работать только с каналами и супергруппами.

В вашем случае вы должны получить chats параметр, который может помочь. Кроме того, вы должны использовать deleted_ids , а не msg_id . Ссылка

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

Комментарии:

1. » … вы должны получить chats параметр … «. chats это параметр, который нужно установить (в качестве фильтра), а не что-то, что можно получить из события. (вы имеете в виду chat_id ?)

2. извините, сказано в документации chats , поэтому я подумал, что именно там вы можете получить идентификатор чата