Telegram Bot 如何从频道或群组中删除或删除消息或媒体

Telegram Bot How to delete or remove a message or media from a channel or group

我想知道删除消息或文件(如照片)的示例

没有找到这方面的功能教程,

目前 Telegram Bot API 中没有此类功能。

UPD 2017-05-19:有官方方法deleteMessage,更多信息: https://core.telegram.org/bots/api#deletemessage

在 bot api 中有两种方法可以让您编辑消息:editMessageTexteditMessageCaption。它并不理想,但您可以将其用作替代方案。

例如,将消息编辑为:

"This message is unavailable."

Bot API 3.0 官方支持 deleteMessage 方法。更多细节在这里: https://core.telegram.org/bots/api#deletemessage

https://api.telegram.org/botTOKEN/deleteMessage?chat_id=CID&message_id=MID

如您所见,有两个参数:chat_idmessage_id

您可以删除 bot 的消息或除服务消息(例如 join/leave 消息)之外的其他消息(如果 bot 是管理员)。

  1. 成功后,它将return跟随JSON对象: {"ok":true,"result":true}.

  2. 如果您尝试删除服务消息或其他用户的消息,但机器人不是管理员: {"ok":false,"error_code":400,"description":"Bad Request: message can't be deleted"}.

  3. 如果您要删除不存在的消息或已删除的消息: {"ok":false,"error_code":400,"description":"Bad Request: message to delete not found"}

https://api.telegram.org/botTOKEN/deleteMessage?chat_id=CID&message_id=MID

例子 https://api.telegram.org/bot123456789:zzzzzzzzxxxxxxxxxxyyyyyyyyyy/deleteMessage?chat_id=123456789&message_id=123456,

重要的是,消息的id用(逗号)(,)标记,您可以在发送消息时在json中看到它

请检查下面的代码片段!下面的代码对我有用!
String chatId = String.valueOf(callbackQuery.getMessage().getChatId());
Integer messageId = callbackQuery.getMessage().getMessageId();
DeleteMessage deleteMessage = new DeleteMessage(chatId, messageId);
try {
  execute(deleteMessage);
}catch(TelegramApiException tae) {
  throw new RuntimeException(tae);
}

您可以转发消息并保存消息 ID,然后删除该消息。如果你能做到,你的信息就存在。

这样做:

try:
   mes=bot.forward_message(chat_id=?,from_chat_id=?,message_id=?)
   bot.delete_message(chat_id=?,message_id=mes.id)
except:
   print("your message deleted")

使用 python,如果您有 CommandHandler(),您可以像这样阅读 chat_idmessage_id

dispatcher.add_handler(CommandHandler("start", handler_start))

def handler_start(update: Update, context: CallbackContext):
    chat_id = update.message.chat_id
    message_id = update.message._id_attrs[0]
    context.bot.delete_message(chat_id, message_id)