Описание
Используйте этот метод, чтобы добавить сообщение в список закреплённых сообщений в чате. В личных чатах и прямых сообщениях каналов можно закреплять все неслужебные сообщения. В группах и каналах бот должен быть администратором с правом 'can_pin_messages' или 'can_edit_messages' соответственно, чтобы закреплять сообщения. Возвращает True при успешном выполнении.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| business_connection_id | String | Опционально | Уникальный идентификатор бизнес-подключения, от имени которого будет закреплено сообщение |
| chat_id | Integer или String | Да | Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername) |
| message_id | Integer | Да | Идентификатор сообщения для закрепления |
| disable_notification | Boolean | Опционально | Передайте True, если не нужно отправлять уведомление всем участникам чата о новом закреплённом сообщении (в каналах и личных чатах уведомления всегда отключены). |
Примеры
php
<?php
$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/";
// Пример данных для закрепления сообщения
$chatId = -1001234567890; // ID группы/канала или @username для канала
$messageId = 12345; // ID сообщения, которое нужно закрепить
// Параметры запроса
$params = [
'chat_id' => $chatId,
'message_id' => $messageId,
'disable_notification' => true, // Опционально: отключить уведомление
// 'business_connection_id' => 'business_connection_id' // Опционально: для бизнес-аккаунтов
];
// Отправка запроса
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl . 'pinChatMessage');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Для локального тестирования
$response = curl_exec($ch);
curl_close($ch);
// Обработка ответа
$result = json_decode($response, true);
if ($result['ok']) {
echo "Сообщение успешно закреплено!";
} else {
echo "Ошибка: " . $result['description'];
}
// Альтернативный вариант с использованием file_get_contents
/*
$url = $apiUrl . 'pinChatMessage?' . http_build_query($params);
$response = file_get_contents($url);
$result = json_decode($response, true);
*/
// Пример с использованием библиотеки (например, TelegramBotPHP)
/*
use TelegramBot\Api\BotApi;
$bot = new BotApi($botToken);
try {
$bot->pinChatMessage($chatId, $messageId, $disableNotification = true);
echo "Сообщение закреплено!";
} catch (\Exception $e) {
echo "Ошибка: " . $e->getMessage();
}
*/
?>
python
import requests
def pin_chat_message(bot_token, chat_id, message_id, disable_notification=None, business_connection_id=None):
"""
Закрепляет сообщение в чате.
Args:
bot_token (str): Токен вашего бота
chat_id (int | str): ID чата или username канала
message_id (int): ID сообщения для закрепления
disable_notification (bool, optional): Отключить уведомление
business_connection_id (str, optional): ID бизнес-соединения
Returns:
bool: True при успешном выполнении
"""
url = f"https://api.telegram.org/bot{bot_token}/pinChatMessage"
payload = {
"chat_id": chat_id,
"message_id": message_id
}
if disable_notification is not None:
payload["disable_notification"] = disable_notification
if business_connection_id:
payload["business_connection_id"] = business_connection_id
response = requests.post(url, json=payload)
result = response.json()
if result.get("ok"):
return True
else:
raise Exception(f"Ошибка: {result.get('description')}")
# Пример использования
if __name__ == "__main__":
BOT_TOKEN = "ВАШ_ТОКЕН_БОТА"
# Пример 1: Закрепление в группе/супергруппе
try:
success = pin_chat_message(
bot_token=BOT_TOKEN,
chat_id=-1001234567890, # ID группы
message_id=123, # ID сообщения
disable_notification=True # Без уведомления
)
print(f"Сообщение закреплено: {success}")
except Exception as e:
print(f"Ошибка: {e}")
# Пример 2: Закрепление в канале
try:
success = pin_chat_message(
bot_token=BOT_TOKEN,
chat_id="@my_channel", # Username канала
message_id=456 # ID сообщения
)
print(f"Сообщение закреплено в канале: {success}")
except Exception as e:
print(f"Ошибка: {e}")