JavaRush /Blog Java /Random-PL /Bot umiejętności telegramu: bot, który może prowadzić dia...
Chundrik
Poziom 35
Санкт-Петербург

Bot umiejętności telegramu: bot, który może prowadzić dialog

Opublikowano w grupie Random-PL
Boty są nie tylko interesujące, ale także przydatne. Pracując nad nimi będziesz mógł zdobyć prosty, ale działający projekt automatyzacji dowolnych funkcji, a przy okazji zapoznać się z lambdami, Git i Heroku. Kiedy tworzyłem bota, nie znalazłem instrukcji, jak zrobić coś nawet bardziej złożonego niż prosty bot echo. Chciałem czegoś bardziej rozsądnego: na przykład kanału, który mógłby prowadzić prawdziwy dialog, którego rozwój zmieniałby się w zależności od wybranej odpowiedzi. Opowiem o moim projekcie, który zajął mi dwa tygodnie, a szczególną uwagę zwrócę na wdrożenie na Heroku, ponieważ na końcowym etapie napotkałem duże trudności. Bot umiejętności telegramu: bot potrafiący prowadzić dialog - 1

Rejestracja

Aby rozpocząć, należy zarejestrować bota, otrzymać nazwę i token, który będzie nam później potrzebny. Na szczęście nie jest to trudne: wystarczy otworzyć Telegram, znaleźć @BotFather i wpisać /start. W odpowiedzi otrzymasz listę poleceń - potrzebujemy /newbot. Wymyślamy nazwę, a następnie nazwę użytkownika, która powinna kończyć się na -bot, na przykład Consequences1Bot. Nazwa użytkownika musi być oryginalna, dlatego będziesz musiał użyć tutaj swojej wyobraźni. W odpowiedzi BotFather wyśle ​​token, który najlepiej zapisać od razu.

Początek

Bot umiejętności telegramu: bot potrafiący prowadzić dialog - 2Na początek będziemy potrzebowali projektu Maven, Java 8 i Intelliji Idea Ultimate. Wstaw pom.xml: Bot umiejętności telegramu: bot potrafiący prowadzić dialog - 3nie zapomnij kliknąć przycisku Załaduj zmiany Mavena, który pojawi się w prawym górnym rogu. Upewnij się także, że używasz Java 8 lub nowszego, można to znaleźć w Plik -> Ustawienia projektu -> Projekt. W folderze src.main.javautwórz podfolder z nazwą swojego bota, u mnie jest to paczka example.TelegramBot. Najpierw tworzymy klasę TelegramBot, która dziedziczy AbilityBot. Jeśli Idea podkreśla to na czerwono (i tak się dzieje), kliknij Importuj klasę. UmiejętnośćBot ma jedną metodę, którą należy wdrożyć - creatorId().
@Override
    public int creatorId() {
        return Constants.CREATOR_ID;
    }
Musimy także utworzyć dwa konstruktory: jeden bez argumentów i używając drugiego wywołujemy konstruktor nadklasy:
public TelegramBot() {
        this(Constants.BOT_TOKEN, Constants.BOT_USERNAME);
    }
    private TelegramBot(String botToken, String botUsername) {
        super(botToken, botUsername);
    }
Constansnaturalnie zmienia kolor na czerwony - ten interfejs musi zostać utworzony. Będzie przechowywać ciągi znaków i numer identyfikacyjny. Oczywiście nie musisz się zawracać sobie głowy i zostawiać wszystkiego w dokumencie głównym, ale w ten sposób będzie to znacznie jaśniejsze. Stwórzmy więc interfejs Constans. Pierwszymi zmiennymi będą String BOT_TOKEN(token wysłany przez BotFather) String BOT_USERNAMEi int CREATOR_ID. Dla dodatkowego bezpieczeństwa potrzebny jest identyfikator twórcy - znajdziesz go nieco później.

Początek

Utwórz klasę Application, która będzie zawierała metodę main()z kodem niezbędnym do zainicjowania bota.Bot umiejętności telegramu: bot potrafiący prowadzić dialog - 4
public class Application {

    public static void main(String[] args) {
        // Initializes dependencies necessary for the base bot
        ApiContextInitializer.init();

        // Create the TelegramBotsApi object to register your bots
        TelegramBotsApi botsApi = new TelegramBotsApi();

        try {
            // Register your newly created AbilityBot
            FitnessBot bot = new FitnessBot();
            botsApi.registerBot(bot);

        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }
}
Teraz możesz uruchomić bota z metody głównej, ale nie wykona on żadnych działań. Odpowiedzią będzie tylko cisza. W dalszej części opiszę jak to zmienić. CZĘŚĆ 2
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION