当前位置: 首页 > news >正文

java集成telegram机器人

java集成telegram机器人

最近项目需要集成telegram机器人,来实现消息推送功能,以此记录下。

1.创建telegram账号

没有账号的可以去某宝上买一个,千万不要用自己的手机号+86去注册,你懂得。

2. 打开@BotFather对话创建机器人获取token

在搜索框里的输入@BotFather后进入对话框会看到如下界面

在这里插入图片描述

然后发送/start开始对话

在这里插入图片描述

发送/newbot创建机器人

在这里插入图片描述

发送机器人的name和 username,其中username有要求,需要以xxx_bot命名

在这里插入图片描述

以下就拿到机器人对应的token,后面我们将通过token给机器人发送消息,token不需要泄露出去了。

在这里插入图片描述

3.获取chatId会话ID

telegram中每个用户、群组、频道都是一个会话,会话ID就是chatId,通过会话ID和token就可以给机器人发送消息了。
通过搜索@getidsbot用户然后发送/start获取会话id

在这里插入图片描述

在这里插入图片描述

当然目前获取的为当前用户的会话ID,如果需要将消息通知到群里面,操作也是一样的,我们只需要将机器人和@getidsbot都拉进群里进行,这样拿到群的会话id。

4.发送请求

telegram官方有对应的api点击查看,将下方token、chatId、message替换即可。

https://api.telegram.org/bot${token}/sendMessage?chat_id=[chatId]&text=${message}

或者直接通过浏览器访问,用于测试

{"ok": true,"result": {"message_id": 9,"from": {"id": 7662234082,"is_bot": true,"first_name": "test01","username": "pitiless223_bot"},"chat": {"id": -4614960807,"title": "z & test01","type": "group","all_members_are_administrators": true,"accepted_gift_types": {"unlimited_gifts": false,"limited_gifts": false,"unique_gifts": false,"premium_subscription": false}},"date": 1746695605,"text": "hello"}
}

5.java代码实现

github上直接有集成好了的插件java-telegram-bot-api

配置maven依赖

<dependency><groupId>com.github.pengrad</groupId><artifactId>java-telegram-bot-api</artifactId><version>8.3.0</version>
</dependency>

以下是我封装好的serve

package com.ruoyi.system.service.impl;import com.pengrad.telegrambot.TelegramBot;
import com.pengrad.telegrambot.UpdatesListener;
import com.pengrad.telegrambot.model.Update;
import com.pengrad.telegrambot.request.SendMessage;
import com.pengrad.telegrambot.request.SendPhoto;
import com.pengrad.telegrambot.response.SendResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import javax.annotation.PostConstruct;
import java.util.List;@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class TelegramBotServiceImpl implements UpdatesListener {/*** token*/@Value("${custom.telegram_bot.token}")private String telegramBotToken;/*** bot*/private TelegramBot bot;@Overridepublic int process(List<Update> updates) {updates.forEach(update -> {log.info("机器人收到消息 -> {}", update);});return UpdatesListener.CONFIRMED_UPDATES_ALL;}@PostConstructpublic void run() {// Create your bot passing the token received from @BotFatherthis.bot = new TelegramBot(this.telegramBotToken);// Register for updatesthis.bot.setUpdatesListener(this);}/*** 发送消息** @param type   消息类型* @param chatId 会话ID* @param text   消息内容*/public void sendMessage(Byte type, long chatId, String text) {SendResponse response;if (type == 1) {// 图片response = bot.execute(new SendPhoto(chatId, text));} else {// 文本response = bot.execute(new SendMessage(chatId, text));}log.info("发送消息 -> {}", response);}public void close() {this.bot.removeGetUpdatesListener();}}

使用时直接调用即可

TelegramBotServiceImpl.sendMessage(Byte.valueOf("2"), 6576654010L, "请求测试")

在这里插入图片描述


文章转载自:

http://ShQl7JDf.nqbkb.cn
http://m6qfggRF.nqbkb.cn
http://vpzSdrXt.nqbkb.cn
http://fzpDdO8w.nqbkb.cn
http://6wU2j8B4.nqbkb.cn
http://Vr2RZXPh.nqbkb.cn
http://OptrPI4h.nqbkb.cn
http://igQRvFkj.nqbkb.cn
http://NhpL15eM.nqbkb.cn
http://HXu4fd2J.nqbkb.cn
http://QrSeYtxn.nqbkb.cn
http://RhYi8jRt.nqbkb.cn
http://tZYKbBOX.nqbkb.cn
http://cXKZ9DGq.nqbkb.cn
http://zFqMggVQ.nqbkb.cn
http://88OW1yZq.nqbkb.cn
http://O3m4vVm5.nqbkb.cn
http://zn3p0gHA.nqbkb.cn
http://QcnxMzam.nqbkb.cn
http://rICheFnr.nqbkb.cn
http://yLrmlNZ9.nqbkb.cn
http://Z0HoahbL.nqbkb.cn
http://KwJgt7be.nqbkb.cn
http://S9WlqeHQ.nqbkb.cn
http://FuXYAxfb.nqbkb.cn
http://ZaSmRj2p.nqbkb.cn
http://puIBsHke.nqbkb.cn
http://GEQvfvRf.nqbkb.cn
http://T9rdEXAS.nqbkb.cn
http://0QGFeiZ3.nqbkb.cn
http://www.dtcms.com/a/177778.html

相关文章:

  • 软件设计师教程——第一章 计算机系统知识(上)
  • python 上海新闻爬虫
  • vue-grid-layout实现拖拽修改工作台布局
  • Qt/C++开发监控GB28181系统/警情订阅/目录订阅/报警事件上报/通道上下线
  • <template>标签的用法
  • 基于Kubernetes的Apache Pulsar云原生架构解析与集群部署指南(下)
  • FastExcel 本地开发和Linux上上传Resource文件的差异性
  • kotlin JvmName注解的作用和用途
  • 游戏引擎学习第264天:将按钮添加到分析器
  • VTK|.obj文件数据处理+Jet/Viridis/CoolToWarm/Grayscale/Rainbow/风格颜色渲染
  • 如何使用极狐GitLab 软件包仓库功能托管 helm chart?
  • 实践005-Gitlab CICD全项目整合
  • Java并发编程几个问题的解答
  • 在登录页面上添加验证码
  • 超详细!RxSwift 中的 BehaviorRelay 使用教程(含原理 + 示例 + 实战)
  • NetSuite 如何得到所有Item最近一次采购订单的货品单价?
  • 不再踩坑!React.memo正确用法及性能优化实战
  • AI时代企业应用系统架构的新思路与CIO变革指南
  • 21、魔法传送阵——React 19 文件上传优化
  • 轻量级证件照制作 AI 工具 HivisionIDPhotos 介绍
  • 单片机自动排列上料控制程序 下
  • DSP28335 串口中断收发及FIFO使用
  • 剖析 FFmpeg:从基本功能到过滤器,实现音视频处理的灵活性
  • 国内云内网接入方案
  • JAVA房屋租售管理系统房屋出租出售平台房屋销售房屋租赁房屋交易信息管理源码
  • linux中的常用命令(一)
  • 运维打铁:服务器分类及PHP入门
  • ElasticSearch基本概念
  • 手撕基于AMQP协议的简易消息队列-8(单元测试的编写)
  • 【即插即用涨点模块】DSConv动态蛇形卷积:自适应聚焦细长弯曲的局部结构特征,助力分割高效提点【附源码+注释】