PHP телеграмма бота reply_mark

Я программирую бота на телеграмме, и я не делал специальную клавиатуру с помощью reply_mark. Кто-нибудь может мне помочь?
Мой код такой:

file_get_contents($website."/sendmessage?chat_id=".$myID."&text=keyTest&reply_markup={"keyboard":[["test"]]}");

0

Решение

Если я копирую&Вставьте ваши параметры в мой бот и выполните команду, которая работает. Но это потому, что я использую текст, который вы предоставляете, как часть моего URL.

api.telegram.org/bot[key]/sendMessage?chat_id=[id]&text=keyTest&reply_markup={"keyboard":[["test"]]}

То, что вы делаете, — это написание скрипта, который выполняет команду. Насколько я могу судить, вы используете точку . объединить строки. Другая вещь, которую вы делаете, — это попытка записать JSON для reply_markup прямо в URL.

Ваша проблема, вероятно, заключается в следующем: вы не можете избежать " знак или же неправильно объединяет переменные.

Так что если keyboard а также test переменные, которые нужно правильно объединить, используя точку:

file_get_contents($website."/sendmessage?chat_id=".$myID."&text=keyTest&reply_markup={".$keyboard.":[[".$test."]]}");

но если вы просто хотите записать свою тестовую клавиатуру в строку, вам нужно экранировать " так что ваша строка не заканчивается:

file_get_contents($website."/sendmessage?chat_id=".$myID."&text=keyTest&reply_markup={\"keyboard\":[[\"test\"]]}");

Примечание: я понятия не имею, если это правильный способ сбежать " в php. Это просто, чтобы объяснить вашу ошибку. Если вам нужно избежать двойных кавычек в php любым другим способом, сделайте это так, как это должно быть.

0

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

ОК, я думаю, что у меня есть решение для вас!
Итак, это код:

$key = "{\"keyboard\":[ [\"OPTION1\"], [\"OPTION2\"], [\"OPTION3\"] ]}";
$url = $GLOBALS[API_URL]."/sendmessage?chat_id=$id&text=Choose%20your%20action&reply_markup=".urlencode($key);
file_get_contents($url);

Переменная $ GLOBALS [API_URL] = https://api.telegram.org/bot123456789:AAf6g4fr4rt5y67hadsffaerafasfasf
Так что замените мой глобальный var своим прямым URL или чем-то еще: D
Другая функция, которая должна вас заинтересовать, это:

function close_keyboard($id, $message)
{
//$text = "Keyboard_closed!";
$message = str_replace(" ", "%20", $message);
$key = "{\"hide_keyboard\":true}";
$url = $GLOBALS[API_URL]."/sendmessage?chat_id=$id&text=$messagge&reply_markup=".urlencode($key);
file_get_contents($url);
}

Эта функция закрывает вашу пользовательскую клавиатуру, а другая моя личная функция такова:

function build_keyboard($elements, $message, $chat_id)
{
//Get length of array
$len = count($elements);

//Build custom keyboard
$keyboard = "{\"keyboard\":[ [\"";
for($i = 0; $i < $len; ++$i)
{
if($i < $len-1)
$keyboard .= $elements[$i]."\"],[\"";
else
$keyboard .= $elements[$i]."\"] ]}";
}

$url = $GLOBALS[API_URL]."/sendmessage?chat_id=$chat_id&text=".urlencode($message)."&reply_markup=".urlencode($keyboard);
file_get_contents($url);
}

Прототип этой функции — build_keyboard (array (), String, String)
Пример:

$messagge = "Wrong choise";
$keyboard = array("OPT1", "OPT2", "OPT3");
build_keyboard($keyboard, $message, $chat_id);

Помните, что $ message всегда необходимо, или reply_doesntt работает!

Надеюсь, это будет полезно! Пожалуйста!

0

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