使用 telethon 库从电报中删除预定消息
Delete scheduled message from telegram using telethon library
我几乎是电报机器人开发的新手,并且具有使用 telethon python 库的基本经验。
我正在做一个项目,我需要使用 telethon 安排消息,然后在需要时删除消息。我正在使用以下代码来安排电报频道和群组上的消息。
await client.send_message(receiver, message_text, schedule=schedule_time)
当我需要获取该频道的预定消息时,我使用以下代码从电报服务器获取消息。
result = await self.client(functions.messages.GetScheduledHistoryRequest(
peer=target,
hash=0
))
而且我想删除我安排的消息。我浏览了 telethon 库的文档并找到了以下代码来删除消息。
group = await client.get_entity(group_id)
list_of_messages = await get_scheduled_messages(group_id)
for message in list_of_messages:
status = await client.delete_messages(group, [message.id])
这是行不通的。我也试过像这样删除消息对象的方法。
group = await client.get_entity(group_id)
list_of_messages = await get_scheduled_messages(group_id)
for message in list_of_messages:
await message.delete()
我是不是遗漏了什么或者没有什么可以删除的预定消息还没有发送!
要删除您预定的消息,您必须先使用 GetScheduledHistoryRequest
and then you can delete all the messages you'd prefer to, using DeleteScheduledMessagesRequest
。
chat = await client.get_input_entity('yourchat')
result = await client(functions.messages.GetScheduledHistoryRequest(
peer=chat,
hash=0
))
# use result.messages to access the list of scheduled messages
msg = result.messages[0] # or any other message you want to delete
await client(functions.messages.DeleteScheduledMessagesRequest(
peer=chat,
id=[msg.id] # !imporant you need to pass a list here
))
为了编辑预定消息,由于 edit_messages()
和 edit()
函数似乎无法正常处理预定消息,您需要使用 Telegram 原始 API messages.editMessage .
chat = await client.get_input_entity('yourchat')
result = await client(functions.messages.GetScheduledHistoryRequest(
peer=chat,
hash=0
))
msg = result.messages[0] # or any other message you want to edit
await client(functions.messages.EditMessageRequest(
peer = msg.to_id,
id = msg.id,
message = 'new text',
no_webpage= False, # didn't find anything into the Message object to refer to
entities= msg.entities,
media= msg.media,
reply_markup = msg.reply_markup,
schedule_date= msg.date
))
请记住,我参考了旧消息将所有参数填充到 EditMessageRequest()
函数中,但您应该能够编辑 no_webpage
、media
、 schedule_date
没问题。
我几乎是电报机器人开发的新手,并且具有使用 telethon python 库的基本经验。 我正在做一个项目,我需要使用 telethon 安排消息,然后在需要时删除消息。我正在使用以下代码来安排电报频道和群组上的消息。
await client.send_message(receiver, message_text, schedule=schedule_time)
当我需要获取该频道的预定消息时,我使用以下代码从电报服务器获取消息。
result = await self.client(functions.messages.GetScheduledHistoryRequest(
peer=target,
hash=0
))
而且我想删除我安排的消息。我浏览了 telethon 库的文档并找到了以下代码来删除消息。
group = await client.get_entity(group_id)
list_of_messages = await get_scheduled_messages(group_id)
for message in list_of_messages:
status = await client.delete_messages(group, [message.id])
这是行不通的。我也试过像这样删除消息对象的方法。
group = await client.get_entity(group_id)
list_of_messages = await get_scheduled_messages(group_id)
for message in list_of_messages:
await message.delete()
我是不是遗漏了什么或者没有什么可以删除的预定消息还没有发送!
要删除您预定的消息,您必须先使用 GetScheduledHistoryRequest
and then you can delete all the messages you'd prefer to, using DeleteScheduledMessagesRequest
。
chat = await client.get_input_entity('yourchat')
result = await client(functions.messages.GetScheduledHistoryRequest(
peer=chat,
hash=0
))
# use result.messages to access the list of scheduled messages
msg = result.messages[0] # or any other message you want to delete
await client(functions.messages.DeleteScheduledMessagesRequest(
peer=chat,
id=[msg.id] # !imporant you need to pass a list here
))
为了编辑预定消息,由于 edit_messages()
和 edit()
函数似乎无法正常处理预定消息,您需要使用 Telegram 原始 API messages.editMessage .
chat = await client.get_input_entity('yourchat')
result = await client(functions.messages.GetScheduledHistoryRequest(
peer=chat,
hash=0
))
msg = result.messages[0] # or any other message you want to edit
await client(functions.messages.EditMessageRequest(
peer = msg.to_id,
id = msg.id,
message = 'new text',
no_webpage= False, # didn't find anything into the Message object to refer to
entities= msg.entities,
media= msg.media,
reply_markup = msg.reply_markup,
schedule_date= msg.date
))
请记住,我参考了旧消息将所有参数填充到 EditMessageRequest()
函数中,但您应该能够编辑 no_webpage
、media
、 schedule_date
没问题。