depy

It is a long and beautiful life.

搭建TG机器人小记

体验

前言

应seven7要求,给团队做个bot。

过程及代码

因为设计过qqbot和dingdingbot,对这种回调都很熟悉了。

  1. 设置回调webhook地址

很容易理解,也就是给机器人设置一个接口。当机器人获取信息的时候,会伴随信息、发送者信息一同给这个地址进行postjson的操作。

tgbot的设置方法:

https://api.telegram.org/你的token/setwebhook?url=https://www.baidu.com

这里有个坑,通过电报机器人botfather那里建立机器人后会获取一个token,通过上面的地址设置bot接口。但是一直是false。

后来发现你的token必须最前面加个bot

60572807d5669.png

这样的话发送给bot消息,接口地址就会回调了。我这里用的语言是php,其他语言自己研究。

首先通过代码:

<?php
$content = file_get_contents("php://input");
file_put_contents('1.txt',$content);

看一下数据结构

{
    "update_id":890659599,
    "message":{
        "message_id":247,  //消息id
        "from":{
            "id":1468322965,
            "is_bot":false,  
            "first_name":"depy",
            "last_name":"depy",
            "language_code":"zh-hans"
        },
        "chat":{
            "id":1468322965, //发送人id
            "first_name":"depy",  
            "last_name":"depy",
            "type":"private"  //代表私人聊天,也可以群组机器人
        },
        "date":1616324763, //发送时间戳
        "text":"你好呀"  //发送内容
    }
}

这样就很简单了,没有很难理解的地方。

<?php
$content = file_get_contents("php://input");
file_put_contents('1.txt',$content);
$update = json_decode($content, true);   //json解码
$chatID = $update["message"]["chat"]["id"]; //获取到发送人id  等下bot主动发消息需要用到
$text = $update["message"]["text"];  //发送的消息,根据这个消息进行判断

成品

<?php 
define('BOT_TOKEN', '你的token');
define('API_URL', ' 
$content = file_get_contents("php://input");
//file_put_contents('1.txt',$content);
$update = json_decode($content, true);
$chatID = $update["message"]["chat"]["id"];
$got_message = $update["message"]["text"];
if($got_message == "你好"){
    $res = "你也好";
}else{
    $res = "我只会说你也好";
}
$sendto =API_URL."sendmessage?chat_id=".$chatID."&text=".urlencode($res);
file_get_contents($sendto);

很简单,其他的业务就是根据message自由发挥。

你愿意的话接入数据库也可以,做各种奇妙的事情也可以,甚至对接api做漏洞扫描器,甚至智能门锁开门都可以的。

就是记录下,怕之后忘记了。

注意

一定有朋友不知道怎么换行。

在语句里使用\n代表换行。但是不能直接进入接口,需要用urlencode转换,不然会体现一个下划线。

截图

60572b75eb46c.png