Класс Bot:
public class Bot extends TelegramLongPollingBot {
private long chatId;
Document document;
Parser parser = new Parser();
public void onUpdateReceived(Update update) {
update.getUpdateId();
chatId = update.getMessage().getChatId();
Message msg = update.getMessage();
if (msg != null && msg.hasText()) {
//if(msg.getText().equals("/start")) {
SendMessage sendMessage = new SendMessage().setChatId(chatId);
try {
sendMessage.setText(parser.ParseText(msg.getText()));
execute(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
SendPhoto sendPhoto = new SendPhoto().setChatId(chatId);
try {
sendPhoto.setPhoto(parser.ParseImg(msg.getText()));
execute(sendPhoto);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
}
public String getBotUsername() {
return "@ParseSteamBot";
}
@Override
public String getBotToken() {
return "...";
}
}
Класс Parser:
public File ParseImg(String href) {
File file;
try {
document = Jsoup.connect(href).get();
Elements img = document.getElementsByClass("game_header_image_full");
try(InputStream in = new URL(img.attr("src")).openStream()){
Files.copy(in, Paths.get("C\\images\\"));
return new File("C\\images\\");
}
catch(IOException e){
e.printStackTrace();
}
}
catch(IOException e){
System.out.println("Image not found...");
e.printStackTrace();
}
return null;
}
Ошибки возникают в строках с блоком try...catch
.java.nio.file.NoSuchFileException: C\images
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:230)
at java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:434)
at java.nio.file.Files.newOutputStream(Files.java:216)
at java.nio.file.Files.copy(Files.java:3016)
at Parser.ParseImg(Parser.java:60)
at Bot.onUpdateReceived(Bot.java:36)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at org.telegram.telegrambots.meta.generics.LongPollingBot.onUpdatesReceived(LongPollingBot.java:27)
at org.telegram.telegrambots.updatesreceivers.DefaultBotSession$HandlerThread.run(DefaultBotSession.java:306)
мая 06, 2019 6:55:59 PM org.telegram.telegrambots.meta.logging.BotLogger severe
SEVERE: BOTSESSION
java.lang.NullPointerException: file cannot be null!
at java.util.Objects.requireNonNull(Objects.java:228)
at org.telegram.telegrambots.meta.api.methods.send.SendPhoto.setPhoto(SendPhoto.java:111)
at Bot.onUpdateReceived(Bot.java:36)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at org.telegram.telegrambots.meta.generics.LongPollingBot.onUpdatesReceived(LongPollingBot.java:27)
at org.telegram.telegrambots.updatesreceivers.DefaultBotSession$HandlerThread.run(DefaultBotSession.java:306)
Хотя при первом же запуске код сработал и загрузил одну картинку. Думаю, это блокировки со стороны сервера из-за частых запросов
Может дело в двоеточии: "C:\images\my_picture.png". А вообще в Java вне зависимости от ОС можно так: "C:/images/my_picture.png". Используйте библиотеку Commons IO, а не эту фигню с JDK. – Sadrutdin Zaynukov
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Добрый день подскажите как работать с 2 таблицами? и когда нужно открывать и закрывать базу данныхНашел пример в интернете сделал как нужно...
Как рисовать на такой конструкции без заголовка и рамки