Telegram
Telegram Messenger Interface
JAVA Programmierung von Bots
E-mail ist out! Messenger Dienste sind schneller und interaktiver. Aus diesem Grund haben wir uns entschieden für die wichtigsten Nachrichtendienste nun den Telegram Messenger zu verwenden. Nach vielen Prüfungen und Test haben wir nun die Funktion eines "Bots" implementiert. Dieser benötigt keine eigene Handynummer und kann bequem vom Computer gestartet und gesteuert werden.Nachteil: In der Standardversion kann er keine Nachrichten empfangen. Dies spielt aber für diese Anwendung keine Rolle.
Wir wollen hier lediglich unsere Kenntnisse mit dem JAVA Telegram Bot Interface erläutern. Damit andere nicht auch so viel Zeit verschwenden. Die am besten beschriebene Bibliothek kam von
Java Telegr. Bot Interface von RubenlagusDie hierin beschriebenen Funktionen basieren auf der Version 3.2.
Java Telegr. Bot Interface von RubenlagusHier die Grundfunktionen:
/* * MIT License * @author Lenhart Applied Software and Services * Thanks to https://github.com/rubenlagus/TelegramBots * Examples: * https://monsterdeveloper.gitbooks.io/writing-telegram-bots-on-java/content/lesson-2.-photobot.html * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT * LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ package telegram; import org.telegram.telegrambots.api.methods.send.SendMessage; import org.telegram.telegrambots.api.objects.Update; import org.telegram.telegrambots.bots.TelegramLongPollingBot; import org.telegram.telegrambots.exceptions.TelegramApiException; import org.telegram.telegrambots.exceptions.TelegramApiRequestException; /** * Klasse managt die Kommunikation mit dem Telegram Bot */ public class Telegram extends TelegramLongPollingBot { public Telegram() { } @Override public void onUpdateReceived(Update update){ if (update.hasMessage()) { if (update.getMessage().hasText()) { //lese Name des Senders String strName=update.getMessage().getFrom().getFirstName()+" "+update.getMessage().getFrom().getLastName(); //lese ID des Senders long lIDSender=update.getMessage().getFrom().getId(); //lese Chat ID - bei direkter Kommunikation gleich ID des Sprechers long lChatID=update.getMessage().getChatId(); //lese Nachricht String strText=update.getMessage().getText(); //Gebe Infotext aus System.out.println(strName+"("+lIDSender+") - Chat ID="+lChatID+": "+strText); sendText(update.getMessage().getChatId(),"Hello "+ update.getMessage().getFrom().getFirstName()+"\nVerstanden"); } else { //Bei Gruppenkommunikation wird kein Text übertragen //an dieser Stelle landen nur Infos über z.B. hinzugefügte Teilnehmer //prüfe, ob Gruppeninfo gesendet wurde if (update.getMessage().getChat().isGroupChat()){ //Nur falls neue Gruppenmitglieder in die Gruppe kommen ... if (update.getMessage().getNewChatMembers()!=null) { //lese Name der Gruppe String strTitle=update.getMessage().getChat().getTitle(); //lese Namen des neuen Teilnehmers mit ID String strUser=update.getMessage().getNewChatMembers().get(0).getUserName()+" (ID "+update.getMessage().getNewChatMembers().get(0).getId()+")"; //lese ID der Gruppe, wichtig um in Gruppe senden zu können long lID=update.getMessage().getChat().getId(); //gebe Infotext aus. System.out.println(strTitle+"(ID "+lID+") hat neuen Teilnehmer: "+strUser); //sende Testboschaft an Gruppe sendText(lID,"Hello Group: Verstanden"); } } } } } @Override public String getBotUsername() { return "sandanxxxbot"; } @Override public String getBotToken() { return "447510950:AAGi9UUaawOzYpBXTAYwJN-ie3aDCR_0oUw"; } /** * Routine sendet Text an einen Teilnehmer mit der ID * In komplexen Pogrammen sollte diese Routine nur vom EDT gestartet werden - * keine Reentrance! */ public void sendText (long lChatID, String strMessage) { //Define message SendMessage message = new SendMessage() // Create a SendMessage object with mandatory fields .setChatId(lChatID) .setText(strMessage); try { //sende die Botschaft execute(message); // Call method to send the message } catch (TelegramApiException e) { e.printStackTrace(); } } }
public static void main(String[] args) { // TODO code application logic here ApiContextInitializer.init(); TelegramBotsApi botsApi = new TelegramBotsApi(); Telegram t=new Telegram(); try { botsApi.registerBot(t); } catch (TelegramApiException e) { e.printStackTrace(); } while(true); }