Zephyrnet-logo

Telegram-berichten gemakkelijker verzenden met Telegram Bot

Datum:

In deze stappen kunnen we onze groep wijzigen als openbaar of privé, terwijl we de groepsnaam moeten wijzigen, dit wordt beschouwd als chat_id bij de rest API-aanroep. Voor mijn groep houd ik het als een openbare groep, je kunt ook privé geven. Mijn groepsnaam is MinoTest1 (Chat_id). Hetzelfde zal ook in Channel worden toegepast.

Voor zover we het configuratiegedeelte hebben gedaan. Bovendien moeten we een aangepaste API maken om te gebruiken in onze springboot-applicatie. Maar voor nu kunnen we het bericht zien verzenden met onze browser of postbode. Ik zal het je laten zien in de postbode.

Postbode-demo 1

In dit verzoek moet u uw token toevoegen dat volgt van bot

bot-API maken

Gebruik deze krul (token, chat_id aangepast)

curl --location --request POST 'https://api.telegram.org/bot5532040960:AAEs1234AAl8T45Nm1234i59NwwEy6V-viM/[e-mail beveiligd]&text=testbericht' --form '[e-mail beveiligd]"/home/mino/Afbeeldingen/Screenshot van 2022-06-10 17-53-58.png"'

Aangepaste Spring-boot-API

Deze stap is optioneel, maar als we berichten naar meerdere groepen of kanalen moeten sturen, is het handig. Kan deze configuratie dus weglaten.

Maak zoals gewoonlijk uw spring-boot-project. Maak vervolgens TelegramController, TelegramService en TelegramClient aan. Ik stopte met de uitleg van de Spring-boot-applicatie. Ik zal alleen de belangrijke codes delen. De verstrekte inloggegevens zijn gewijzigd.

Telegram-controller

pakket com.sample.telegramservice.controller; importeer com.sample.telegramservice.service.TelegramService; import org.springframework.beans.factory.annotation.Autowired; importeer org.springframework.web.bind.annotation.*; org.springframework.web.multipart.MultipartFile importeren; @RestController @RequestMapping("/telegram") openbare klasse TelegramController { @Autowired TelegramService telegramService; @PostMapping("/sendPhoto") public void sendPhotoToTelegramGroup(String caption, String photo) gooit Exception {telegramService.sendPhotoToTelegramGroup(caption, photo); } @PostMapping("/sendPhoto/file") public void sendPhotoFileToTelegramGroup(@RequestParam("caption") String caption, @RequestPart("photo") MultipartFile photo) gooit Exception { telegramService.sendPhotoFileToTelegramGroup(caption, photo); } @PostMapping("/sendMessage") public void sendMessageToTelegramGroup(@RequestParam("message") String message) gooit Exception { telegramService.sendMessageToTelegramGroup(message); } }

Telegram-service

pakket com.voorbeeld.telegramservice.service; importeer com.sample.telegramservice.client.TelegramClient; import org.springframework.beans.factory.annotation.Autowired; importeer org.springframework.stereotype.Service; org.springframework.web.multipart.MultipartFile importeren; java.util.ArrayList importeren; java.util.Lijst importeren; @Service openbare klasse TelegramService { @Autowired TelegramClient telegramClient; public void sendPhotoToTelegramGroup(String caption, String photo) gooit Exception { List chatIdList = new ArrayList(); chatIdList.add("@MinoTest1"); chatIdList.add("@minoTestChannel"); for(String chatId: chatIdList){ telegramClient.sendPhoto(chatId,caption, photo); } } public void sendPhotoFileToTelegramGroup(String caption, MultipartFile photo) throws Exception { List chatIdList = new ArrayList(); chatIdList.add("@MinoTest1"); chatIdList.add("@minoTestChannel"); for(String chatId: chatIdList){ telegramClient.sendPhotoFile(chatId,caption, photo); } } public void sendMessageToTelegramGroup(String message) throws Exception { List chatIdList = new ArrayList(); chatIdList.add("@MinoTest1"); chatIdList.add("@minoTestChannel"); for(String chatId: chatIdList){ telegramClient.sendMessage(bericht, chatId); } } }

TelegramClient

pakket com.voorbeeld.telegramservice.client; org.slf4j.Logger importeren; org.slf4j.LoggerFactory importeren; import org.springframework.beans.factory.annotation.Autowired; org.springframework.core.io.ByteArrayResource importeren; org.springframework.http.* importeren; importeer org.springframework.stereotype.Service; org.springframework.util.LinkedMultiValueMap importeren; org.springframework.util.MultiValueMap importeren; org.springframework.web.client.HttpClientErrorException importeren; org.springframework.web.client.HttpServerErrorException importeren; org.springframework.web.client.RestTemplate importeren; org.springframework.web.multipart.MultipartFile importeren; org.springframework.web.util.UriComponentsBuilder importeren; @Service openbare klasse TelegramClient {private String-token = "5123456960:AAEs0C6f12345ABcdeFSCki52Mwery6V-viM"; private String telegramBaseUrl = "https://api.telegram.org/bot"; private String apiUrl = telegramBaseUrl+token; privé finale RestTemplate restTemplate; privé statische laatste logger houthakker = Loggerfabriek.haalLogger(GoogleRecaptchaClient.class); @Autowired openbare TelegramClient(RestTemplate restTemplate) { this.restTemplate = restTemplate; } public void sendMessage(String message, String chatID) gooit Exception { probeer { RestTemplate restTemplate = new RestTemplate(); UriComponentsBuilder-bouwer = UriComponentsBuilder.vanHttpUrl(apiUrl+"/sendMessage") .queryParam("chat_id", chatID) .queryParam("tekst", bericht); ResponseEntity exchange = restTemplate.exchange(builder.toUriString().replaceAll("%20", " "), HttpMethod.GET, null, String.klasse); } vangen (HttpClientErrorException | HttpServerErrorException e) {
        houthakker.error("Foutreactie: Staatscode: {}, reactie: {} ", e.getStatusCode(), e.getResponseBodyAsString()); gooi e; } vangst (uitzonderingsfout) {
        houthakker.fout("Fout: {} ", fout.getMessage()); throw new Exception ("Deze service is momenteel niet beschikbaar!"); } } public void sendPhotoFile(String chatID, String caption, MultipartFile photo) gooit Exception { try { RestTemplate restTemplate = new RestTemplate(); HttpHeaders-headers = nieuwe HttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); MultiValueMap body = nieuwe LinkedMultiValueMap(); ByteArrayResource fileAsResource = new ByteArrayResource(photo.getBytes()){ @Override public String getFilename(){ return photo.getOriginalFilename(); } }; body.add("Inhoudstype", "image/png"); body.add("foto", fileAsResource); HttpEntiteit requestEntity = nieuwe HttpEntity(body, headers); UriComponentsBuilder-bouwer = UriComponentsBuilder.vanHttpUrl(apiUrl+"/sendPhoto") .queryParam("chat_id", chatID) .queryParam("onderschrift", onderschrift); Systeem.uit.println(verzoekEntiteit); String exchange = restTemplate.postForObject(builder.toUriString().replaceAll("%20", " "), requestEntity, String.class); } vangen (HttpClientErrorException | HttpServerErrorException e) {
        houthakker.error("Foutreactie: Staatscode: {}, reactie: {} ", e.getStatusCode(), e.getResponseBodyAsString()); gooi e; } vangst (uitzonderingsfout) {
        houthakker.fout("Fout: {} ", fout.getMessage()); throw new Exception ("Deze service is momenteel niet beschikbaar!"); } } public void sendPhoto(String chatID, String caption, String photo) gooit Exception { probeer { RestTemplate restTemplate = new RestTemplate(); UriComponentsBuilder-bouwer = UriComponentsBuilder.vanHttpUrl(apiUrl+"/sendPhoto") .queryParam("chat_id", chatID) .queryParam("foto", foto) .queryParam("bijschrift", bijschrift); String exchange = restTemplate.postForObject(builder.toUriString().replaceAll("%20", " "), null, String.class); } vangen (HttpClientErrorException | HttpServerErrorException e) {
            houthakker.error("Foutreactie: Staatscode: {}, reactie: {} ", e.getStatusCode(), e.getResponseBodyAsString()); gooi e; } vangst (uitzonderingsfout) {
            houthakker.fout("Fout: {} ", fout.getMessage()); throw new Exception ("Deze service is momenteel niet beschikbaar!"); } } }
spot_img

Laatste intelligentie

spot_img