开发环境
这里使用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
评论区