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 Rubenlagus

Die hierin beschriebenen Funktionen basieren auf der Version 3.2.

Java Telegr. Bot Interface von Rubenlagus
Hier 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();
        }                      
    }        
}
Hier noch die Main Routine zum Initialisieren. Achtung - Reihenfolge der Zeilen beachten!
    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);
    }

Schreibe einen Kommentar