当前位置:网站首页 > Java教程 > 正文

java聊天机器人教程



  1. 打开Telegram,添加BotFather发送/newbot创建tg bot机器人
  2. 获取tg bot的token,后续通过接口操作机器人都需要用到该token
  3. 选择通讯方式,长轮询或手动绑定webhook,是接收 tg bot 发送消息的两种方式

t:访问Telegram各类文档或者接收消息发送消息都需要魔法,或者你的服务或者网络就是外网。

一:创建自己的 Telegram bot

向BotFather发送/newbot创建机器人,输入两次名称,第一次是用户名称呼,第二次是@后面的名字,后续需要使用到代码中的也是第二次输入的名称。
tg-bot创建
在这里插入图片描述
创建成功机器人后,可在BotFather输入/mybots查看或管理你的所有机器人。
下面的图片命令基本都是见名知意了
设置你的机器人
在上述图片位置 Edit commads 可以实现机器人的命令提示符
设置机器人的命令提示符

二:获取到Token后可以直接通过接口操作你的机器人

发送接口请求到telegram服务器
官方接口文档: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发送即可。
发送http请求发送消息
我们发送消息是根据chat_id来进行查找聊天框的,无论是私聊或者群聊,每个聊天框都有属于自己的chat_id,所以在第一次接收到用户发来的/start或者别的消息时,尽量将chat_id保留下来,这样后面可以通过chat_id来向用户发送消息。

发送消息请求方法

 

请求实体类

 

一些建议

  1. 真实场景业务需求开发尽量使用webhook,消耗资源低,不需要循环请求telegram服务器浪费资源,也不需要依赖三方jar包,尽量一步到位。
  2. 测试环境在国内则需要配置代理服务器做转发才能向telegram发送消息。
  3. 发送信息内容不允许出现非html关键字的信息,否则将接收不到消息
  4. 在国内查询Telegram Bo文档资源会受限,不清楚是我搜方式不对还是什么,部分难缠问题需要翻墙在google进行查阅。
  5. 群聊与私聊的区别,在于chat中的type:private是私聊,group为群聊。
  6. 群聊只能识别以/开头的命令,因为默认机器人的权限不够,在群聊中只能识别到/xx这种命令,可以在群聊中给机器人设置管理员admin权限,bot就可以收到所有的消息,私聊则是能识别到用户发的任何信息。
    上面是长轮询方式获取到的Update消息对象

Telegram Bot 功能比较强大,目前只使用到了部分功能,如果后续用到别的功能或者遇到有趣的问题也会持续更新。
以上为个人总结,有错误的地方大家可以沟通指正,有什么问题可以留言沟通,Over。

版权声明


相关文章:

  • java基础免费教程视频教程2025-03-10 22:10:00
  • java频谱图教程2025-03-10 22:10:00
  • cmpp java 视频教程2025-03-10 22:10:00
  • 少儿java教程书籍2025-03-10 22:10:00
  • java985教程2025-03-10 22:10:00
  • java 坦克大战教程2025-03-10 22:10:00
  • java飞机教程2025-03-10 22:10:00
  • java c s教程2025-03-10 22:10:00
  • java核心教程目录2025-03-10 22:10:00
  • rabbitmq教程java2025-03-10 22:10:00