JavaRush /Blog Jawa /Random-JV /Nggawe bot telegram nggunakake Spring Boot
Whiskels
tingkat
Москва

Nggawe bot telegram nggunakake Spring Boot

Diterbitake ing grup
Halo kabeh! Ing sawetara titik nalika sinau, sampeyan pengin pindhah saka ngrampungake masalah menyang nggawe proyek nyata sing bakal dadi basis portofolio sampeyan. Nalika aku miwiti internship (sing aku banget nyaranake kanggo kabeh wong), aku nampa tawaran kanggo nulis bot telegram minangka freelancer. Amarga sethithik kawruhku, aku nulis bot sing cukup prasaja ( komitmen pungkasan sadurunge migrasi menyang Spring ), sing ngemot telung utas:
  • pesen nampa thread;
  • thread ngirim pesen;
  • Utas jadwal acara (mriksa pesen sing dijadwal lan data cache sing dianyari saka JSON).
Nalika nulis fungsi iki, aku gumantung banget ing artikel iki . Kabeh bisa uga cukup, nanging luwih jero aku nyilem menyang Spring, luwih aku pengin refactor kabeh kanggo nyuda koherensi program lan nambah kualitas kode. SonarLint (plugin kanggo otomatis mriksa kualitas kode) terus nyoba kanggo gawe uwong yakin kula sing ora apik banget kanggo duwe telas nalika puteran. Ing sawetara titik, aku nggawe pikiranku lan nulis maneh kabeh, lan saiki aku pengin nuduhake kawruh sing aku entuk sajrone proses refactoring karo sampeyan. Ayo dadi miwiti karo dhasar, lan luwih khusus - karo TelegramBots-Spring-Boot-Starter Dadi, ayo! Ayo nggawe bot sing bakal ngucapake salam kanggo nanggepi pesen apa wae. Pisanan, kita kudu nggawe proyek Maven anyar. Ayo nambahake dependensi sing dibutuhake kanggo pom.xml. Tambah versi Java lan TelegramBots-Spring-Boot-Starter menyang properti. Lan kita ndhaptar dependensi - ing kene kita bakal duwe TelegramBots-Spring-Boot-Starter lan Telegram API : Nggawe bot telegram nggunakake Spring Boot - 1Perpustakaan TelegramBots-Spring-Boot-Starter kalebu Spring Boot lan Telegram API. Nggunakake ngidini kita ngumumake bot ing kode kita kanthi cara sing cukup prasaja, lan Spring dhewe bakal nggawe Bean lan ngaktifake bot kasebut. Yen sampeyan kasengsem ing apa sing kedadeyan ing wektu iki, banjur deleng sumber perpustakaan (ing lingkungan pangembangan utawa ing Github ). Kita uga nambah paramèter kompilasi: Nggawe bot telegram nggunakake Spring Boot - 2 Aja lali nganyari kabeh dependensi sawise ngisi pom! Ayo nggawe rong kelas - App lan Bot, uga file application.yaml ing folder sumber daya. Struktur proyekku katon kaya iki: Nggawe bot telegram nggunakake Spring Boot - 3Ing tahap iki, ayo nambahake kredensial bot kita menyang application.yaml:
bot:
  name: JavaRushTelegramBot
  token: 22313424:AAF4gck4D8gDhq68E7k0UH8vlyQADhxQhYo
Notasi hierarki ngidini kita ngindhari pengulangan (bot.name, bot.token) lan nambah keterbacaan. Yen sampeyan durung nggawe bot, sampeyan bisa nggawe bot kanthi nuruti instruksi resmi . Yen sampeyan ora pengin nampilake kredensial bot ing application.yaml (sing bener), gunakake variabel lingkungan nalika nyebarake:
bot:
  name: ${BOT_NAME}
  token: ${BOT_TOKEN}
Ngisi kelas 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;
    }
}
Isi kelas App:
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);
    }
}
Yen kita nindakake kabeh kanthi bener, mula kita bisa mbukak utama lan ngucapake salam marang bot kita. Nggawe bot telegram nggunakake Spring Boot - 4siyap! Kita wis sukses nulis lan ngluncurake bot telegram sing ngucapake salam kanggo saben pesen sing mlebu. Yen artikel iki migunani kanggo sampeyan, matur nuwun sing paling apik yen sampeyan ndeleng gudangku lan ninggalake bintang. Ing kana sampeyan uga bakal nemokake versi bot telegramku, sing nduweni akeh fitur menarik:
  • nyimpen pangguna ing database Postgres;
  • wewenang akses menyang printah adhedhasar peran pangguna;
  • nggunakake anotasi khusus @BotCommand lan @RequiredRoles kanggo nggawe pawang pesen lan mriksa hak pangguna;
  • dhukungan kanggo nggawe jadwal kabar.
Yen ana fungsi iki sing narik kawigaten sampeyan, tulis ing komentar, lan aku bakal nyoba mangsuli utawa nulis artikel rinci babagan carane nggawe maneh. PS Iki artikel pisanan ing JavaRush, lan aku kaya kanggo nyilem menyang wilds Spring JPA lan @Scheduled annotations, nanging pisanan aku panginten iku bakal worth nulis pandhuan iki carane umume mbangun bot nggunakake Spring Boot. Sawetara artikel wis ditulis ing bot, nanging telusuran ora ngasilake pandhuan kaya ngono, mula aku mutusake ngisi ceruk iki :) Aku uga pengin nyebutake Miroha - matur nuwun kanggo ide UpdateHandlers, aku nyolong dhewe :) PART 2 PART 3
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION