profile_pic

You can fo↑↑ow my blog

WX:_2guagua

这是我已经搭建好的可以和我联系咯

https://t.me/paulu_bot


下面就进入正题开始搭Telegram Bot,至于为啥不选QQ/微信的机器人呢?

因为Telegram Bot的创建非常简单,Bot的API非常全面,并且完全免费
QQ/微信的机器人用起来限制太多啦...


前期准备:

  1. telegram账号
  2. 谷歌账号
  3. 一丢丢的编程基础
  4. 酸酸乳或其它魔法小道具(大陆)

搭建步骤:

  • 登录Telegram,并找到@BotFather
    我们使用/new bot指令 ,并按照指示为你的Bot取个昵称以及用户名(Bot的用户名必需以bot结尾)
    然后你就创建好了你的第一个Telegram Bot!恭喜,是不是特别简单?
    此时BotFather会给你一个非常非常重要的东西——Bot token,注意千万要保管好它哦!
就是红色的那串东西,格式为数字:xxx
  • OK,我们有了Bot和操作它使用的token之后能做些什么了呢?
https://core.telegram.org/bots/api

↑来,点进去,然后你就能看见密密麻麻Telegram官方发布支持其Bot的所有API
别慌!我们需要用的方法只有一点点,别急着关文章,我们继续往下操作...

其实这时我们的Bot已经可以取得用户发的讯息了,我们先向Bot随便发点什么东西(当然此时它还不会回复),然后在浏览器中输入:
https://api.telegram.org/bot(token)/getUpdates
(token)请换成上面或取的token
你就能看见自己和Bot的对话记录,例如:

{
  ok: true,
  result: [
    {
      update_id: xxx,
      message: {
        message_id: 2,
        from: {
          id: xxx,
          is_bot: false,
          first_name: "xxx",
          username: "xxx",
          language_code: "zh-hans"
        },
        chat: {
          id: xxx,
          first_name: "xxx",
          username: "xxx",
          type: "private"
        },
        date: xxx,
        text: "Hello"
      }
    }
  ]
}

这种方法虽然可以或取讯息,但是要做到Bot随时使用,频繁调用getUpdates方法会非常浪费资源。因此我们使用另一种方法设置Webhook,即向 Telegram 设定一组 callback url,只要有用户向你的Bot发送讯息,Telegram 就会把用户讯息连同元数据 传送到你设定的 url 。

  • 这时就轮到咱们的谷歌账号派上用场啦,Telegram要求callback url所在的服务器必需要有SSL证书,而我们目前并没有也没打算去搭建服务器。所以...

    打开浏览器,输入http://script.google.com新建脚本

    我们直接使用gs开发就可以啦,谷歌的服务器自然是有SSL证书的。

    function doPost(e){

            var dataFromTelegram = {
                "method": "post",
                "payload": e.postData.contents
            }
            var body = JSON.parse(e.postData.contents);
            body.message.chat.id = body.message.chat.id + '';
            var payload = preparePayload(body);
            var data = {
                "method": "post",
                "payload": payload
            }
            var dataParam = {
                "method": "post",
                "payload": payload
            }
            UrlFetchApp.fetch("https://api.telegram.org/botYour_bot_code/", data);
        }
        function preparePayload(body){
            var payload;
            if (body.message.text){
                payload = {
                    "method": "sendMessage",
                    "chat_id": body.message.chat.id,
                    "text": body.message.text,
                }
            }
            else if (body.message.sticker){
                payload = {
                    "method": "sendSticker",
                    "chat_id": body.message.chat.id,
                    "sticker": body.message.sticker.file_id
                }
            }
            else if (body.message.photo){
                array = body.message.photo;
                text = array[1];
                payload = {
                    "method": "sendPhoto",
                    "chat_id": body.message.chat.id,
                    "photo": text.file_id
                }
            }
            else {
                payload = {
                    "method": "sendMessage",
                    "chat_id": body.message.chat.id,
                    "text": "Try other stuff"
                }
            }
            return payload
        }


    我们把代码复制到上面新建的脚本当中,保存并点击左上角的发布-部署为网络应用,把权限改为任何人甚至匿名,确定。

    你就得到了具有SSL凭证的callback url啦!


    • 最后一步:set Webhook

      打开浏览器,把上面或取的token和callback url放到下边网址对应的位置
      https://api.telegram.org/bot(token)/setwebhook?url=callback url

      随后浏览器便会返回
    {"ok":true,"result":true,"description":"Webhook was set"}

    恭喜!Bot搭建完成。
    再次打开Bot的聊天界面,你会发现它已经会鹦鹉学舌啦!

    标签: none

添加新留言