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.
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
Na początek będziemy potrzebowali projektu Maven, Java 8 i Intelliji Idea Ultimate. Wstawpom.xml
: nie 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.java
utwó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);
}
Constans
naturalnie 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_USERNAME
i 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.
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
GO TO FULL VERSION