Бәріңе сәлем! Оқуыңыздың белгілі бір кезеңінде сіз проблемаларды шешуден портфолиоңыздың негізін құрайтын нақты жобаларды жасауға ауысқыңыз келеді. Мен тағылымдамаға кіріскен кезде (оны барлығына өте ұсынамын) фрилансер ретінде телеграмма бот жазу туралы ұсыныс алдым. Менің білімім аз болғандықтан, мен өте қарапайым бот жаздым ( Spring -ке көшу алдындағы соңғы тапсырма ), оның құрамында үш ағын бар:
және Telegram API болады : TelegramBots-Spring-Boot-Starter кітапханасында Spring Boot және Telegram API бар. Оны пайдалану бізге codeымызда ботты өте қарапайым түрде жариялауға мүмкіндік береді, ал Spring өзі Bean жасайды және ботты белсендіреді. Егер сізді қазіргі уақытта қақпақ астында не болып жатқаны қызықтырса, кітапхана көздеріне қараңыз (әзірлеу ортасында немесе Github -да ). Біз сонымен қатар компиляция параметрлерін қосамыз: Пом толтырғаннан кейін барлық тәуелділіктерді жаңартуды ұмытпаңыз! Екі сыныпты - App және Bot, сондай-ақ ресурстар қалтасындағы application.yaml файлын жасайық. Менің жобамның құрылымы келесідей: Бұл кезеңде біздің боттың тіркелгі деректерін application.yaml файлына қосамыз:
- хабарламаны қабылдау ағыны;
- хабарлама жіберу ағыны;
- оқиғаны жоспарлау ағыны (ол жоспарланған хабарларды тексерді және JSON-дан жаңартылған кэштелген деректерді тексерді).
bot:
name: JavaRushTelegramBot
token: 22313424:AAF4gck4D8gDhq68E7k0UH8vlyQADhxQhYo
Иерархиялық белгілеу қайталауды болдырмауға мүмкіндік береді (bot.name, bot.token) және оқуды жақсарту. Егер сіз әлі бот жасамаған болсаңыз, оны ресми нұсқауларды орындау арқылы жасауға болады . Боттың тіркелгі деректерін application.yaml ішінде көрсеткіңіз келмесе (бұл дұрыс), орналастыру кезінде ортаның айнымалы мәндерін пайдаланыңыз:
bot:
name: ${BOT_NAME}
token: ${BOT_TOKEN}
Bot класын толтыру:
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;
}
}
Қолданба сыныбын толтырыңыз:
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);
}
}
Егер біз бәрін дұрыс жасасақ, онда біз негізгі іске қосып, ботқа сәлем айта аламыз. Дайын! Біз әрбір кіріс хабарламаға сәлем беретін телеграмма ботын сәтті жазып, іске қостық. Егер бұл мақала сізге пайдалы болса, менің репозиторийімді қарап , жұлдыз қалдырсаңыз, ең жақсы рахмет. Онда сіз сондай-ақ көптеген қызықты мүмкіндіктері бар телеграмма ботының менің нұсқасын таба аласыз:
- пайдаланушыларды Postgres дерекқорында сақтау;
- пайдаланушы рөлдеріне негізделген командаларға қол жеткізуді авторизациялау;
- хабарлама өңдегіштерін жасау және пайдаланушы құқықтарын тексеру үшін @BotCommand және @RequiredRoles пайдаланушы annotationларын пайдалану;
- хабарландыру кестесін құруға қолдау көрсету.
GO TO FULL VERSION