Описание
Используйте этот метод для отправки игры. В случае успеха возвращается отправленное Message.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| business_connection_id | String | Опционально | Уникальный идентификатор бизнес-подключения, от имени которого будет отправлено сообщение |
| chat_id | Integer | Да | Уникальный идентификатор целевого чата. Игры нельзя отправлять в личные сообщения каналов и чаты каналов. |
| message_thread_id | Integer | Опционально | Уникальный идентификатор целевой ветки сообщений (темы) форума; только для супергрупп-форумов |
| game_short_name | String | Да | Короткое название игры, служит уникальным идентификатором игры. Настройте свои игры через @BotFather. |
| disable_notification | Boolean | Опционально | Отправляет сообщение беззвучно. Пользователи получат уведомление без звука. |
| protect_content | Boolean | Опционально | Защищает содержимое отправленного сообщения от пересылки и сохранения |
| allow_paid_broadcast | Boolean | Опционально | Передайте True, чтобы разрешить до 1000 сообщений в секунду, игнорируя ограничения рассылки за плату 0.1 Telegram Stars за сообщение. Соответствующие Stars будут списаны с баланса бота |
| message_effect_id | String | Опционально | Уникальный идентификатор эффекта сообщения, который будет добавлен к сообщению; только для личных чатов |
| reply_parameters | ReplyParameters | Опционально | Описание сообщения, на которое нужно ответить |
| reply_markup | InlineKeyboardMarkup | Опционально | JSON-сериализованный объект для встроенной клавиатуры. Если пусто, будет показана одна кнопка 'Play game_title'. Если не пусто, первая кнопка должна запускать игру. |
Примеры
php
<?php
// Токен вашего бота
$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/sendGame";
// Параметры запроса
$chatId = 123456789; // Замените на реальный chat_id
$gameShortName = 'your_game_short_name'; // Замените на short_name игры, созданной через @BotFather
$postData = [
'chat_id' => $chatId,
'game_short_name' => $gameShortName,
'disable_notification' => false,
'protect_content' => false,
'allow_paid_broadcast' => false,
'reply_markup' => json_encode([
'inline_keyboard' => [
[
[
'text' => '🎮 Играть',
'callback_game' => [
'game_short_name' => $gameShortName
]
],
[
'text' => '📊 Статистика',
'callback_data' => 'game_stats'
]
]
]
])
];
// Опциональные параметры (раскомментируйте при необходимости)
// $postData['business_connection_id'] = 'your_business_connection_id';
// $postData['message_thread_id'] = 123; // Для тем форума
// $postData['message_effect_id'] = 'effect_id';
// $postData['reply_parameters'] = json_encode(['message_id' => 12345]);
// Отправка запроса
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Отключить для локального тестирования
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($response === false) {
echo 'Ошибка cURL: ' . curl_error($ch);
} else {
$responseData = json_decode($response, true);
if ($responseData['ok']) {
echo "Игра успешно отправлена! ID сообщения: " . $responseData['result']['message_id'];
} else {
echo "Ошибка: " . $responseData['description'];
}
}
curl_close($ch);
// Альтернативный вариант с использованием file_get_contents (требует allow_url_fopen)
/*
$context = stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query($postData)
]
]);
$response = file_get_contents($apiUrl, false, $context);
echo $response;
*/
?>
python
import requests
def send_game(bot_token, chat_id, game_short_name, **kwargs):
"""
Отправляет игру в указанный чат.
:param bot_token: Токен бота
:param chat_id: ID чата
:param game_short_name: Короткое название игры
:param kwargs: Дополнительные параметры:
- business_connection_id: ID бизнес-соединения
- message_thread_id: ID темы форума
- disable_notification: Отключить уведомление
- protect_content: Защитить содержимое
- allow_paid_broadcast: Разрешить платную рассылку
- message_effect_id: ID эффекта сообщения
- reply_parameters: Параметры ответа (dict)
- reply_markup: Разметка inline-клавиатуры (dict)
:return: Ответ от Telegram API
"""
url = f"https://api.telegram.org/bot{bot_token}/sendGame"
payload = {
"chat_id": chat_id,
"game_short_name": game_short_name
}
# Добавляем опциональные параметры если они переданы
optional_params = [
"business_connection_id",
"message_thread_id",
"disable_notification",
"protect_content",
"allow_paid_broadcast",
"message_effect_id",
"reply_parameters",
"reply_markup"
]
for param in optional_params:
if param in kwargs:
payload[param] = kwargs[param]
response = requests.post(url, json=payload)
return response.json()
# Пример использования
if __name__ == "__main__":
BOT_TOKEN = "YOUR_BOT_TOKEN"
CHAT_ID = 123456789
GAME_SHORT_NAME = "your_game_name"
# Пример 1: Простая отправка игры
result = send_game(BOT_TOKEN, CHAT_ID, GAME_SHORT_NAME)
print(result)
# Пример 2: Отправка с дополнительными параметрами
result = send_game(
bot_token=BOT_TOKEN,
chat_id=CHAT_ID,
game_short_name=GAME_SHORT_NAME,
disable_notification=True,
protect_content=True,
reply_markup={
"inline_keyboard": [[
{
"text": "🎮 Play Game",
"callback_game": {}
},
{
"text": "📊 Scores",
"callback_data": "show_scores"
}
]]
}
)
print(result)
# Пример 3: Отправка с ответом на сообщение
result = send_game(
bot_token=BOT_TOKEN,
chat_id=CHAT_ID,
game_short_name=GAME_SHORT_NAME,
reply_parameters={
"message_id": 123,
"chat_id": CHAT_ID
}
)
print(result)
История изменений
- API 2.2.. Добавлен метод sendGame
- API 5.0. Обновлен метод sendGame: Добавлено поле allow_sending_without_reply
- API 5.6. Обновлен метод sendGame: Добавлено поле protect_content
- API 6.3. Обновлен метод sendGame: Добавлен параметр message_thread_id
- API 7.0. Обновлен метод sendGame: Заменены параметры reply_to_message_id и allow_sending_without_reply на reply_parameters
- API 7.4. Обновлен метод sendGame: Добавлен параметр message_effect_id
- API 7.11. Обновлен метод sendGame: Добавлен параметр allow_paid_broadcast
- API 9.3. Обновлен метод sendGame: Поддержан параметр message_thread_id в личных чатах с темами для отправки сообщения в конкретную тему.
Дополнительно
- Message - Это основной объект, представляющий сообщение в Telegram, который содержит информацию об отправителе, чате, контенте (текст, медиа, служебные данные) и различные метаданные.
- ReplyParameters - Объект, описывающий параметры для ответа на сообщение, включая идентификатор сообщения, чат, цитирование и дополнительные настройки.
- InlineKeyboardMarkup - Объект для создания встроенной клавиатуры, которая отображается непосредственно в сообщении.