【问题标题】:Calling Telegram API to create a feedreader bot [closed]调用 Telegram API 来创建 feedreader 机器人 [关闭]
【发布时间】:2015-09-11 18:14:19
【问题描述】:

我已经看到启用了新的机器人 API 来创建客户机器人,我已经看到了一些来源,例如 thisthis 我还阅读了关于注册机器人的 @fatherbot,我还搜索了一些关于电报机器人的例子,例如this,我知道如何在phppython中编写代码,但不知道如何调用api方法以及从哪里开始。有没有人知道如何开始?

【问题讨论】:

  • 你为什么不使用@TbotifyBot 或tbotify.com bot 创建服务?它有一个内置的 feedreader 可供用户使用

标签: php api telegram telegram-bot


【解决方案1】:

您可以使用这个基本示例来帮助您。我建议使用类似 curl 的方式添加更多润色并添加一些错误处理。

<?php

$bot_id = "<bot ID generated by BotFather>";

# Note: you want to change the offset based on the last update_id you received
$url = 'https://api.telegram.org/bot' . $bot_id . '/getUpdates?offset=0';
$result = file_get_contents($url);
$result = json_decode($result, true);

foreach ($result['result'] as $message) {
    var_dump($message);
}

# You can send a message like this:
# The chat_id variable will be provided in the getUpdates result
# TODO: urlencode your message
$url = 'https://api.telegram.org/bot' . $bot_id . '/sendMessage?text=message&chat_id=0';
$result = file_get_contents($url);
$result = json_decode($result, true);

var_dump($result['result']);

【讨论】:

  • 哇...谢谢你的好例子..谢谢你
【解决方案2】:

根据Official Bot API

Getting updates

There are two mutually exclusive ways of receiving updates for your bot 
— the getUpdates method on one hand and Webhooks on the other.

所以 PHP bot 脚本通过接收模式以不同的方式工作

使用 getUpdates

bot API的访问是通过HTTP GET/POST,官方帮助中有详细说明。

  • 使用无限循环通过 HTTP GET/POST 从电报读取消息
  • 如果有新消息

    • 解析消息
    • 使用 HTTP GET/POST 发送消息
    • 睡几秒钟

使用 WebHook

当使用 WebHook(并且配置良好)时,发送给您的机器人的新消息将触发一个 HTTP POST 请求,从电报服务器到您配置的 url,在您自己的服务器上,由您的 PHP 脚本解析。

在您的 PHP 脚本中,解析来自 HTTP POST 的新消息,并使用 HTTP POST 将消息发送回电报服务器。


所以,区别只存在于从电报获取消息时,所有发送到电报的响应都是通过 HTTP GET/POST,详细信息在官方 API 的 提出请求部分。

有人在github上疯了一些非官方的PHP api:

【讨论】:

  • 非常感谢您的回答,看来我可以使用 WebHook 方法,因为我已经使用过 HTTP POST/GET 但是有一些实际工作的例子吗?非常感谢跨度>
  • @MajidHojati github 上的 API 存储库已经包含了一些示例代码,并且还在不断增长。
  • 非常感谢您的帮助
【解决方案3】:

您可以将我的新库用于电报的 bot api! https://github.com/tekook/TelegramLibrary

它具有新 api 的所有功能,是一个易于使用且基于事件的库!

玩得开心!

【讨论】:

  • 嗯,谢谢,,看来这对我来说是一个很好的起点
【解决方案4】:

我建议初学者这样开始:

  1. 在您的 Telegram 应用中搜索 BotFather

  2. 向他发送 /newbot 命令。听从他的指示。

  3. 他会给你一个令牌,比如123456789:ABCDefGHIJKLmnopQRstUVwXYz

  4. 打开浏览器窗口,在地址栏输入以下形式:https://api.telegram.org/bot&lt;token&gt;/getMe
    例如,使用上面的假令牌:https://api.telegram.org/bot123456789:ABCDefGHIJKLmnopQRstUVwXYz/getMe
    它应该以 JSON 格式返回您的机器人信息。这表明访问 Bot API 只不过是发出 HTTP 请求。

  5. 在 Telegram 应用中搜索您的机器人。给它发消息。

  6. 在浏览器窗口中,输入:https://api.telegram.org/bot&lt;token&gt;/getUpdates
    请记住替换令牌。您应该会看到刚刚发送的消息。请注意 fromchat 字段。那是你。

  7. 然后,您可以尝试一些库。为了在这里保持语言平衡,我建议 telepot,这是我创建的一个 Python 框架。项目页面有很多文档和示例。

最后,即使有库的帮助,我也鼓励您阅读底层的 Bot API documentations。了解它可以帮助您充分利用它的力量。

祝你好运。

【讨论】:

    【解决方案5】:

    关于 getUpdates API 和无限循环,php 服务器不能让代码执行超过 30 秒。 ,所以无限循环不能正常工作。

    【讨论】:

      【解决方案6】:

      我对 Telegram API 也很陌生,但您可以从访问此 URL 开始,您应该用您自己生成的令牌替换 (token) 购买 BotFather:

      https://api.telegram.org/bot(token)/METHOD_NAME

      例如,如果您想开始处理由您的 PHP 脚本发送到您的机器人的请求,您应该调用这个:

      https://api.telegram.org/bot(token)/setWebhook?url=https://yourdomain.com/path_to_your_script/

      请注意,您必须有启用 SSL 的网站才能开始使用电报 API。

      【讨论】:

      • 非常感谢亲爱的 Vahid,有没有 php 文件的示例可以让我了解更多信息?我的意思是我只能调用地址中的方法,然后将它们发布到我的 php 文件中?如何返回结果?
      【解决方案7】:

      作为脚本无法运行超过 30 秒的答案:

      使用 set_time_limit(0);让它永远持续下去。但是请注意,任何无限时间循环都有些危险;诸如 cpu hogs 或内存泄漏之类的副作用会吞噬您的服务器。这就是为什么许多 ISP 不允许此设置。

      【讨论】:

        猜你喜欢
        • 2016-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-02
        • 2012-08-03
        • 2018-02-26
        • 2020-07-29
        • 2019-02-11
        相关资源
        最近更新 更多