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替换即可。

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

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

json 复制代码
{
  "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依赖

xml 复制代码
<dependency>
  <groupId>com.github.pengrad</groupId>
  <artifactId>java-telegram-bot-api</artifactId>
  <version>8.3.0</version>
</dependency>

以下是我封装好的serve

java 复制代码
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;

    @Override
    public int process(List<Update> updates) {
        updates.forEach(update -> {
            log.info("机器人收到消息 -> {}", update);
        });
        return UpdatesListener.CONFIRMED_UPDATES_ALL;
    }

    @PostConstruct
    public void run() {
        // Create your bot passing the token received from @BotFather
        this.bot = new TelegramBot(this.telegramBotToken);
        // Register for updates
        this.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();
    }

}

使用时直接调用即可

java 复制代码
TelegramBotServiceImpl.sendMessage(Byte.valueOf("2"), 6576654010L, "请求测试")
相关推荐
JIAOZHANZHISHIKU10 分钟前
机器人外壳粘接性价比怎么选?3M VHB 胶带与结构胶解决方案
经验分享·机器人·工业胶粘剂·3m胶粘剂
GlobalInfo1 小时前
2026年机器人多指灵巧手市场分析报告——涵盖行业调查、趋势分析与发展前景
大数据·人工智能·microsoft·微服务·机器人
代码山河1 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行2 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
学长毕设2 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
梯度下降者2 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
zzu123zsw3 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
“AI国潮设计-小江”4 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
源码集结号4 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
论文复现现场4 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算