Hamıya salam! Təhsilinizin bir nöqtəsində siz problemlərin həllindən portfelinizin əsasını təşkil edəcək real layihələrin yaradılmasına keçmək istəyirsiniz. Təcrübəmə başlayanda (bunu hamıya çox tövsiyə edirəm) frilanser kimi teleqram bot yazmaq təklifi aldım. Kiçik biliklərimə görə, üç mövzudan ibarət olduqca sadə bir bot yazdım ( Bahara köçməzdən əvvəl sonuncu öhdəliyim ):
Və biz asılılıqları qeyd edirik - burada yuxarıda qeyd olunan TelegramBots-Spring-Boot-Starter və Telegram API-yə sahib olacağıq : TelegramBots-Spring-Boot-Starter kitabxanasına Spring Boot və Telegram API daxildir. Onun istifadəsi bizə kifayət qədər sadə şəkildə kodumuzda botu elan etməyə imkan verir və Spring özü Bean yaradacaq və botu aktivləşdirəcək. Bu anda başlıq altında baş verənlərlə maraqlanırsınızsa, kitabxana mənbələrinə baxın (inkişaf mühitində və ya Github -da ). Kompilyasiya parametrlərini də əlavə edirik: Pom doldurduqdan sonra bütün asılılıqları yeniləməyi unutmayın! Gəlin iki sinif yaradaq - App və Bot, həmçinin resurslar qovluğunda application.yaml faylı. Layihəmin strukturu belə görünür: Bu mərhələdə botumuzun etimadnaməsini application.yaml-a əlavə edək:
- mesaj qəbul edən mövzu;
- mesaj göndərmə mövzusu;
- hadisə planlaşdırma mövzusu (o, planlaşdırılmış mesajları yoxladı və JSON-dan keşlənmiş məlumatları yenilədi).
bot:
name: JavaRushTelegramBot
token: 22313424:AAF4gck4D8gDhq68E7k0UH8vlyQADhxQhYo
İerarxik qeyd bizə təkrardan qaçmağa (bot.name, bot.token) və oxunuşunu yaxşılaşdırmağa imkan verir. Hələ bot yaratmamısınızsa, rəsmi təlimatlara əməl etməklə onu yarada bilərsiniz . Əgər siz botun etimadnaməsini application.yaml-da göstərmək istəmirsinizsə (bu düzgündür), yerləşdirərkən mühit dəyişənlərindən istifadə edin:
bot:
name: ${BOT_NAME}
token: ${BOT_TOKEN}
Bot sinfinin doldurulması:
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;
}
}
Tətbiq sinfini doldurun:
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);
}
}
Hər şeyi düzgün etdiksə, o zaman main-i işə salıb botumuza salam deyə bilərik. Hazır! Hər gələn mesaja salam deyən teleqram botunu uğurla yazdıq və işə saldıq. Bu məqalə sizin üçün faydalı olsaydı, mənim depoma baxıb bir ulduz buraxsanız, ən yaxşı təşəkkür olardı . Orada bir çox maraqlı xüsusiyyətlərə malik teleqram botunun mənim versiyasını da tapa bilərsiniz:
- istifadəçiləri Postgres verilənlər bazasında saxlamaq;
- istifadəçi rolları əsasında əmrlərə girişin icazəsi;
- mesaj işləyiciləri yaratmaq və istifadəçi hüquqlarını yoxlamaq üçün @BotCommand və @RequiredRoles xüsusi annotasiyalarından istifadə;
- bildiriş cədvəli yaratmaq üçün dəstək.
GO TO FULL VERSION