- 打开Telegram,添加BotFather发送/newbot创建tg bot机器人
- 获取tg bot的token,后续通过接口操作机器人都需要用到该token
- 选择通讯方式,长轮询或手动绑定webhook,是接收 tg bot 发送消息的两种方式
t:访问Telegram各类文档或者接收消息发送消息都需要魔法,或者你的服务或者网络就是外网。
一:创建自己的 Telegram bot
向BotFather发送/newbot创建机器人,输入两次名称,第一次是用户名称呼,第二次是@后面的名字,后续需要使用到代码中的也是第二次输入的名称。
创建成功机器人后,可在BotFather输入/mybots查看或管理你的所有机器人。
下面的图片命令基本都是见名知意了
在上述图片位置 Edit commads 可以实现机器人的命令提示符
二:获取到Token后可以直接通过接口操作你的机器人
官方接口文档:Telegram Bot 官方文档
简版文档: Telegram Bot 中文版文档
三:选择部署方式(长轮询和设置webhook)
你的 bot 可以主动拉取信息(长轮询),或者是由 Telegram 服务器主动推送过来(webhook)。
- 长轮询:主动的给 Telegram 服务器发送了一个请求,来询问是否有新的 update。不需要域名不需要配置,添加telegram的jar包,继承TelegramLongPollingBot重写它的onUpdateReceived方法,在项目启动是开启telegram机器监听,即可接收到你的Telegram bot接收到的消息,让机器人主动向聊天框发送消息用内置的execute方法即可。
- webhook:为 Telegram 提供一个可以从公共互联网**问的 URL(需要有域名的接口)。 无论何时,只要有新的信息发送到你的 bot,Telegram服务器将主动把消息内容封装成Update对象请求到你的url地址,发送消息需要使用官方文档的sendMessage方法。
详情比较参考: Telegram Bot长轮询与webhook的区别
长轮询_Demo
<需要魔法>
首先 添加 依赖
在启动类开启telegram机器监听
webhook_Demo
<需要服务器有域名,并且通过代理转发或者服务器就在国外>
只需要写一个接口
然后请求一遍setWebhook这样就将消息推送地址指向了你的接口,可以使用getWebhook查看已绑定的接口地址。
主动向群聊发送信息就用官方文档中的sendMessage发送即可。
我们发送消息是根据chat_id来进行查找聊天框的,无论是私聊或者群聊,每个聊天框都有属于自己的chat_id,所以在第一次接收到用户发来的/start或者别的消息时,尽量将chat_id保留下来,这样后面可以通过chat_id来向用户发送消息。
发送消息请求方法
请求实体类
一些建议
- 真实场景业务需求开发尽量使用webhook,消耗资源低,不需要循环请求telegram服务器浪费资源,也不需要依赖三方jar包,尽量一步到位。
- 测试环境在国内则需要配置代理服务器做转发才能向telegram发送消息。
- 发送信息内容不允许出现非html关键字的信息,否则将接收不到消息
- 在国内查询Telegram Bo文档资源会受限,不清楚是我搜方式不对还是什么,部分难缠问题需要翻墙在google进行查阅。
- 群聊与私聊的区别,在于chat中的type:private是私聊,group为群聊。
- 群聊只能识别以/开头的命令,因为默认机器人的权限不够,在群聊中只能识别到/xx这种命令,可以在群聊中给机器人设置管理员admin权限,bot就可以收到所有的消息,私聊则是能识别到用户发的任何信息。
Telegram Bot 功能比较强大,目前只使用到了部分功能,如果后续用到别的功能或者遇到有趣的问题也会持续更新。
以上为个人总结,有错误的地方大家可以沟通指正,有什么问题可以留言沟通,Over。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/7021.html