<?php
// получаем объект от Telegram API
$data = json_decode(file_get_contents('php://input'));
// Берем значение как для объекта Message
$text = $data->message->text;
// Делаем проверки
if($text == "/start") {
// Выводим приветствие это простой старт бота
} elseif(preg_match("~^\/start ([\d]+)$~", $text, $matches)) {
// здесь отработает когда прилетит значение равное /start ЗДЕСЬ_ЛЮБОЕ_ЧИСЛО
// например /start 123456 или /start 12
// в $matches[1] будет лежать число из $text
// если из примера то это 123456 или 12
} else {
// здесь любое другое значение $text даже пустое
// Выводим здесь например предупрежденние
}
case '/start':
// получаем объект от Telegram API
$data = json_decode(file_get_contents('php://input'));
// Берем значение как для объекта Message
$text = $data->message->text;
// Делаем проверки
if($text == "/start") {
$dataSend = array(
'text' => "hi",
'chat_id' => $chat_id,
'reply_markup' => $justKeyboard,
);
$this->requestToTelegram($dataSend, "sendMessage");
} elseif(preg_match("~^/start 123", $text, $matches)) {
$dataSend = array(
'text' => $matches[1],
'chat_id' => $chat_id,
'reply_markup' => $justKeyboard,
);
$this->requestToTelegram($dataSend, "sendMessage");
// здесь отработает когда прилетит значение равное /start ЗДЕСЬ_ЛЮБОЕ_ЧИСЛО
// например /start 123456 или /start 12
// в $matches[1] будет лежать число из $text
// если из примера то это 123456 или 12
} else {
// здесь любое другое значение $text даже пустое
// Выводим здесь например предупрежденние
}
break;
Нет, не так.
Вы просили простой пример бота, который получает значение при переходе в него по ссылке с подстановкой значения в параметр /start
Я вам привел самодостаточную логику, а вы ее вставили в свое решение - получился код бота в одном из условии другого бота (бот в боте)
Вы может просто взять проверку на нужное вам условие из примера и подставить его в свой код
case preg_match("~^\/start ([\d]+)$~", $text, $matches):
// здесь нужное вам значение
$id_ref = $matches[1];
// далее вы что-то делаете с $id_ref
break;
тогда я все равно не могу понять почему у меня не работает
case preg_match("~^/start ([d] )$~", $text, $matches):
// здесь нужное вам значение
$id_ref = $matches[1];
// далее вы что-то делаете с $id_ref
$dataSend = array(
'text' => $id_ref,
'chat_id' => $chat_id,
'reply_markup' => $justKeyboard,
У каждого бота есть ссылка, которая открывает с ним разговор в Telegram - https://t.me/<bot username>.
К этой ссылке можно добавить параметры start или startgroup со значениями длиной до 64 символов. Например:
https://t.me/triviabot?startgroup=test
Разрешены: A-Z, a-z, 0-9, _, -
Телеграм рекомендует использовать base64url для кодирования параметров с двоичным и другим типами контента.
Вы просили простой пример бота, который получает значение при переходе в него по ссылке с подстановкой значения в параметр /start
Я вам привел самодостаточную логику, а вы ее вставили в свое решение - получился код бота в одном из условии другого бота (бот в боте)
Вы может просто взять проверку на нужное вам условие из примера и подставить его в свой код
Пример шаблона
Покажите switch (ЧТО_У_ВАС_ЗДЕСЬ)
Надо заменить на
[moder_update]
Получается ни одно из условий не проходит.
Проверьте еще раз условия с preg_match()
$queryParams = [];
$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $queryParams);
if (isset($queryParams['start'])) {
echo $queryParams['start'];
}
Вам в бот прилетит объект message со значением по ключу text, которое будет равно:
А ваш пример просто разбор ссылки при помощи встроенной функции php parse-url
case preg_match("~^/start ([d] )$~", $text, $matches):
// здесь нужное вам значение
$id_ref = $matches[1];
// далее вы что-то делаете с $id_ref
$dataSend = array(
'text' => $id_ref,
'chat_id' => $chat_id,
'reply_markup' => $justKeyboard,
);
$this->requestToTelegram($dataSend, "sendMessage");
break;
Я не вижу весь ваш код, мне сложно вам помочь урывками.
Можете прислать мне в бот обратной связи ваш код в архиве.
$ref = $matches[0];
}