JavaRush /Java Blog /Random-TK /“Bahar boot” -y ulanyp telegramma bot döretmek
Whiskels
Dereje
Москва

“Bahar boot” -y ulanyp telegramma bot döretmek

Toparda çap edildi
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 ):
  • habar alýan sapak;
  • habar ibermek;
  • hadysany meýilleşdiriş sapagy (meýilleşdirilen habarlary barlady we JSON-dan keş keş maglumatlary täzelendi).
Bu funksiýany ýazanymda, bu makala köp bil bagladym . Hemme zat gaty gowy işledi, ýöne Bahara näçe çuňňur girenimde, programmanyň sazlaşygyny azaltmak we koduň hilini ýokarlandyrmak üçin hemme zady täzeden üýtgetmek isledim. SonarLint (koduň hilini awtomatiki barlamak üçin bir plugin), aýlawlar wagtynda tükeniksiz bolmagyň gaty gowy däldigine ynandyrmaga synanyşdy. Belli bir wagt pikir etdim we hemme zady täzeden ýazdym, indi gaýtadan işlemek döwründe alan bilimlerimi siziň bilen paýlaşmak isleýärin. Esasy zatlardan başlalyň, has takygy - TelegramBots-Bahar-Boot-Starter Şeýdip, gideli! Islendik habara jogap hökmünde salam berjek bot döredeliň. Ilki bilen täze Maven taslamasyny döretmeli. Pom.xml-e zerur baglylyklary goşalyň. Sypatlara Java we TelegramBots-Spring-Boot-Starter wersiýalaryny goşuň. Baglylyklary hasaba alýarys - bu ýerde ýokarda agzalan TelegramBots-Bahar-Boot-Starter we Telegram API bolar : “Bahar boot” - 1 ulanyp telegramma bot döretmekTelegramBots-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: “Bahar boot” - 2 ulanyp, telegramma bot döretmek 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: “Bahar boot” - 3 ulanyp telegramma bot döretmekBu etapda, botymyzyň şahsyýetnamalaryny application.yaml-a goşalyň:
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. “Bahar boot” - 4 ulanyp, telegramma bot döretmekTaýý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.
Bu funksiýanyň haýsydyr biri sizi gyzyklandyrýan bolsa, teswirlerde ýazyň, men ony nädip döredip boljakdygy barada jikme-jik jogap bermäge ýa-da ýazmaga synanyşaryn. PS Bu, JavaRush-daky ilkinji makalam, Bahar JPA we @Scheduled annotasiýalarynyň ýabany ýerlerine çümmek isleýärin, ýöne ilki bilen “Bahar Boot” -y ulanyp, bot gurmak barada bu gollanmany ýazmagyň peýdalydygyny pikir etdim. Botlarda eýýäm birnäçe makala ýazylypdy, ýöne gözleg beýle gollanmany tapmady, şonuň üçin bu ýeri doldurmagy makul bildim :) Mirohany hem belläsim gelýär - UpdateHandlers ideýasy üçin sag boluň, ogurladym özüm :) 2-nji BÖLÜM 3-NJI BÖLÜM
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION