消息发送 Telegram 机器人 (PHP)

Message sending Telegram bot (PHP)

我知道问这样的问题有点奇怪,但我正在尝试用 PHP.

编写一个电报机器人

机器人在一个频道(例如频道 A)中,我要在该频道中发送消息,所以机器人将 复制 X 条消息到另一个频道(频道 B),每 Y 分钟。

Example:

X = 5
Y = 60
Channel A = ID .....
Channel B = ID .....

所以它会每小时从A复制5条消息到B...

有人可以给我写一个模板吗?我想我可以配置 VPS 和 webhook 东西(SSL 等)。

如果您需要每分钟发送消息,并从 Telegram 回调中获取消息,您需要阅读有关队列(zmq、redis、gearman 等)的信息。

  1. 创建守护进程。这些是你的机器人。他们可以从队列中读取消息并发送回调。
  2. 编写控制器以从电报中获取回调。它可以接收消息并推送到队列。
  3. 在 PHP 上安装 Ev 或 Event 扩展。 (您可以使用 reactphp,它是创建计时器的简单解决方案)
  4. Bot1 创建定时器,并监听消息。如果我们有 5 条以上的消息,计时器可以将消息推送到 Bot2 的队列中。

您可以使用 reactphp/zmq、nrk/predis-async 来帮助您完成任务

P.S。 这是最简单的解决方案。但是您可以使用 pthreads(而不是创建守护进程)或使用简单的套接字在 bot 中发送消息。

如果你想使用 webhook,你可以这样做。

像这样写一个示例代码:

<?php
    $texts_from_other_channel = [];
    array_push($texts_from_other_channel , $update_array['message']['text']);
    $t_size = sizeof($texts_from_other_channel)
    for($i=0 ; $i < $t_size ; $i++){
        $post_prs = ['chat_id' => $channel_id , 'text' => $texts_from_other_channel[$i]];
        send_reply($sendmessag_url , $post_prs);
    end

?>

send_reply() 函数或 $update_array 等其他事情由您决定,我留给您自己。