Skip to content

Latest commit

 

History

History
84 lines (60 loc) · 3.68 KB

README.md

File metadata and controls

84 lines (60 loc) · 3.68 KB

ChatGPT Telegram Bot in AWS Lambda

This a Telegram bot that lets you chat with ChatGPT. This bot is created using reverse engineering from the ChatGPT internal backend request to use the internal API endpoint. The Telegram bot is deployed in completely serverless in AWS Lambda. No need to setup a local server or do login in the browser.

Features

  • Voice messages support! 🔥
  • Markdown rendering support.
  • Fully automated token refresh in the AWS Lambda.
  • Conversation reset with /reset command.

Initial Setup

  1. Create an OpenAI account.
  2. Create an AWS account.
  3. Setup your Telegram bot. You can follow this instructions to get your token.
  4. Get your internal session token for ChatGPT:
  • For this go to ChatGPT
  • Press F12, click on session and copy the contents of __Secure-next-auth.session-token.
[](/img/session_token.png)
  1. To enable support for voice messages you need to create a S3 bucket in your AWS account.
  • Go to the top search bar and write S3.
[](/img/s3_browser.png)
  • Click the Create Bucket button.
[](/img/create_bucket_button.png)
  • Configure the creation of your bucket. The name must be unique worldwide. Scroll to bottom and click Create Bucket and don't change any other configuration.
[](/img/create_bucket_config.png)
  1. Go to .chalice/config.json and stablish the configurations:
  • TELEGRAM_TOKEN with your Telegram token.
  • CHATGPT_SESSION_TOKEN with the value of your ChatGPT Token. Leave CHATGPT_TOKEN empty, it will be filled automatically by the function.
  • VOICE_MESSAGES_BUCKET with the bucket name you created previously.

Installation

  1. Install Python using pyenv or your prefered Python installation.
  2. Create a virtual environment: python3 -m venv .venv.
  3. Activate you virtual environment: source .venv/bin/activate.
  4. Install dependencies: pip install -r requirements.txt.
  5. Install the AWS CLI and configure your credentials.

Deployment

  1. Run chalice deploy.
  2. Go to the AWS Console -> Lambda -> chatgpt-telegram-bot-dev-message-handler-lambda -> Configuration -> Function URL.
  3. Click Create Function URL and set Auth type to NONE.
  4. Copy the created function URL.
  5. Stablish your Telegram webhook to point to you AWS Lambda running curl --request POST --url https://api.telegram.org/bot<YOUR_TELEGRAM_TOKEN>/setWebhook --header 'content-type: application/json' --data '{"url": "<YOUR_FUNCTION_URL"}'

Great! Everything is setup :) Now go to Telegram and find your bot name and use ChatGPT from there!

Coming soon!

  • Decoupled Token refresh in conversation.
  • Increase response performance.
  • Error handling from ChatGPT services.
  • Deploy solution with one-click using CloudFormation.

Credits