Как определить команду с сервера для телеграммы BOT

Я создал бота с @botfather, и все в порядке. Теперь я хочу установить команду от моего хоста для телеграммы. я создал Bot.php в моем корневом каталоге.

Bot.php

$string = json_decode(file_get_contents('php://input'));

function objectToArray( $object )
{
if( !is_object( $object ) && !is_array( $object ) )
{
return $object;
}
if( is_object( $object ) )
{
$object = get_object_vars( $object );
}
return array_map( 'objectToArray', $object );
}

$result = objectToArray($string);
$user_id = $result['message']['from']['id'];
$text = $result['message']['text'];
if($text == 'Hi')
$text_reply = 'Hi';
if($text == 'Your name')
$text_reply = 'jJoe';

$token = '';
$text_reply = 'Got you Buddy.';

$url = 'https://api.telegram.org/bot'.tokenNumber.'/sendMessage?chat_id='.$user_id;
$url .= '&text=' .$text_reply;


$res = file_get_contents($url);

Теперь, когда я просматриваю это:https://api.telegram.org/bot112186325:tokenNumber/setWebhook?url=https://partamsms.ir/bot.php

Я получаю это: {"ok":true,"result":true,"description":"Webhook was set"}

Но я не могу выполнить эти команды в моей учетной записи телеграммы.

Как я могу запустить команды с моего сервера?

Бесконечно благодарен

3

Решение

Согласно вашему комментарию, вы хотите что-то, что будет отвечать по-разному в зависимости от сообщения, введенного пользователем. Таким образом, используя ваш пример кода, вы можете изменить его на что-то вроде этого:

// NOTE: you can pass 'true' as the second argument to decode as array
$result= json_decode(file_get_contents('php://input'), true);
error_log(print_r($result, 1), 3, '/path/to/logfile.log');

$user_id = $result['message']['from']['id'];
$text = $result['message']['text'];

// TODO: use something like strpos() or strcmp() for more flexibility
switch (true)
{
case $text == '/hi':
$text_reply = 'Hello';
break;

case $text == '/yourname':
// TODO: use the getMe API call to get the bot information
$text_reply = 'jJoe';
break;

default:
$text_reply = 'not sure what you want?';
break;
}

$token = '';
$url = 'https://api.telegram.org/bot'.tokenNumber.'/sendMessage?chat_id='.$user_id;
$url .= '&text=' .$text_reply;
$res = file_get_contents($url);

Итак, это в значительной степени небольшой рефакторинг того, что у вас уже было … если проблема в том, что ваш Bot.php скрипт не запускается, возможно, потому что страница не является общедоступной. Веб-крючок, который вы указываете Telegram, должен быть общедоступным URL-адресом. Я пытался ударить https://partamsms.ir/bot.php и я не могу добраться до этого.

Альтернативой является использование getUpdates метод вместо этого и cron скрипт для запуска каждые 5 секунд или около того.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]