Skip to main content

使用PHP Webhook方式打造Telegram Bot

一、找BotFather拿到bot token

    在telegram中私聊BotFather建立自己的bot,给bot取名,名字必须要以bot结尾。建好后自己的bot就有一个唯一的token,类似下面的一串字符

164354723:AAEjT6-IyNoXjt7miD0dwa-P5VmDTtHQC8

二、确认bot响应文件的位置

    在写好bot响应文件后,要把bot放在网络上的一个位置,并且这个位置必须要加密的,即以https开头的一串网址。比如响应文件的名称为telbot.php,把它放在下面这个网址的位置:

https://my.webhost.com/164354723:AAEjT6-IyNoXjt7miD0dwa-P5VmDTtHQC8/telbot.php

上面网址中的红色设置和bot的token一样是为了确定这个唯一的位置,当然也可以任意设置。

三、告诉Telegram响应文件的位置

Telegram用下面网址的形式来设定webhook响应方式

https://api.telegram.org/bot[myauthorization-token]/setwebhook?url=[myboturl]

按照上面的网址形式,把自己创建的bot的token以及响应文件的位置填入,然后在浏览器中运行一下即可设置成功。比如:

https://api.telegram.org/bot164354723:AAEjT6-IyNoXjt7miD0dwa-P5VmDTtHQC8/setwebhook?url=https://my.webhost.com/164354723:AAEjT6-IyNoXjt7miD0dwa-P5VmDTtHQC8/telbot.php

设置成功后,页面会显示下面的内容:

{"ok":true,"result":true,"description":"Webhook is already set"}

四、在Telegram中给自己的bot发消息进行验证


php响应文件例子

<?php 
define('BOT_TOKEN', 'YOURBOT:TOKEN');
define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');
// read incoming info and grab the chatID
$content = file_get_contents("php://input");
$update = json_decode($content, true);
$chatID = $update["message"]["chat"]["id"];
$got_message = $update["message"]["text"];

// compose reply
$reply =  $got_message;
// send reply
$sendto =API_URL."sendmessage?chat_id=".$chatID."&text=".$reply;
file_get_contents($sendto);
?>

上例中$content得到bot传递来的json串,$update为解析json串后得到的数组,再将数组中的有用信息提取出来,即$chatID$got_message。上例中将得到的字符串赋值给$reply,再发送回去。因此上面这个简单的bot就是“回声机器人”了。

当然bot获取和发送的信息不只有字符串一种,更多的功能请参照Telegram Bot API



Comments

  1. Wow, amazing blog layout! How long have you been blogging for? you make blogging look easy. The overall look of your website is fantastic, let alone the content!

    Best 3D animation Company
    Best Chatbot Development Company
    Mobile app development in Coimbatore

    ReplyDelete

  2. hi! May i ask u , If i want to reply message to my bot group,How to setting,pls

    ReplyDelete

Post a Comment

Popular posts from this blog

telegram中的Sci-Hub机器人,又一文献下载利器

或许你看到标题会问什么是telegram,什么是Sci-Hub?请听我一一道来。 什么是Sci-Hub Sci-Hub是一个线上 数据库 ,其上提供48,000,000篇科学学术论文和文章。网站透过“.edu”代理服务器访问相关页面,每天会上传新的论文文章。2011年,哈萨克研究生亚历珊卓·艾尔巴金(Alexandra  Elbakyan)因为研究论文成本过高,每篇论文在付费墙机制下通常需要花费30美元,而决定成立Sci-Hub。2014年,学术界开始预测网站将会发展为类似Napster的服务。不过到了2015年,学术出版社爱思唯尔向纽约地方法院提交诉讼,指控Sci-Hub已经侵犯版权。纽约地方法院在2015年10月28日仍下令Sci-Hub原本使用的网域名称“Sci-Hub.org”必须终止。爱思唯尔在法院上获得胜诉后,一群研究人员、作家和艺术家则连署一封表态支持Sci-Hub和创世纪图书馆的公开信,声称这次诉讼对于世界各地的研究人员是“重大打击”,并指出:“它同样贬低我们、作者、编辑和读者。它寄生于我们的劳动,它阻挠我们为大众服务,它阻拦我们进入。”而该计划于11月因法院命令中止后,在同一个月内便改用网域名称“.io”重新上线,并开放使用Tor浏览。2016年1月时,Sci-Hub平均每天约有200,000人访问,Sci-Hub则声称网站服务每天平均有数十万次档案请求。  Sci-Hub是目前已知第一个提供大量自动且免费的付费学术论文的网站,使用者不需要事前订阅或付款,就能够使用原本存放在付费数据库的论文文章,并提供搜寻原先出版社网站内的文件档案服务。 以上介绍来源于维基百科词条 Sci-Hub Sci-Hub网站被屡次下线,但是又通过更换域名重新上线。以下三个网址经测试可以使用:  http://www.sci-hub.bz/   http://www.sci-hub.ac/   http://www.sci-hub.cc/   广大学者将自己的文章发表至学术期刊(免费或者支付版面费),然而当需要查看其他学者的文章时还需要向出版商付费,你是不是也觉得这完全阻碍了科学文化的传播。艾尔巴金在为自己辩护时援引联合国《世界人权宣言》第二十七条所提的:“人人有权自由参加社会之文化生活,欣赏艺...

Fortran77到Fortran90的注意之处

1. Fortran 77是固定格式,每行前六个字符不写代码。Fortran 90是自由格式,每行前没有限制。 2. Fortran 77每行以C,c或*开始则为注释行。Fortran 90以!引导注释。 3. Fortran 77每行第6列若不是空格和0,则该行为上一行的续行。Fortran 90以&符号作为续行符,标识在上一行的末尾或者待续行的开始。 4. Fortran 77每行第7-72列为代码区。Fortran 90的前132列为代码区。 5. Fortran 77对应的文件扩展名为.for或.f。Fortran 90对应的文件扩展名为.f90。 6. Fortran 77的变量名或程序名最多为6个字符。Fortran 90的变量名或程序名最多为31个字符。 7. 字符串表示中Fortran 77用''表示,Fortran 90既可以用'',也可以用""。 8. 逻辑运算符表示不一样:        ==      /=       >     <     >=     <=         !Fortran 90用法       .EQ.    .NE.     .GT.  .LT.  .GE.   .LE.       !Fortran 77用法 已经有一些开源的程序可以将Fortran 77程序自动转换为Fortran 90,转换程度已相当好。 (1) https://bitbucket.org/lemonlab/f2f/      f2f is a Perl script which does much of the tedious work of converting Fortran 77 source code into Fortran 90/95 form. There seems ...