我的问题有点复杂,所以我宁愿在提出主要问题之前先做一些解释。
我正在建立一个内容管理系统来管理我的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
答案 0 :(得分:0)
$_SESSION['messages']
是一个数组,不会转换为字符串,可能会出错。
尝试使用implode implode(" ", $_SESSION['messages'])
在每封邮件或您喜欢的任何内容之间添加空格。
$request_params = [
'chat_id' => $id,
'text' => implode(" ", $_SESSION['messages'])
];