В начало

Удаление сообщений в Телеграм

 

            Бот может удалять сообщения пользователей при определенных условиях, но не может удалять свои собственные сообщения.

 

Листинг. Описание API Телеграм, метод «deleteMessage»

- Сообщение можно удалить, только если оно было отправлено менее 48 часов назад.
- Служебные сообщения о создании супергруппы, канала или темы форума удалить нельзя.
- Сообщение в приватном чате можно удалить, только если оно было отправлено более 24 часов назад.
- Боты могут удалять исходящие сообщения в приватных чатах, группах и супергруппах.
- Боты могут удалять входящие сообщения в приватных чатах.
- Боты, которым предоставлены разрешения can_post_messages , могут удалять исходящие сообщения в каналах.
- Если бот является администратором группы, он может удалить любое сообщение там.
- Если у бота есть разрешение can_delete_messages в супергруппе или канале, он может удалить любое сообщение там.
Возвращает True в случае успеха.

 

Листинг. Параметры метода

Параметр

Тип

Обязательный

Описание

chat_id

Integer or String

Да

Уникальный идентификатор целевого чата или имя пользователя целевого канала

message_id

Integer

Да

Идентификатор сообщения для удаления

 

 

Листинг. Функция удаления сообщения в чате Телеграм

&НаСервере

Функция УдалитьСообщениеНаСервере(Знач Токен, Знач чChatID, Знач чMessageID)

               

                Сервер = "api.telegram.org";

                Ресурс = "bot" + Токен +

                                    "/deleteMessage?chat_id=" + СтрЗаменить(Формат(чChatID, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") +

                                                "&message_id=" + СтрЗаменить(Формат(чMessageID, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "");

               

                Соединение  =  Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());

                Запрос = Новый HTTPЗапрос(Ресурс);

               

                Попытка

                               Ответ = Соединение.Получить(Запрос);

                              

                               ЧтениеJSON = Новый ЧтениеJSON();

                               ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8));

                               Ответ2 = ПрочитатьJSON(ЧтениеJSON);

                               ЧтениеJSON.Закрыть(); 

                              

                               Возврат Ответ2.Result;                    

                Исключение

                КонецПопытки;

               

КонецФункции

 

Листинг. Варианты ответов HTTP-запросов

При неудачном удалении сообщения:

{"ok":false,"error_code":400,"description":"Bad Request: message can't be deleted"}

 

При удачном удалении сообщения:

{"ok":true,"result":true}