我的问题有点复杂,所以我宁愿在提出主要问题之前先做一些解释。
我正在制作内容管理系统来管理我的Telegram Bot并获得最新的更新。
基本上我到目前为止所做的是使用Telegram Bot API获取更新,并在一个像这样的聊天框中显示它们:
例如,正如您在此图片中看到的,名为Pouya的用户已向我正在使用的Bot发送了一条消息。
现在为了回复并向此发送消息,我对此进行了编码:
if (session_status() == PHP_SESSION_NONE) {
session_start();
$_SESSION['messages'] = array();
}
$request_params = array();
if (isset($_POST['send'])){
$pm = $_POST['message'];
array_push($_SESSION['messages'], $pm);
$request_params = [
'chat_id' => $id,
'text' => $_SESSION['messages']
];
$request_url = 'https://api.telegram.org/bot' . $botToken . '/sendMessage?' . http_build_query($request_params);
file_get_contents($request_url);
print_r($request_params);
}
<div class="box-footer">
<form action="" method="post">
<div class="input-group">
<input type="text" name="message" placeholder="Write your direct message" class="form-control">
<span class="input-group-btn">
<input name="send" type="submit" class="btn btn-danger btn-flat"/>
</span>
</div>
</form>
</div>
如你所见,我已将$pm
保存到名为$_SESSION['messages']
的会话中。所以通过这种方式我可以在聊天框中再次调用它,并且不需要使用数据库等:
$num3 = count($request_params["text"]);
for($z=0;$z<$num3;$z++){
echo '<div class="direct-chat-text">';
echo $request_params["text"][$z];
echo '</div>';
}
所以一切看起来都很干净但是这个代码有两个问题:
1-回复消息未发送到Telegram帐户
(但是,如果我改变这个:
$request_params = [
'chat_id' => $id,
'text' => $_SESSION['messages']
];
对此:
$request_params = [
'chat_id' => $id,
'text' => $pm
];
它会正确发送消息)。
2-第二个问题是在提交表单后,消息甚至没有显示在聊天框中。
我想导致这些问题的主要原因是$_SESSION['messages']
根本不包含任何值而且它是空的!
那你对此有什么看法......请分享你对此的建议。谢谢 :)
更新1:
file_get_contents($request_url);
包含这个例子:
https://api.telegram.org/bot423495534:asdsadsadsad/sendmessage?chat_id=108132368&text=hi
$_SESSION['messages']
是一个数组,不会转换为字符串,可能会出错。
尝试使用implode implode(" ", $_SESSION['messages'])
在每条消息或任何您喜欢的内容之间添加空格。
$request_params = [
'chat_id' => $id,
'text' => implode(" ", $_SESSION['messages'])
];