【发布时间】:2018-06-01 16:03:33
【问题描述】:
我的问题有点复杂,所以我宁愿在问主要问题之前先做一些解释。
我正在制作一个内容管理系统来管理我的 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-回复消息没有发送到电报帐户
(但是如果我改变这个:
$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
【问题讨论】:
-
file_get_contents($request_url)中有什么内容?也许试试看一下? -
@ThomasEdwards 请参阅问题末尾的 UPDATE 1。谢谢
-
好的,那么那个 URL 的内容是什么?即
$response = file_get_contents($request_url)- 打印出$response。 -
@ThomasEdwards Nothing.. 这是 print_r($request_params):
Array ( [chat_id] => 108132368 [text] => ) -
其实问题是
$_SESSION['messages']没有发送任何数据。
标签: php arrays session telegram-bot php-telegram-bot