我想使带有 php 键盘按钮的电报机器人无法正常工作
I want to make a telegram bot with php keyboards button not work properly
我想用 php 制作一个电报机器人,一个一个地问一些问题(键盘按钮)并将详细信息存储在对象中,最后回答是否存在!
我写了这段代码
<?php
require_once ("iphone_class.php");
$message = file_get_contents("php://input");
$result = json_decode($message, true);
file_put_contents('test.txt', $result);
$token = "255676049:AAEv9GbV95Xg2UmzZR4D-0kXbIj73NKnl4o";
$base_url = "https://api.telegram.org/bot{$token}/SendMessage?chat_id=";
$chat_id = $result['message']['chat']['id'];
$message_from_user = $result["message"]["text"];
function AddtoKeyboard($names)
{
$ar = array(
'keyboard' => array(),
);
foreach ($names as $name) {
$ar2 = array($name);
array_push($ar["keyboard"], $ar2);
}
return $ar;
}
function get_new_message(){
$message = file_get_contents("php://input");
$result = json_decode($message, true);
$message_from_user = $result["message"]["text"];
return $message_from_user;
}
if ($message_from_user == "موبایل") {
$m = array("صفحه ی اصلی", "اندرویدی", "اپل");
$keyb = json_encode(AddtoKeyboard($m));
$rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("لطفا نوع موبایل مورد نظر را انتخاب کنید: ")
. "&reply_markup=" . $keyb);
$message_from_user = get_new_message();
file_get_contents($base_url . $chat_id . "&text=" . urlencode($message_from_user));
if ($message_from_user == "اپل") {
$iphone = new Iphone();
$m = array("صفحه ی اصلی", "5", "5c", "5s", "se", "6", "6 plus", "6s", "6s plus");
$keyb = json_encode(AddtoKeyboard($m));
$rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("لطفا مدل موبایل مورد نظر را انتخاب کنید: ")
. "&reply_markup=" . $keyb);
$message_from_user = get_new_message();
$iphone->setModel($message_from_user);
$m = array("صفحه ی اصلی", "16", "64", "128", "256");
$keyb = json_encode(AddtoKeyboard($m));
$rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("لطفا ظرفیت موبایل مورد نظر را انتخاب کنید: ")
. "&reply_markup=" . $keyb);
$message_from_user = get_new_message();
$iphone->setCapacity($message_from_user);
$m = array("صفحه ی اصلی", "silver", "gray", "gold", "roseGold");
$keyb = json_encode(AddtoKeyboard($m));
$rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("لطفا رنگ موبایل مورد نظر را انتخاب کنید: ")
. "&reply_markup=" . $keyb);
$message_from_user = get_new_message();
$iphone->setColor($message_from_user);
//TODO check ba database va message dadan quanity
}else if ($message_from_user == "اندروید"){
}
} else if ($message_from_user == "لپ تاپ") {
} else if ($message_from_user == "تبلت") {
$text = "ipad";
} else if ($message_from_user == "صفحه ی اصلی") {
$m = array("موبایل", "تبلت", "لپ تاپ");
$keyb = json_encode(AddtoKeyboard($m));
$rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("صفحه ی اصلی") . "&reply_markup=" . $keyb);
} else {
$text = "hichkodoom";
file_get_contents($base_url . $chat_id . "&text=" . urlencode($text));
}
?>
但在
之后
if ($message_from_user == "موبایل") {
$m = array("صفحه ی اصلی", "اندرویدی", "اپل");
$keyb = json_encode(AddtoKeyboard($m));
$rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("لطفا نوع موبایل مورد نظر را انتخاب کنید: ")
. "&reply_markup=" . $keyb);
$message_from_user = get_new_message();
消息不会更新到最后一个答案,我的 php 文件从头开始运行,我丢失了我的对象 iphone!
您无法收到这样的新消息。
if ($message_from_user == "موبایل") {
...
$message_from_user = get_new_message();
对于每条消息,都会再次调用 php 回调(因为您还观察到您的 php 代码从新消息开始就是 运行 的行为)。
如果你想存储来自用户的消息并与他们交互,你应该将消息存储在数据库中(或存储在会话中),然后当你收到一条消息时,检查聊天 ID 以查看你是否与该用户(例如过去 10 分钟内的任何互动)或想要从头开始。
使用这样的 switch case 来区分消息:
switch($message_from_user)
{
case "موبایل":
//do something
break;
case "اندروید":
//do something
break;
case "اپل":
//do something
break;
}
我想用 php 制作一个电报机器人,一个一个地问一些问题(键盘按钮)并将详细信息存储在对象中,最后回答是否存在!
我写了这段代码
<?php
require_once ("iphone_class.php");
$message = file_get_contents("php://input");
$result = json_decode($message, true);
file_put_contents('test.txt', $result);
$token = "255676049:AAEv9GbV95Xg2UmzZR4D-0kXbIj73NKnl4o";
$base_url = "https://api.telegram.org/bot{$token}/SendMessage?chat_id=";
$chat_id = $result['message']['chat']['id'];
$message_from_user = $result["message"]["text"];
function AddtoKeyboard($names)
{
$ar = array(
'keyboard' => array(),
);
foreach ($names as $name) {
$ar2 = array($name);
array_push($ar["keyboard"], $ar2);
}
return $ar;
}
function get_new_message(){
$message = file_get_contents("php://input");
$result = json_decode($message, true);
$message_from_user = $result["message"]["text"];
return $message_from_user;
}
if ($message_from_user == "موبایل") {
$m = array("صفحه ی اصلی", "اندرویدی", "اپل");
$keyb = json_encode(AddtoKeyboard($m));
$rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("لطفا نوع موبایل مورد نظر را انتخاب کنید: ")
. "&reply_markup=" . $keyb);
$message_from_user = get_new_message();
file_get_contents($base_url . $chat_id . "&text=" . urlencode($message_from_user));
if ($message_from_user == "اپل") {
$iphone = new Iphone();
$m = array("صفحه ی اصلی", "5", "5c", "5s", "se", "6", "6 plus", "6s", "6s plus");
$keyb = json_encode(AddtoKeyboard($m));
$rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("لطفا مدل موبایل مورد نظر را انتخاب کنید: ")
. "&reply_markup=" . $keyb);
$message_from_user = get_new_message();
$iphone->setModel($message_from_user);
$m = array("صفحه ی اصلی", "16", "64", "128", "256");
$keyb = json_encode(AddtoKeyboard($m));
$rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("لطفا ظرفیت موبایل مورد نظر را انتخاب کنید: ")
. "&reply_markup=" . $keyb);
$message_from_user = get_new_message();
$iphone->setCapacity($message_from_user);
$m = array("صفحه ی اصلی", "silver", "gray", "gold", "roseGold");
$keyb = json_encode(AddtoKeyboard($m));
$rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("لطفا رنگ موبایل مورد نظر را انتخاب کنید: ")
. "&reply_markup=" . $keyb);
$message_from_user = get_new_message();
$iphone->setColor($message_from_user);
//TODO check ba database va message dadan quanity
}else if ($message_from_user == "اندروید"){
}
} else if ($message_from_user == "لپ تاپ") {
} else if ($message_from_user == "تبلت") {
$text = "ipad";
} else if ($message_from_user == "صفحه ی اصلی") {
$m = array("موبایل", "تبلت", "لپ تاپ");
$keyb = json_encode(AddtoKeyboard($m));
$rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("صفحه ی اصلی") . "&reply_markup=" . $keyb);
} else {
$text = "hichkodoom";
file_get_contents($base_url . $chat_id . "&text=" . urlencode($text));
}
?>
但在
之后if ($message_from_user == "موبایل") {
$m = array("صفحه ی اصلی", "اندرویدی", "اپل");
$keyb = json_encode(AddtoKeyboard($m));
$rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("لطفا نوع موبایل مورد نظر را انتخاب کنید: ")
. "&reply_markup=" . $keyb);
$message_from_user = get_new_message();
消息不会更新到最后一个答案,我的 php 文件从头开始运行,我丢失了我的对象 iphone!
您无法收到这样的新消息。
if ($message_from_user == "موبایل") {
...
$message_from_user = get_new_message();
对于每条消息,都会再次调用 php 回调(因为您还观察到您的 php 代码从新消息开始就是 运行 的行为)。 如果你想存储来自用户的消息并与他们交互,你应该将消息存储在数据库中(或存储在会话中),然后当你收到一条消息时,检查聊天 ID 以查看你是否与该用户(例如过去 10 分钟内的任何互动)或想要从头开始。
使用这样的 switch case 来区分消息:
switch($message_from_user)
{
case "موبایل":
//do something
break;
case "اندروید":
//do something
break;
case "اپل":
//do something
break;
}