#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
, поэтому я подумал, что именно там вы можете получить идентификатор чата