diff --git a/Dockerfile b/Dockerfile index 8880dfa..3352e22 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,15 @@ FROM golang:1-alpine as builder -RUN apk update && apk add make +RUN apk update && apk add gcc make g++ git WORKDIR /build ADD . . RUN make build FROM alpine COPY --from=builder /build/chatgpt-telegram /bin/chatgpt-telegram -RUN chmod +x /bin/chatgpt-telegram +RUN chmod +x /bin/chatgpt-telegram && mkdir -p /root/.config + +ENV TELEGRAM_ID "" +ENV TELEGRAM_TOKEN "" +ENV OPENAI_SESSION "" ENTRYPOINT ["/bin/chatgpt-telegram"] \ No newline at end of file diff --git a/README.md b/README.md index e8f287e..836b7ce 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,12 @@ You will then have to create a config file in the following location depending o Finally, add your cookie to the file and save it. It should look like this: `{ "openaisession": "YOUR_COOKIE_HERE" }`. +## Docker + +It is also possible to launch the bot via the docker image included. + +Check [docker-compose](./docker-compose.yml) file to understands how to do it. + ## License This repository is licensed under the [MIT License](LICENSE). diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3e55eb4 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,8 @@ +services: + chatgpt-telegram: + build: . + container_name: chatgpt-telegram + environment: + - TELEGRAM_ID= + - TELEGRAM_TOKEN= + - OPENAI_SESSION= diff --git a/env.example b/env.example index 81e2546..c93e13a 100644 --- a/env.example +++ b/env.example @@ -1,3 +1,4 @@ TELEGRAM_ID= TELEGRAM_TOKEN= EDIT_WAIT_SECONDS=1 +OPENAI_SESSION= diff --git a/main.go b/main.go index e6e5722..9981b5f 100644 --- a/main.go +++ b/main.go @@ -20,14 +20,29 @@ func main() { log.Fatalf("Couldn't load config: %v", err) } - if persistentConfig.OpenAISession == "" { - token, err := session.GetSession() - if err != nil { - log.Fatalf("Couldn't get OpenAI session: %v", err) - } + err = godotenv.Load() + if err != nil { + log.Printf("Couldn't load .env file: %v. Using shell exposed env variables...", err) + } + + + if config.OpenAISession == "" { + if os.Getenv("OPENAI_SESSION") == "" { + session, err := session.GetSession() + if err != nil { + log.Fatalf("Couldn't get OpenAI session: %v", err) + } - if err = persistentConfig.SetSessionToken(token); err != nil { - log.Fatalf("Couldn't save OpenAI session: %v", err) + err = config.Set("OpenAISession", session) + if err != nil { + log.Fatalf("Couldn't save OpenAI session: %v", err) + } + } else + { + err = config.Set("OpenAISession", os.Getenv("OPENAI_SESSION")) + if err != nil { + log.Fatalf("Couldn't save OpenAI session: %v", err) + } } } @@ -43,6 +58,7 @@ func main() { } bot, err := tgbot.New(envConfig.TelegramToken, time.Duration(envConfig.EditWaitSeconds*int(time.Second))) + if err != nil { log.Fatalf("Couldn't start Telegram bot: %v", err) }