• Записи 162
  • Теги 66
  • Комментарии 330

Компьютерное

Как определить язык пользователя в Telegram

При разработке мультиязычного бота для Telegram возникает вопрос, на каком языке отвечать пользователю в начале диалога. Оказывается, узнать это достаточно просто: в сообщениях (объект Message) есть поле from. Оно представляет собой объект User, где имеется поле language_code, в котором и лежит код языка, выставленный у пользователя в настройках.
Итоговый код на PHP будет выглядеть примерно так:

$updates = $bot->getUpdates();   foreach ($updates as $item) {     $language = $item['message']['from']['language_code'];     if ($language==='ru') $response = 'Привет!';     else $response = 'Hello!';     $bot->sendMessage($response,$item['message']['chat']['id']);   }


6 комментариев:

Нет
SLV
0

Привет.
<?php
require_once("vendor/autoload.php"); // API telegram-bot
$token = "<token>";
$bot = new \TelegramBot\Api\Client($token,null);

$updates = $bot->getUpdates();

if(!empty($bot->getRawBody())){
$bot->run();
}
?>

Бот не отвечает.
Что может быть?








4X_Pro
0

Всё логично: тут же нет никакого кода для отправки чего-либо в ответ. Чтобы отвечал, нужно повесить какие-нибудь обработчики типа command или on, тогда будет.

Нет
SLV
0

Спасибо

Нет
SLV
0

Привет, еще раз ).

Определение языка пользователя Телеграм получилось, но наблюдается какая-то задержка получения данных в getLanguagecode() после смены языка интерфейса Телеграм.
Кроме того, по-моему, эта задержка связана еще с языком ОС на смартфоне или на ПК.

Не подскажите, есть ли какой-то алгоритм получения данных в getLanguagecode() в зависимости от установленных языка интерфейса Телеграм и языка ОС смартфона (ПК)?

4X_Pro
0

Задержку тоже наблюдал (и читал упоминание на StackOverflow), но сделать этим ничего не получится. В официальной документации алгоритма не видел. Могу сказать только, что на desktop по-моему, на отправляемый код влияет системная локаль, а не язык интерфейса.

Нет
SLV
0

Да, там все как-то путано.

Написать комментарий


Задать вопрос