我正在构建我的第一个电报机器人。它每5秒钟向用户发送一条消息。
虽然将其发送给一个用户,但无法从其他聊天中接收更新。
public void foo(msg, Update update){
msg.setChatId(update.getMessage().getChatId());
for (int i = 1; i < links.size(); i++){
msg.setText(links.get(i));
execute(msg);
}
Thread.sleep(wait * 1000);
}
如何使用线程?我尝试在这里创建多个线程
public static void bot(){
ApiContextInitializer.init();
TelegramBotsApi telegramBotsApi = new TelegramBotsApi();
try {
telegramBotsApi.registerBot(new myBot());
} catch (TelegramApiException e) {
e.printStackTrace();
}
但是他尝试创建多个机器人并失败了。如果这是可运行的函数,则相同:
我该怎么办?我被卡住了我无法在其他线程中创建此功能
public void onUpdateReceived(Update update) {
leggi(new SendMessage(), update.getMessage().getText(), update);
//.setChatId(update.getMessage().getChatId())
public void leggi(SendMessage msg, String command, Update update){
if(command.equals("test") {
foo( msg, update);
}
这里是完整代码... https://github.com/siamoInPochi/Ilsottomarinobot/tree/prova/src/main/java/Ilsottomarinobot
答案 0 :(得分:0)
如果为要接收消息的每个bot用户生成线程,则在用户数量众多的情况下,您将很快失去计算机资源。因此,我认为线程不是完成任务的好主意。
在我看来,更自然的方法是:
GetUpdates
切换到Webhook。 send-message-to-user-every-5-seconds
任务安排到服务器的事件循环中。 答案 1 :(得分:0)
您可以使用此库https://github.com/pengrad/java-telegram-bot-api
<dependency>
<groupId>com.github.pengrad</groupId>
<artifactId>java-telegram-bot-api</artifactId>
<version>4.2.0</version>
</dependency>
bot.setUpdatesListener
订阅新更新bot.execute(new SendMessage(chatId, link), callback)
发送消息完整的示例:
static String[] links = {"1", "2", "3"};
static Callback emptyCallback = new Callback() {
@Override
public void onResponse(BaseRequest request, BaseResponse response) {
}
@Override
public void onFailure(BaseRequest request, IOException e) {
e.printStackTrace();
}
};
static void foo(TelegramBot bot, Update update) {
Message message = update.message();
if (message == null) return;
Long chatId = message.chat().id();
for (String link : links) {
bot.execute(new SendMessage(chatId, link), emptyCallback);
}
}
public static void main(String[] args) {
TelegramBot bot = new TelegramBot(TOKEN);
bot.setUpdatesListener(updates -> {
for (Update update : updates) {
foo(bot, update);
}
return UpdatesListener.CONFIRMED_UPDATES_ALL;
});
}