从Bot返回电报用户的消息并回答他们

时间:2017-12-19 08:59:31

标签: php arrays session telegram-bot php-telegram-bot

我的问题有点复杂,所以我宁愿在提出主要问题之前先做一些解释。

我正在建立一个内容管理系统来管理我的Telegram Bot并获得最新的更新。

基本上我到目前为止所做的是使用Telegram Bot API获取更新并将它们显示在这样的聊天框中:

print screen

例如,正如您在此图片中看到的,名为 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

1 个答案:

答案 0 :(得分:0)

$_SESSION['messages']是一个数组,不会转换为字符串,可能会出错。

尝试使用implode implode(" ", $_SESSION['messages'])在每封邮件或您喜欢的任何内容之间添加空格。

$request_params = [
    'chat_id' => $id,
    'text' => implode(" ", $_SESSION['messages'])
];