🤖 GPT-Telegramus
😋 Support project
Support the project by buying and listening to my music 🎵
- 🟦 Bandcamp
- 🟧 SoundCloud
Or message me if you would like to donate 💰
🤗 Contributors
- 1️⃣ Sprav04ka - Tofii'skovyi' language, Testing, Super beautiful poster, Project Logo, Motivation
- 2️⃣ Hanssen - Markdown parsing, bard images, /chat command, caption fix, loading emoji, dynamic splitting, code block splitting, Gemini module, Docker fix, GitHub actions fix and much much more
- 3️⃣ Sergey Krashevich - Docker, GitHub Actions
- 4️⃣ Wahit Fitriyanto - Indonesian language
- 5️⃣ Alexander Fadeyev - EdgeGPT Fix
- 6️⃣ AnthroAsja - Author of the Belarusian translation
- 7️⃣ Anonymous Samurai - Author of the Ukrainian translation
- 8️⃣ Dunya Jafari - Author of the Persian translation
🏗️ 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
- ChatGPT (ChatGPT by OpenAI): https://chat.openai.com/chat
- Bing chat (EdgeGPT by Microsoft): https://bing.com/chat
- DALL-E (DALLE by OpenAI): https://openai.com/dall-e-2/
- Bard (Bard by Google): https://bard.google.com/
- Gemini (Gemini by Google): https://makersuite.google.com/app/prompts/new_freeform
- acheong08/ChatGPT (API): https://github.com/acheong08/ChatGPT
- acheong08/EdgeGPT (API): https://github.com/acheong08/EdgeGPT
- jacobgelling/EdgeGPT (API): https://github.com/jacobgelling/EdgeGPT
- dsdanielpark/Bard-API (API): https://github.com/dsdanielpark/Bard-API
- acheong08/BingImageCreator (API): https://github.com/acheong08/BingImageCreator
- google/generative-ai-python (API): https://github.com/google/generative-ai-python
- python-telegram-bot (Telegram bot API): https://github.com/python-telegram-bot/python-telegram-bot
❓ Get started
- Install Python 3.10,
venv
andpip
- Download source code
- Create venv
python -m venv venv
/python3 -m venv venv
/python3.10 -m venv venv
- Activate venv
source venv/bin/activate
/venv\Scripts\activate.bat
- Check python version using
python --version
command. It should be 3.10.X - Install requirements
pip install -r requirements.txt --upgrade
- Access the modules you want to use (Generate an API key / access token for ChatGPT / DALL-E / Gemini, save cookies for EdgeGPT / Bard)
- Start ChatGPTProxy for ChatGPT (see 🔗 Chat-GPT Base URL (proxy) section)
- 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 - Create bot at https://t.me/BotFather
- Type Bot's token into
api_key
intelegram
inconfig.json
file - 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.
- Supports conversation style
- 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
-
Install Python 3.10,
venv
andpip
-
Download source code
-
Create venv
python -m venv venv
/python3 -m venv venv
/python3.10 -m venv venv
-
Clone repo
git clone https://github.com/F33RNI/GPT-Telegramus/
cd GPT-Telegramus
-
Edit
config.json
-
Install systemd
sudo apt-get install -y systemd
-
Create new service file
-
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
-
-
Reload systemctl daemon
sudo systemctl daemon-reload
-
Enable and start service
sudo systemctl enable gpt-telegramus
sudo systemctl start gpt-telegramus
-
Note: Please use
sudo systemctl kill gpt-telegramus
and thensudo systemctl stop gpt-telegramus
if onlysudo systemctl stop gpt-telegramus
not working
🍓 Running on Raspberry Pi (ARM)
-
Install Python 3.10 if not installed
-
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
-
Check version by typing
python3.10 -V
. After this, you should usepython3.10
command instead ofpython
or you can add it to thebashrc
by typingecho "alias python=/usr/local/bin/python3.10" >> ~/.bashrc
-
-
For ChatGPTProxy, install GO and tls-client
-
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/
-
-
Build ChatGPTProxy
-
git clone https://github.com/acheong08/ChatGPTProxy /usr/local/go/bin/go build
-
Create and start service as mention in the 🔗 Chat-GPT Base URL (proxy) section
-
-
Follow the 🐧 Running as service on linux guide
🐋 Running in Docker
From GitHub Package
-
Clone repo or download
config.json
andmessages.json
-
Edit the
config.json
, set options in thefiles
section to the path in the container (/app/config/<FILE_NAME>
) -
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
-
Install Docker
-
Clone repo
-
Build container
docker buildx build -t telegramus --load -f Dockerfile .
-
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)
-
Install GO
sudo apt-get update
sudo apt-get install golang-go
-
Clone acheong08/ChatGPTProxy repo
git clone https://github.com/acheong08/ChatGPTProxy
cd ChatGPTProxy
-
Build it
go build
-
Install systemd
sudo apt-get install systemd
-
Create service
-
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
-
-
Reload systemctl daemon
sudo systemctl daemon-reload
-
Enable and start service
sudo systemctl enable chatgpt-proxy
sudo systemctl start chatgpt-proxy
-
See logs to make sure it's running and see current port
systemctl status chatgpt-proxy
-
Add it's IP to
config.json
- ex.
"base_url": "http://127.0.0.0:9090/api/",
- ex.
🌎 Proxy to bypass geo-blocking
NOT TESTED AND MOST LIKELY WILL NOT WORK WITH BARD AND BING AI
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
- Set
enabled
inproxy_automation
inconfig.json
totrue
- Set
auto
inproxy
for modules you want to connect automatic proxy search - 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
orhttp://user:password@IP:Port
format (even if they are HTTPS proxies) inproxy
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