rubenlagus / TelegramBots

Java library to create bots using Telegram Bots API
https://telegram.me/JavaBotsApi
MIT License
4.68k stars 1.18k forks source link

Bot Token and username not found when running docker container #1182

Closed nc1z closed 1 year ago

nc1z commented 1 year ago

Any Idea why the container can't detect token and username? The bot and server works fine when running outside the container. Not sure if I'm building the image wrong or running it wrongly. Many thanks.

Error:

org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
        at org.telegram.telegrambots.meta.TelegramBotsApi.registerBot(TelegramBotsApi.java:62)
        at com.nc1z.demobot1.Demobot1Application.main(Demobot1Application.java:18)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
        at java.base/java.lang.reflect.Method.invoke(Method.java:577)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:95)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65)

Dockerfile:

FROM openjdk:19-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ./target/demobot1-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

Demobot.java

package com.nc1z.demobot1.bot;

import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.api.objects.Update;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;

public class DemoBot extends TelegramLongPollingBot {

    @Override
    public String getBotUsername() {
        return "MY_BOT_USERNAME";
    }

    @Override
    public String getBotToken() {
        return "MY_HARDCODED_BOT_TOKEN";
    }

    @Override
    public void onUpdateReceived(Update update) {
    .... rest of the code
nc1z commented 1 year ago

My bad rookie mistake... realized I did not rebuild the project and Dockerfile commands did not include cleaning/rebuilding the JAR.