php - 电报机器人键盘 PHP
问题描述
我已经用 PHP 为我的电报机器人编写了这个函数,但它不起作用:
if($text == "t"){
$keyboard = array(
"inline_keyboard" => array(
array(
array(
"text" => "My Button Text",
"callback_data" => "myCallbackData"
)
)
)
);
$key = array(
"keyboard" => $keyboard,
);
keyboard($chatId, "asadsd", $key);
}
function keyboard($chatID, $text, $t)
{
$t2 = $t;
$t3 = json_encode($t2);
api("sendMessage?chat_id=$chatId&text=$text&parse_mode=HTML&reply_markup=$t3");
}
它应该工作,但它没有这样做。
解决方案
您的代码不起作用,因为您试图将 inline_keyboard 数组放入经典键盘数组中。所以:
$key = array(...);
当你调用键盘函数 put而$keyboard
不是$key
.- 将
$chatID
而不是$chatId
放在键盘函数中,因为 php 变量名区分大小写。 - 删除
$t2
and$t3
因为它们没用。 - 我建议放置一个 arguments 变量并
http_build_query
用于构建 args,因此它会自动 urlencode 并构建 vars。
你的代码应该是这样的:
if($text == "t"){
$keyboard = array(
"inline_keyboard" => array(
array(
array(
"text" => "My Button Text",
"callback_data" => "myCallbackData"
)
)
)
);
keyboard($chatId, "asadsd", $keyboard);
}
function keyboard($chatID, $text, $t)
{
$args = array(
"chat_id" => $chatID,
"text" => $text,
"parse_mode" => "HTML",
"reply_markup" => json_encode($t),
);
api("sendMessage?".http_build_query($args));
}
假设一切都设置好了,代码应该可以正常工作。下次请详细点
推荐阅读
- android - 具有私有主构造函数的自定义视图
- python - 使用 Python 读取 XML 时如何从字符串中删除新行?
- javascript - 有没有办法根据使用的字体来测量文本的边界框?
- excel - VBA 代码根据行 ID 循环行并将值复制到列中
- ios - 我的代码有什么问题?它给出了“线程 1:致命错误:未解决的错误错误域”
- c - 未知数据类型 IRQn_Type,
- ios - FlutterDriver:Flutter Driver 扩展需要很长时间才能可用
- java - 我可以在 Eclipse 上运行一个打开控制台的程序,然后打开一个处理窗口吗?
- asp.net - ASP.NET MVC 和 II7 的静态重写,为什么所有页面链接都断开?
- sql - JsonSerializationException:无法反序列化当前 JSON 对象。在 asp.net 核心中