All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.shib.java.lib.telegram.bot.easybot.UpdateReceiver Maven / Gradle / Ivy

package me.shib.java.lib.telegram.bot.easybot;

import me.shib.java.lib.telegram.bot.service.TelegramBot;
import me.shib.java.lib.telegram.bot.types.Update;
import me.shib.java.lib.telegram.bot.types.User;

import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Queue;

public class UpdateReceiver {

    private static Map updateReceiverMap;

    private Queue updatesQueue;
    private TelegramBot bot;
    private User myIdentity;
    private boolean botStarted;

    private UpdateReceiver(String botAPItoken) {
        this.updatesQueue = new LinkedList<>();
        this.bot = TelegramBot.getInstance(botAPItoken);
        botStarted = false;
    }

    protected static synchronized UpdateReceiver getDefaultInstance(String botAPItoken) {
        if (updateReceiverMap == null) {
            updateReceiverMap = new HashMap<>();
        }
        UpdateReceiver updateReceiver = updateReceiverMap.get(botAPItoken);
        if (updateReceiver == null) {
            updateReceiver = new UpdateReceiver(botAPItoken);
            updateReceiverMap.put(botAPItoken, updateReceiver);
        }
        return updateReceiver;
    }

    private synchronized void fillUpdatesQueue() {
        try {
            Update[] updates = bot.getUpdates();
            for (Update u : updates) {
                updatesQueue.add(u);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    protected synchronized Update getUpdate() {
        Update update = updatesQueue.poll();
        while (update == null) {
            fillUpdatesQueue();
            update = updatesQueue.poll();
        }
        return update;
    }

    protected synchronized void onBotStart() {
        if (!botStarted) {
            whoAmI();
            if (myIdentity != null) {
                System.out.println(
                        "Starting services for: " + myIdentity.getFirst_name() + " (" + myIdentity.getUsername() + ")");
                botStarted = true;
            }
        }
    }

    public User whoAmI() {
        if (myIdentity == null) {
            try {
                myIdentity = bot.getMe();
            } catch (IOException e) {
                myIdentity = null;
            }
        }
        return myIdentity;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy