Подготовка
Что нужно:
- Создать бота или использовать своего существующего.
- Узнать id пользователя, которому нужно послать сообщение.
- Убедится, что пользователь послал хотя бы 1 сообщение боту
Как создать бота Телеграм?
Чтобы создать бота и узнать его токен (далее BOT TOKEN) и id обратитесь к статье ссылка .
Как узнать id пользователя?
Чтобы узнать id пользователя Телеграм нужно, чтобы он либо написал сообщение контакту Телеграм @getmyid_bot , либо написал сообщение вашему боту от своего имени (что предпочтительнее).
Важно: чтобы он обозначил, что это именно он, например написал в условленное время или его сообщение содержало его имя.
Важно: в документации id пользователя может/будет называться chatID .
Чтобы прочесть все сообщения полученные в адрес вашего перейдите по ссылке https://api.telegram.org/bot<BOT TOKEN>/getUpdates и получите json ответ от сервера с сообщениями. Подробнее о методе getUpdates .
Важно: сообщения хранятся на сервере Телеграм не более 24 часов, а затем удаляются. В запросе без дополнительных параметров выдается не более 100 позиций.
Код
Параметры функции:
$msg — текст сообщения на английском языке (есть проблемы кодировкой).
$chatID — id пользователя которому отсылается сообщение.
$bot_token — токен бота BOT TOKEN
$emoji_unicode — UTF код иконки для добавления в текст сообщения смайлика из библиотеки. Пример: \xF0\x9F\x94\xA5
function telegramSendMessage($msg, $chatID, $bot_token, $emoji_unicode = '')
{
echo "sending message to " . $chatID . "\n";
$url = "https://api.telegram.org/bot" . $bot_token . "/sendMessage" . "?chat_id=" . $chatID;
$text_param = urlencode($msg);
if(!empty($emoji_unicode))
$text_param = str_replace('\x', '%', $emoji_unicode) . '+' . $text_param;
$url = $url . "&text=" . $text_param;
$ch = curl_init($url);
$optArray = array(
CURLOPT_HEADER => false,
CURLOPT_POST => 1,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 60,
CURLOPT_SSL_VERIFYPEER => false
);
curl_setopt_array($ch, $optArray);
$result = curl_exec($ch);
if (curl_errno($ch))
{
echo curl_error($ch) . PHP_EOL;
}
curl_close($ch);
echo $result . PHP_EOL;
}
Ошибки в работе скрипта
Сообщение не доходит до пользователя
Убедитесь, что пользователь послал хотя бы 1 сообщение этому боту иначе любые сообщения от вашего бота не будут доходить.
Forbidden: bot was blocked by the user В некоторых случаях пользователи намеренно блокируют этого бота.
400 Bad Request это может появится, если вы посылаете сообщения слишком часто, что воспринимается как спам сервером. Или с вашего IP адреса, кто то еще посылает слишком много сообщений, что бывает если вы арендуете частный хостинг.