前言
- 什么是Telegram Bot
Telegram Bot
是运行在Telegram
内部的第三方应用程序,相当于Telegram
的一个特殊账户。而且
Bots never eat, sleep or complain unless expressly programmed otherwise 官方吐槽
Telegram Bot
的创建非常简单,只需要@botfather
进行交互,详见下文。Bot的API
非常全面,并且完全免费,不过消息有保存上限,有需要可以连接到SQL数据库
保存。
-
- 文章内容
本文记录使用
PHP
Telegram Bot
创建复读机器人的方法。
更多内容可以查询Telegram Bot API 文档
目录
点击文字快速跳转
准备
Telegram
客户端,下载- 一台服务器(国内需要配置全局代理)
- 一点点
PHP
编程基础- 国内自备梯子
创建你的Bot
- 登录客户端,查找
@BotFather
(官方的机器人管理) - 输入:
/newbot
,回复Bot名称,接着回复Bot用户名 - 创建完成
Telegram Bot
账号,并保存后相关的token
(点击即可复制,格式为xxxxx:xxxxxxxxxxxxx)
用户名是一个简短的名字,提到和
t.me
链接使用。用户名长度为5-32个字符,不区分大小写,但只能包含拉丁字符,数字和下划线。您的机器人的用户名必须以“bot
”结尾,例如“tetris_bot
”或“TetrisBot
”。
如果您无法正确创建Bot可以查看官方文档
- 编辑机器人
下方给出了几条机器人基本操作命令,本文章暂时使用不到,有兴趣的可以尝试一下。
/ setname –更改您的机器人名称。
/ setdescription —更改机器人的描述
/ setabouttext-更改漫游器的about info
/ setuserpic-更改机器人的个人资料图片
/ setcommands-更改您的机器人支持的命令列表
/ deletebot-删除您的机器人并释放其用户名
创建站点并绑定域名
在服务器上开设站点、绑定域名、导入域名的ssl证书
。这里我用的宝塔面板,全程图形界面没有难度,详细操作不做赘述。
服务器具体要求参考官方WebHOOK要求
您将需要一个服务器:
支持IPv4
,Webhooks
当前不支持IPv6
。
接受来自子网149.154.160.0/20
以及91.108.4.0/22
端口443、80、88
或8443
的传入POST
。
能够处理TLS1.2(+)
HTTPS
流量。
提供受支持的,非通配符,已验证或自签名的证书。
使用与您在设置时提供的域匹配的CN
或SAN
。
提供所有中间证书以完成验证链。
设置Webhook模式
Telegram提供了getUpdates
和Webhook
两种交互模式。getUpdates
是拉机制,setWebhook
是推机制。
Webhook模式下官方会将机器人收到的数据处理回传到目标服务器,我们正需要这种。
- 搭建基于Https协议的服务器,并设置
webhoots url
(供Telegram回调的服务器路径),官方提供了四种设置方式,具体可以参考官方建议。最简单的方式如下:
https://api.telegram.org/bot填入你的token/setWebhook?url=https://服务器的回调路径
- 例如:我们将其指向网站根目录的
repeater.php
,所以我们这样写。
https://api.telegram.org/bot填xxxx:xxxxxxxxxxxxx/setWebhook?url=https://www.lawsonofo.top/repeater.php
粘贴到地址栏,根据自己需求修改两个参数,回车访问地址。如果返回数据包含Webhook was set
恭喜你设置成功!现在我们可以处理回传数据了。
编写后台文件
现在telegram已经将数据已json
格式发送到你的服务器repeater.php
中。接下来我们需要对数据进行简单格式化处理,并实现复读功能。
- 首先在网站根目录新建名为
repeater.php
的文件。 - 粘贴并修改以下代码。
<?php
$token = '你的token';
$link = 'https://api.telegram.org/bot'.$token.'';
$data = json_decode(file_get_contents('php://input'), TRUE); //读取json并对其格式化
$chatid = $data['message']['chat']['id'];//获取chatid
$message = "你说的是:".$data['message']['text'];//获取message
$parameter = array(
'chat_id' => $chatid,
'text' => $message,
);//消息整合
file_get_contents($link.'/sendMessage?'.http_build_query($parameter));//发送消息
?>
- 文件保存后我们私聊bot,不出意外现在勤劳的复读机已经开始工作了。
预告:使用TelegramBot制作聊天统计
预测外汇. https://cn.forex-stock-bitcoin-brokers.com
By Forexorgasp at March 24th, 2022 at 03:22 pm.
不错不错,技术活当赏
By lbroot at March 27th, 2020 at 10:46 pm.
@lbroot
By lawson at March 31st, 2020 at 05:19 pm.