/** * Creates a TelegramLongPollingCommandBot using default options * Use ICommandRegistry's methods on this bot to register commands * * @param botUsername Username of the bot */ public TelegramLongPollingCommandBot(String botUsername) { this(ApiContext.getInstance(DefaultBotOptions.class), botUsername); }
/** * Register a bot. The Bot Session is started immediately, and may be disconnected by calling close. * @param bot the bot to register */ public BotSession registerBot(LongPollingBot bot) throws TelegramApiRequestException { bot.clearWebhook(); BotSession session = ApiContext.getInstance(BotSession.class); session.setToken(bot.getBotToken()); session.setOptions(bot.getOptions()); session.setCallback(bot); session.start(); return session; }
/** * Creates an HTTP server to receive webhook request * @param externalUrl External base url for the webhook * @param internalUrl Internal base url for the webhook * * @implSpec This option requires externally handled HTTPS support (i.e. via proxy) */ public TelegramBotsApi(String externalUrl, String internalUrl) throws TelegramApiRequestException { if (externalUrl == null || externalUrl.isEmpty()) { throw new TelegramApiRequestException("Parameter externalUrl can not be null or empty"); } if (internalUrl == null || internalUrl.isEmpty()) { throw new TelegramApiRequestException("Parameter internalUrl can not be null or empty"); } this.useWebhook = true; this.externalUrl = fixExternalUrl(externalUrl); webhook = ApiContext.getInstance(Webhook.class); webhook.setInternalUrl(internalUrl); webhook.startServer(); }
@Bean @ConditionalOnMissingBean(TelegramBotsApi.class) public TelegramBotsApi telegramBotsApi() { return new TelegramBotsApi(); }
@Override public void afterPropertiesSet() throws Exception { try { for (LongPollingBot bot : longPollingBots) { BotSession session = telegramBotsApi.registerBot(bot); handleAfterRegistrationHook(bot, session); } for (WebhookBot bot : webHookBots) { telegramBotsApi.registerBot(bot); } } catch (TelegramApiException e) { throw new RuntimeException(e); } }
private static Injector getInjector() { if (INJECTOR == null) { synchronized (lock) { if (INJECTOR == null) { INJECTOR = Guice.createInjector(new ApiModule()); } } } return INJECTOR; }
public static <T> T getInstance(Class<T> type) { return getInjector().getInstance(type); }
/** * Creates an HTTPS server to receive webhook request * @param keyStore KeyStore for the server * @param keyStorePassword Key store password for the server * @param externalUrl External base url for the webhook * @param internalUrl Internal base url for the webhook */ public TelegramBotsApi(String keyStore, String keyStorePassword, String externalUrl, String internalUrl) throws TelegramApiRequestException { if (externalUrl == null || externalUrl.isEmpty()) { throw new TelegramApiRequestException("Parameter externalUrl can not be null or empty"); } if (internalUrl == null || internalUrl.isEmpty()) { throw new TelegramApiRequestException("Parameter internalUrl can not be null or empty"); } if (keyStore == null || keyStore.isEmpty()) { throw new TelegramApiRequestException("Parameter keyStore can not be null or empty"); } if (keyStorePassword == null || keyStorePassword.isEmpty()) { throw new TelegramApiRequestException("Parameter keyStorePassword can not be null or empty"); } this.useWebhook = true; this.externalUrl = fixExternalUrl(externalUrl); webhook = ApiContext.getInstance(Webhook.class); webhook.setInternalUrl(internalUrl); webhook.setKeyStore(keyStore, keyStorePassword); webhook.startServer(); }
public TelegramWebhookBot() { this(ApiContext.getInstance(DefaultBotOptions.class)); }
/** * @brief Creates a Telegram Bots Api to use Long Polling (getUpdates) bots. * @return TelegramBotsApi to register the bots. */ private static TelegramBotsApi createLongPollingTelegramBotsApi() { return new TelegramBotsApi(); }
private static Injector getInjector() { if (INJECTOR == null) { synchronized (lock) { if (INJECTOR == null) { INJECTOR = Guice.createInjector(new ApiModule()); } } } return INJECTOR; }
throw new TelegramApiRequestException("Parameter externalUrl can not be null or empty"); throw new TelegramApiRequestException("Parameter internalUrl can not be null or empty"); throw new TelegramApiRequestException("Parameter keyStore can not be null or empty"); throw new TelegramApiRequestException("Parameter keyStorePassword can not be null or empty"); throw new TelegramApiRequestException("Parameter pathToCertificate can not be null or empty"); this.externalUrl = fixExternalUrl(externalUrl); this.pathToCertificate = pathToCertificate; webhook = ApiContext.getInstance(Webhook.class); webhook.setInternalUrl(internalUrl); webhook.setKeyStore(keyStore, keyStorePassword); webhook.startServer();
public TelegramLongPollingBot() { this(ApiContext.getInstance(DefaultBotOptions.class)); }
/** * @brief Creates a Telegram Bots Api to use Long Polling bots and webhooks bots with self-signed certificates. * @return TelegramBotsApi to register the bots. * * @note https://core.telegram.org/bots/self-signed#java-keystore for generating a keypair in store and exporting the pem. * @note Don't forget to split the pem bundle (begin/end), use only the public key as input! */ private static TelegramBotsApi createSelfSignedTelegramBotsApi() throws TelegramApiException { return new TelegramBotsApi(BuildVars.pathToCertificateStore, BuildVars.certificateStorePassword, BuildVars.EXTERNALWEBHOOKURL, BuildVars.INTERNALWEBHOOKURL, BuildVars.pathToCertificatePublicKey); }
public TelegramLongPollingBot() { this(ApiContext.getInstance(DefaultBotOptions.class)); }
/** * @brief Creates a Telegram Bots Api to use Long Polling bots and webhooks bots with no-self-signed certificates. * @return TelegramBotsApi to register the bots. * * @note Coming from a set of pem files here's one way to do it: * @code{.sh} * openssl pkcs12 -export -in public.pem -inkey private.pem > keypair.p12 * keytool -importkeystore -srckeystore keypair.p12 -destkeystore server.jks -srcstoretype pkcs12 * #have (an) intermediate(s) to supply? first: * cat public.pem intermediate.pem > set.pem (use set.pem as -in) * @endcode */ private static TelegramBotsApi createNoSelfSignedTelegramBotsApi() throws TelegramApiException { return new TelegramBotsApi(BuildVars.pathToCertificateStore, BuildVars.certificateStorePassword, BuildVars.EXTERNALWEBHOOKURL, BuildVars.INTERNALWEBHOOKURL); } }
public TelegramWebhookBot() { this(ApiContext.getInstance(DefaultBotOptions.class)); }