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 中有两种方法可以让您编辑消息:editMessageText
和 editMessageCaption
。它并不理想,但您可以将其用作替代方案。
例如,将消息编辑为:
"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_id
和 message_id
。
您可以删除 bot 的消息或除服务消息(例如 join/leave 消息)之外的其他消息(如果 bot 是管理员)。
成功后,它将return跟随JSON对象:
{"ok":true,"result":true}
.
如果您尝试删除服务消息或其他用户的消息,但机器人不是管理员:
{"ok":false,"error_code":400,"description":"Bad Request: message can't be deleted"}
.
如果您要删除不存在的消息或已删除的消息:
{"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
重要的是,消息的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_id
和 message_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)
我想知道删除消息或文件(如照片)的示例
没有找到这方面的功能教程,
目前 Telegram Bot API 中没有此类功能。
UPD 2017-05-19:有官方方法deleteMessage,更多信息: https://core.telegram.org/bots/api#deletemessage
在 bot api 中有两种方法可以让您编辑消息:editMessageText
和 editMessageCaption
。它并不理想,但您可以将其用作替代方案。
例如,将消息编辑为:
"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_id
和 message_id
。
您可以删除 bot 的消息或除服务消息(例如 join/leave 消息)之外的其他消息(如果 bot 是管理员)。
成功后,它将return跟随JSON对象:
{"ok":true,"result":true}
.如果您尝试删除服务消息或其他用户的消息,但机器人不是管理员:
{"ok":false,"error_code":400,"description":"Bad Request: message can't be deleted"}
.如果您要删除不存在的消息或已删除的消息:
{"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
重要的是,消息的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_id
和 message_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)