2017-06-14 91 views
1

我想用電報API和Telethon刪除訊息。Telethon:刪除訊息

這裏是我的代碼:

from telethon import InteractiveTelegramClient 
from telethon.tl.types.input_peer_channel import InputPeerChannel 
from telethon.tl.functions.messages.delete_messages import DeleteMessagesRequest 

#... 
total_count, messages, senders = client.get_message_history(
         chat, limit=1) 
msg = messages[0] 

result = client.invoke(DeleteMessagesRequest([msg.id])) 

但首先不得而知發生,第二,它看起來並不正確,因爲msg.id就像是5或220,它看起來並不像一個唯一的號碼。

這裏的消息:

msg: (message (ID: 0xc09bexxx) = (out=None, mentioned=None, media_unread=None, silent=None, post=True, id=5, from_id=None, to_id=(peerChannel (ID: 0xbdddexxx) = (channel_id=1234)), fwd_from=None, via_bot_id=None, reply_to_msg_id=None, date=2017-06-14 14:39:23, message=test33, media=None, reply_markup=None, entities=None, views=1, edit_date=None)) 

我也試圖與十六進制數0xc09bexxx但給出了一個例外。

那麼如何刪除通道中的消息?

到目前爲止,我看着這個github issue開始使用刪除消息。我的猜測是,也許下面的導入不是正確的,我應該在Channels包中導入版本,該版本包含頻道ID和消息ID?

from telethon.tl.functions.messages.delete_messages import DeleteMessagesRequest 

回答

2

使用其他渠道,從包中刪除我能得到刪除消息的工作,但我還是想知道如何得到messages.delete_messages工作的刪除。

from telethon.tl.functions.channels.delete_messages import DeleteMessagesRequest 

channel = InputPeerChannel(channel_id, access_hash) 
result = client.invoke(DeleteMessagesRequest(channel, [msg.id])) 

它會從通道中刪除消息。