Code Monkey home page Code Monkey logo

hanssen0 / gpt-telegramus Goto Github PK

View Code? Open in Web Editor NEW

This project forked from f33rni/gpt-telegramus

0.0 0.0 0.0 6.34 MB

The best free Telegram bot for ChatGPT, EdgeGPT (aka Bing AI), DALL-E, Bing Image generator and Bard with stream writing, requests with images (for Bard only), multiple languages, admin control, automatic proxy searcher, data logging and more!

License: GNU Affero General Public License v3.0

Shell 0.03% Python 99.61% Dockerfile 0.36%

gpt-telegramus's Introduction

๐Ÿค– GPT-Telegramus

GPT-Telegramus logo

The best Telegram bot for ChatGPT, EdgeGPT (aka Bing AI), DALL-E, Bing Image generator, Bard and Gemini with stream writing, requests with images (for Bard and Gemini only), multiple languages, admin control, automatic proxy searcher, data logging and more!

YouTube Bandcamp Spotify SoundCloud


๐Ÿ˜‹ Support project

Support the project by buying and listening to my music ๐ŸŽต

Or message me if you would like to donate ๐Ÿ’ฐ

Star History Chart


๐Ÿค— Contributors


๐Ÿ—๏ธ Requirements

  • Python 3.10
  • GO lang (for ChatGPTProxy)
  • Unblocked access to the telegram bot official API
  • Other requirements specified in the requirements.txt file

๐Ÿ“™ Project based on


โ“ Get started

  1. Install Python 3.10, venv and pip
  2. Download source code
  3. Create venv python -m venv venv / python3 -m venv venv / python3.10 -m venv venv
  4. Activate venv source venv/bin/activate / venv\Scripts\activate.bat
  5. Check python version using python --version command. It should be 3.10.X
  6. Install requirements pip install -r requirements.txt --upgrade
  7. Access the modules you want to use (Generate an API key / access token for ChatGPT / DALL-E / Gemini, save cookies for EdgeGPT / Bard)
  8. Start ChatGPTProxy for ChatGPT (see ๐Ÿ”— Chat-GPT Base URL (proxy) section)
  9. Carefully change all the settings (in the config.json file) to suit your needs. If you have questions regarding any setting, open an issue, I will add a more detailed description
  10. Create bot at https://t.me/BotFather
  11. Type Bot's token into api_key in telegram in config.json file
  12. Run main script python main.py
  • ChatGPT
    • Browser-like Chat-GPT. Currently, without extensions and image requests (text only) (because I don't have a paid account to test it)
    • Stream response support
    • Chat history support
    • Works better with API type 1 and an access_token for authentication
    • Note: Please refer to the ๐Ÿ”— Chat-GPT Base URL (proxy) section for correct usage.
  • DALLยทE
    • Image generation tool from OpenAI
    • Requires an OpenAI account with unexpired credits
  • EdgeGPT (aka Bing AI) (aka Sydney)
    • Supports conversation style /style
    • Stream response support
    • Chat history support
    • Web-browsing (probably) and sources support
    • Unfortunately, it can't accept images as input yet, nor can it generate them. Please use Bing ImageGen to generate images.
  • Bing ImageGen
    • Bing Image Generator. Used as a separate module due to issues with the EdgeGPT module
    • Free and unlimited
  • Bard
    • Google's Bard AI
    • Chat history support
    • Web-browsing support (probably)
    • Now supports requests with images (you can send an image with text to it) NEW
  • Gemini
    • Google's AI using the Gemini Pro model
    • Chat history support
    • Requests with images (you can send an image with text to it)
    • Requests with images will not be recorded in the chat history since Google hasn't support this

๐Ÿ’ฌ Bot messages

  • You can edit telegram bot messages by editing file messages.json. You can add new lines by adding \\n
  • You can add a new language simply by copying one of existing language (with {}) to the end of file (before the last ]) and translating all values

Note: make sure you don't delete argumensts {0}, {1}, ... in message and please restart python script to apply changes

Currently available languages:

  • ๐Ÿ‡บ๐Ÿ‡ธ English
  • ๐Ÿ‡ท๐Ÿ‡บ ะ ัƒััะบะธะน
  • โ€โ˜ ๏ธ ะขะพั„ะธะนัะบะพะฒั‹ะน
  • ๐Ÿ‡ฎ๐Ÿ‡ฉ Bahasa Indonesia
  • ๐Ÿ‡จ๐Ÿ‡ณ ็ฎ€ไฝ“ไธญๆ–‡

If you want to add a language, create a pull request ๐Ÿ’œ


๐Ÿง Running as service on linux

  1. Install Python 3.10, venv and pip
  2. Download source code
  3. Create venv python -m venv venv / python3 -m venv venv / python3.10 -m venv venv
  4. Clone repo
    1. git clone https://github.com/F33RNI/GPT-Telegramus/
    2. cd GPT-Telegramus
  5. Edit config.json
  6. Install systemd
    1. sudo apt-get install -y systemd
  7. Create new service file
    1. sudo nano /etc/systemd/system/gpt-telegramus.service
      [Unit]
      Description=GPT-Telegramus service
      After=multi-user.target
      
      [Service]
      Type=simple
      Restart=on-failure
      RestartSec=5
      
      WorkingDirectory=YOUR DIRECTORY HERE/GPT-Telegramus
      ExecStart=YOUR DIRECTORY HERE/GPT-Telegramus/run.sh
      
      [Install]
      WantedBy=multi-user.target
      
      
  8. Reload systemctl daemon
    1. sudo systemctl daemon-reload
  9. Enable and start service
    1. sudo systemctl enable gpt-telegramus
    2. sudo systemctl start gpt-telegramus
  10. Note: Please use sudo systemctl kill gpt-telegramus and then sudo systemctl stop gpt-telegramus if only sudo systemctl stop gpt-telegramus not working

๐Ÿ“ Running on Raspberry Pi (ARM)

  1. Install Python 3.10 if not installed
    1. sudo apt-get update
      sudo apt-get install -y build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev
      wget https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tgz
      sudo tar zxf Python-3.10.13.tgz
      cd Python-3.10.13
      sudo ./configure --enable-optimizations
      sudo make -j 4
      sudo make altinstall
      
    2. Check version by typing python3.10 -V. After this, you should use python3.10 command instead of python or you can add it to the bashrc by typing echo "alias python=/usr/local/bin/python3.10" >> ~/.bashrc
  2. For ChatGPTProxy, install GO and tls-client
    1. sudo apt-get install golang-go
      
      git clone https://github.com/bogdanfinn/tls-client.git
      cd tls-client/cffi_dist
      sudo GOOS=linux CGO_ENABLED=1 GOARCH=arm64 CC="gcc" /usr/local/go/bin/go build -buildmode=c-shared -o tls-client-arm64.so
      mv ./dist/tls-client-arm64.so /home/pi/.local/lib/python3.10/site-packages/tls_client/dependencies/
      mv ./dist/tls-client-arm64.h /home/pi/.local/lib/python3.10/site-packages/tls_client/dependencies/
      
  3. Build ChatGPTProxy
    1. git clone https://github.com/acheong08/ChatGPTProxy
      /usr/local/go/bin/go build
      
    2. Create and start service as mention in the ๐Ÿ”— Chat-GPT Base URL (proxy) section
  4. Follow the ๐Ÿง Running as service on linux guide

๐Ÿ‹ Running in Docker

WARNING: not tested

From GitHub Package

  1. Clone repo or download config.json and messages.json
  2. Edit the config.json, set options in the files section to the path in the container (/app/config/<FILE_NAME>)
  3. Run the container
    docker run -d -e TELEGRAMUS_CONFIG_FILE="/app/config/config.json" -v <YOUR_CONFIG_FOLDER>:/app/config --name gpt-telegramus --restart on-failure ghcr.io/f33rni/gpt-telegramus:latest
    If you want to try the preview version
    docker run -d -e TELEGRAMUS_CONFIG_FILE="/app/config/config.json" -v <YOUR_CONFIG_FOLDER>:/app/config --name gpt-telegramus --restart on-failure ghcr.io/f33rni/gpt-telegramus:edge

Build Manually

  1. Install Docker
  2. Clone repo
  3. Build container
    docker buildx build -t telegramus --load -f Dockerfile .
  4. Run the container
    docker run -d --name gpt-telegramus --restart on-failure telegramus
    or if you want to use a custom config
    docker run -d -e TELEGRAMUS_CONFIG_FILE="/app/config/config.json" -v <YOUR_CONFIG_FOLDER>:/app/config --name gpt-telegramus --restart on-failure telegramus

๐Ÿ”— Chat-GPT Base URL (proxy)

Default base URL by acheong08/ChatGPT stopped working. Below is an instruction on how to launch your own ChatGPT proxy server (on Linux)

  1. Install GO
    1. sudo apt-get update
    2. sudo apt-get install golang-go
  2. Clone acheong08/ChatGPTProxy repo
    1. git clone https://github.com/acheong08/ChatGPTProxy
    2. cd ChatGPTProxy
  3. Build it
    1. go build
  4. Install systemd
    1. sudo apt-get install systemd
  5. Create service
    1. sudo nano /etc/systemd/system/chatgpt-proxy.service
      [Unit]
      Description=ChatGPTProxy service
      After=multi-user.target
      
      [Service]
      Type=simple
      Restart=on-failure
      RestartSec=5
      
      # Proxy (if needed, or remove this and next line)
      Environment="http_proxy=http://USERNAME:PASSWORD@IP:PORT"
      
      # ChatGPT login
      Environment="OPENAI_EMAIL=YOUR_EMAIL"
      Environment="OPENAI_PASSWORD=YOUR_PASSWORD"
      
      WorkingDirectory=PATH_TO_ChatGPTProxy_DIRECTORY
      ExecStart=PATH_TO_ChatGPTProxy_DIRECTORY/ChatGPTProxy
      
      [Install]
      WantedBy=multi-user.target
      
      
  6. Reload systemctl daemon
    1. sudo systemctl daemon-reload
  7. Enable and start service
    1. sudo systemctl enable chatgpt-proxy
    2. sudo systemctl start chatgpt-proxy
  8. See logs to make sure it's running and see current port
    1. systemctl status chatgpt-proxy
  9. Add it's IP to config.json
    1. ex. "base_url": "http://127.0.0.0:9090/api/",

๐ŸŒŽ Proxy to bypass geo-blocking

NOT TESTED AND MOST LIKELY WILL NOT WORK

I won't respond to the issue if it's related to auto proxy

It is possible to bypass geo-blocking of ChatGPT, EdgeGPT, DALL-E or Bard. GPT-Telegramus includes automatic proxy-list downloading with periodic checks

  1. Set enabled in proxy_automation in config.json to true
  2. Set auto in proxy for modules you want to connect automatic proxy search
  3. Restart app and hope for the best.

GPT-Telegramus will download the proxy list itself and start trying various proxies (see console for logs). Sometimes, searching for a proxy can take a long time. If you think that the found proxy is not suitable, you can restart the bot using the /restart command

  • To use manual proxy, specify tham in http://IP:Port or http://user:password@IP:Port format (even if they are HTTPS proxies) in proxy for modules you need

๐Ÿค– Telegram bot commands

  • ๐Ÿ“„ /start - Welcome message and bot version
  • โ“ /help - Show this message
  • โ†•๏ธ /module - Change module to chat with
  • ๐Ÿงน /clear - Clear chat history
  • ๐ŸŒŽ /lang - Change the language
  • ๐Ÿ†” /chatid - Show your chat_id
  • /style - Bing AI conversation style
  • /chat <Text request> - Request to the default module
  • /chatgpt <Text request> - Request to the ChatGPT module
  • /dalle <Text request> - Request to the DALL-E module
  • /bing <Text request> - Request to the Bing AI module
  • /bingigen <Text request> - Request to the Bing Image Generator
  • /bard <Text request> - Request to the Bard module
  • /gemini <Text request> - Request to the Gemini module

Admin commands:

  • ๐Ÿ’ฌ /queue - Show requests queue
  • ๐Ÿ”ƒ /restart - Restart proxies and telegram bot
  • ๐Ÿ‘ค /users - Show list of all users
  • ๐Ÿ”จ /ban <id> [reason] - Ban a user by their id with reason (optional)
  • ๐Ÿ”“ /unban <id> - Unban a user by their id
  • ๐Ÿ“ข /broadcast <message> - Send text message to everyone except banned users

๐Ÿ“„ Chat history

GPT-Telegramus saves chat history for some modules locally ("conversations_dir": "conversations") to keep conversation with users


๐Ÿ“œ Data collecting

GPT-Telegramus has a built-in data collecting function (request and response)

  • For ChatGPT, EdgeGPT (aka Bing AI), Bard and Gemini response is saved as plain text and Base64-encoded images
  • For DALL-E and Bing Image generator response is saved as Base64-encoded image (in the same text file)

You can enable and configure data collection in config in data_collecting block

NOTE: Please make sure you notify your bot users that you are collecting data


๐Ÿ“ TODO

  • Add some free GPT-4 model
  • Add image input and generation for EdgeGPT (and ChatGPT?)
  • Add Bard's text-to-speech
  • Add an API, so you can use GPT-Telegramus from outside the bot

โœจ Contribution

  • Anyone can contribute! Just create a pull request

๐Ÿšง P.S. This project is still under development!

  • If you find a bug in GPT-Telegramus, please create an Issue

gpt-telegramus's People

Contributors

f33rni avatar hanssen0 avatar skrashevich avatar alfsoft avatar wahitftry avatar sprav04ka avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.