添加maven依赖
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>4.1</version>
</dependency>
获取TOKEN 和 USERNAME
在telegram 查找 @botfather 点击 start 进入
输入 /newbot 按提示输入name,username创建机器人
记录下token和username
Telegram API的所有查询都必须通过HTTPS提供,并且需要以这种形式呈现:
https://api.telegram.org/bot+TOKEN/METHOD_NAME
例:
https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/getMe
核心代码
telegram bot 接受信息有2种实现方式
Long Polling Bot 长轮询的方式,每隔一段时间主动请求telegram
webhook 方式,telegram 主动下发
这里我们使用第一种方式 继承 TelegramLongPollingBot
public class MyBot extends TelegramLongPollingBot {
@Override
public String getBotUsername() {
// 填写username
return "xxx";
}
@Override
public String getBotToken() {
// 填写token
return "xxx";
}
@Override
public void onUpdateReceived(Update update) {
if (update.hasMessage() && update.getMessage().hasText()) {
SendMessage message = new SendMessage()
.setChatId(update.getMessage().getChatId())
.setText("回复的内容");
try {
execute(message);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
}
注册机器人
启动main方法机器人就可以工作啦
public class Main {
public static void main(String[] args) {
// 初始化Api上下文
ApiContextInitializer.init();
// 实例化Telegram Bots API
TelegramBotsApi botsApi = new TelegramBotsApi();
try {
// 注册我们的机器人
botsApi.registerBot(new MyBot());
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
}
其他
还有好多方法比如发送照片,音乐,设置内联button,获取group成员(首先要在@botfather处设置/setjoingroups为enable,然后把机器人拉进对应的组)等
请参考 Telegram Bot API
这里以获取group成员为例
// 获取group内成员
private void getChatMember() throws TelegramApiException {
DefaultAbsSender sender = new DefaultAbsSender(new DefaultBotOptions()) {
@Override
public String getBotToken() {
return "xxx";
}
};
GetChatMember getChatMember = new GetChatMember();
getChatMember.setChatId("xxx").setUserId(123);
ChatMember chatMember = sender.execute(getChatMember);
}