У меня есть работающее приложение с базой данных. У меня есть API отдыха, к которому я подключаюсь и получаю данные или редактирую. Я создал бот-телеграмму, но он может отвечать только на сообщения.
@Component
public class Bot extends TelegramLongPollingBot {
Logger logger = LoggerFactory.getLogger(Bot.class);
private static String ERR_MESS_SEND = "Failed to send a message: ";
private static String ERR_MESS_SEND_USER ="Failed to send a message form method sendTextMessaged(): ";
@Value("${bot.username}")
String botUsername;
@Value("${bot.token}")
String botToken;
final private GreetingSendService greetingSendService;
private ManageCommands manageCommands;
private ButtonService buttonService;
@Autowired
public Bot(GreetingSendService greetingSendService,
ManageCommands manageCommands,
ButtonService buttonService) {
this.greetingSendService = greetingSendService;
this.manageCommands = manageCommands;
this.buttonService = buttonService;
}
/**
* For receiving messages.
* the method is processing messages that was received.
* isValidMessage - the check : is a message and is it a text?
* inMessage - is getting an object of input message
* outMessage - is making an object of output message
* outMessage.setChatId(chatIdFromInMess) - Set the chat ID, where you want
* to send a message-this is the chat, where this message came from
*
* @param update - It is a message from user.
*/
@Override
public void onUpdateReceived(Update update) {
// parseReceivedMessage(update);
sendMess(update);
}
..............
Здесь вы можете передавать слова, но только без пробелов. в ответ я получаю JSON. Этого недостаточно.
/*Here is obtained the stream data that was gotten from rest-api*/
private String obtainStreamDataFromResponse(String message){
// URL url = new URL("http://api.openweathermap.org/data/2.5/weather?q=" + message + "&units=metric&appid=6fff53a641b9b9a799cfd6b079f5cd4e");
URL url = null;
try {
url = new URL("http://localhost:8080/api/city/" + message);
} catch (MalformedURLException e) {
logger.info(ERR_GET_API, e);
}
Scanner in = null;
try {
in = new Scanner((InputStream) url.getContent());
} catch (IOException e) {
logger.info( ERR_PARSE_RESPONSE, e);
}
StringBuilder result = new StringBuilder();
while (in.hasNext()) {
result.append(in.nextLine());
}
return result.toString();
}
вот остальные api
@GetMapping("name/{town:[A-Za-z-.]+]}")
public NameDto getDataAboutName(@PathVariable String name) {
return targetReadService.readEntry(name);
}
@PostMapping("create")
public ResponseEntity<Object> create(@RequestBody NameDto dto) {
this.createTargetService.createEntry(dto);
return ResponseEntity.ok(HttpStatus.OK);
}
И как я могу настроить свое приложение так, чтобы оно позволяло боту не только запрашивать данные, но и удалятьи редактировать, подключив к RSET api?