目 录CONTENT

文章目录

telegram机器人开发介绍

成培培
2025-01-02 / 0 评论 / 0 点赞 / 33 阅读 / 0 字

开发环境

这里使用Java开发,JDK版本为JDK17,当然也可以使用其他语言,比如Python,Java开发的话用到的是这个依赖:

<dependency>
    <groupId>org.telegram</groupId>
    <artifactId>telegrambots</artifactId>
    <version>6.0.1</version>
</dependency>

telegram机器人创建

开发之前我们需要先创建一个机器人,需要找@BotFather去创建,后续配置机器人也需要发送相关指令操作,它本身就是一个机器人。
找到他后给他发送/start指令会得到一些帮助选项,其中/newbot就是创建机器人的选项,发送创建机器人指令后,BotFather会先后回复让你输入机器人的用户名,随便取一个名字,如果没有占用会告诉你创建成功,并且告诉你该机器人的token,后续我们开发会用到。

代理设置

创建一个Maven工程,添加telegram开发的依赖,创建MyFirstBot类作为我的一个测试机器人类,这个类需要继承TelegramLongPollingBot

import org.telegram.telegrambots.bots.DefaultBotOptions;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.TelegramBotsApi;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.api.objects.Update;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
import org.telegram.telegrambots.updatesreceivers.DefaultBotSession;

public class MyFirstBot extends TelegramLongPollingBot {

    public MyFirstBot(DefaultBotOptions options) {
        super(options);
    }

    @Override
    public String getBotUsername() {
        return "xxxx";
    }

    @Override
    public String getBotToken() {
        return "1234567890:XXXXXXXXXXXXXXXXXXXXXX";
    }

    @Override
    public void onUpdateReceived(Update update) {
        System.out.println(update);
        System.out.println(update.getMessage().getText());

        sendText(update.getMessage().getChat().getId(), update.getMessage().getText(), update.getMessage().getMessageId());
    }

    public void sendText(Long who, String what, Integer messageId){
        SendMessage sm = SendMessage.builder()
                .chatId(who.toString())
                .replyToMessageId(messageId)
                .text(what).build();
        try {
            execute(sm);
        } catch (TelegramApiException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) throws TelegramApiException {
        DefaultBotOptions options = new DefaultBotOptions();
        options.setProxyHost("127.0.0.1");
        options.setProxyPort(7890);
        options.setProxyType(DefaultBotOptions.ProxyType.SOCKS5);
        TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class);
        MyFirstBot myFirstBot = new MyFirstBot(options);
        botsApi.registerBot(myFirstBot);
    }
}

因为telegram的服务器并不能直接访问,需要你先设置代理,main方法前几行就是设置本地的一个socks5代理,配置getBotUsername()的返回为你的机器人用户名,getBotToken()的返回为你的token,onUpdateReceived(Update update)是在你的机器人接收到消息时会进入的回调方法

接收发送消息

复写onUpdateReceived(Update update)接收消息,sendText可以给指定的会话回复消息

接收处理指令

可以通过update.getMessage().isCommand()判断当前消息是否是指令,其实只要是/开头的都会判断为指令,可以到BotFather那去配置预设的指令,这样在跟机器人对话时,就会有菜单选项选择方便的发送指令
更多其他开发内容比如导航按钮什么的可以参考官方的文档:https://core.telegram.org/bots/tutorial

0

评论区