Hemmäňize salam! Okuwyňyzyň belli bir döwründe meseleleriň çözülmeginden portfeliňiziň esasyny düzjek hakyky taslamalary döretmäge geçmek isleýärsiňiz. Tejribe geçirip başlanymda (hemmelere maslahat berýärin), erkin işleýän hökmünde telegramma bot ýazmak teklibini aldym. Az bilimim sebäpli, üç sapagy öz içine alýan gaty ýönekeý bot ýazdym ( Bahara göçmezden ozal iň soňky wada ):
Baglylyklary hasaba alýarys - bu ýerde ýokarda agzalan TelegramBots-Bahar-Boot-Starter we Telegram API bolar : TelegramBots-Spring-Boot-Starter kitaphanasynda Bahar Boot we Telegram API bar. Ony ulanmak kodumyzdaky boty gaty ýönekeý görnüşde yglan etmäge mümkinçilik berýär we Baharyň özi noýba döreder we boty işjeňleşdirer. Şu wagt kapotyň aşagynda bolup geçýän zatlar bilen gyzyklanýan bolsaňyz, kitaphananyň çeşmelerine serediň (ösüş gurşawynda ýa-da Github- da ). Şeýle hem, jemleýiş parametrlerini goşýarys: Pom dolduranyňyzdan soň ähli garaşlylygy täzelemegi ýatdan çykarmaň! Iki synp döredeliň - Programma we Bot, şeýle hem çeşmeler bukjasyndaky application.yaml faýly. Taslamamyň gurluşy şeýle görünýär: Bu etapda, botymyzyň şahsyýetnamalaryny application.yaml-a goşalyň:
- habar alýan sapak;
- habar ibermek;
- hadysany meýilleşdiriş sapagy (meýilleşdirilen habarlary barlady we JSON-dan keş keş maglumatlary täzelendi).
bot:
name: JavaRushTelegramBot
token: 22313424:AAF4gck4D8gDhq68E7k0UH8vlyQADhxQhYo
Iýerarhiki bellik, gaýtalanmazlykdan (bot.name, bot.token) we okalmagyny ýokarlandyrmaga mümkinçilik berýär. Entek bot döretmedik bolsaňyz, resmi görkezmelere eýerip birini döredip bilersiňiz . Botyň şahsyýet maglumatlaryny application.yaml-da görkezmek islemeýän bolsaňyz (dogry), ýerleşdireniňizde daşky gurşaw üýtgeýjilerini ulanyň:
bot:
name: ${BOT_NAME}
token: ${BOT_TOKEN}
Bot synpyny doldurmak:
package com.whiskels.telegram.bot;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.api.objects.Update;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
// Аннотация @Component необходима, чтобы наш класс распознавался Spring, How полноправный Bean
@Component
// Наследуемся от TelegramLongPollingBot - абстрактного класса Telegram API
public class Bot extends TelegramLongPollingBot {
// Аннотация @Value позволяет задавать meaning полю путем считывания из application.yaml
@Value("${bot.name}")
private String botUsername;
@Value("${bot.token}")
private String botToken;
/* Перегружаем метод интерфейса LongPollingBot
Теперь при получении messages наш бот будет отвечать сообщением Hi!
*/
@Override
public void onUpdateReceived(Update update) {
try {
execute(new SendMessage().setChatId(update.getMessage().getChatId())
.setText("Hi!"));
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
// Геттеры, которые необходимы для наследования от TelegramLongPollingBot
public String getBotUsername() {
return botUsername;
}
public String getBotToken() {
return botToken;
}
}
Programma synpyny dolduryň:
package com.whiskels.telegram;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.telegram.telegrambots.ApiContextInitializer;
// Аннотация, которая объединяет в себя @Configuration, @EnableAutoConfiguration, @ComponentScan
@SpringBootApplication
public class App {
public static void main(String[] args) {
// Здесь code написан по заветам
// https://github.com/rubenlagus/TelegramBots/tree/master/telegrambots-spring-boot-starter
ApiContextInitializer.init();
SpringApplication.run(App.class, args);
}
}
Everythinghli zady dogry eden bolsak, esasy işledip, botymyza salam berip bileris. Taýýar! Her gelen habara salam berýän telegramma botyny üstünlikli ýazdyk we işe girizdik. Bu makala size peýdaly bolan bolsa, ammaryna seredip , ýyldyz goýsaňyz iň gowy minnetdarlyk bolar . Şol ýerde köp gyzykly aýratynlyklary bolan telegram botynyň wersiýasyny hem tapyp bilersiňiz:
- ulanyjylary Postgres maglumatlar bazasynda saklamak;
- ulanyjy rollaryna esaslanýan buýruklara girmäge ygtyýar bermek;
- habar işleýjilerini döretmek we ulanyjy hukuklaryny barlamak üçin ýörite bellikleri @BotCommand we @RequiredRoles ulanmak;
- habarnamanyň grafigini döretmek üçin goldaw.
GO TO FULL VERSION