A newer version of the Streamlit SDK is available: 1.57.0
title: EdgeGPTg
emoji: 📈
colorFrom: yellow
colorTo: blue
sdk: streamlit
sdk_version: 1.20.0
app_file: app.py
pinned: false
license: mit
duplicated_from: Danxxcruz/EdgeGPTg
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
Description
Telegram bot using EdgeGPT unofficial API
What can I do?
- Access to Bing Chat without leaving your lovely messaging app!
- Change Bing Chat conversation styles
Do you want an original and imaginative response? Or more informative and friendly? Or you just want a concise and straightforward answer?
- Start multiple conversations and switch between them
- Generate Images using Bing (powered by Dall-E)
- Receive voice messages beside text responses if you don't want to read!
Text-to-Speech powered by Edge-TTS
- Send voice messages directly instead of typing!
Automatic-Speech-Recognition powered by AssemblyAI or Whisper (OpenAI)
- Update configuration settings and Bing cookies directly from the bot!
- Use the bot from any chat using inline queries
You can continue the conversation in your private chat
- Generate images from any chat using inline queries
Content:
Requirements
- python
- git
- ffmpeg (only if you are using whisper)
Bot commands
Commands available to every user are set automatically. However, there are some commands that are hidden:
/unlock <passwd> - Unlock bot functionalities with a password /get <config/cookies> - Retrieve config.json or cookies.json, respectively /update <config/cookies> - Update config.json or cookies.json, respectively /cancel - Cancel current update action
In order to use inline queries, you need to enable them in @BotFather. For ease of use, use the placeholder
type text
Type can be query or image.
Run
Install python dependencies.
$ pip install -r requirements.txtIf you want to contribute, install development dependencies as well.
$ pip install -r dev_requirements.txtCreate a self-signed certificate in order to communicate with telegram server using SSL.
$ openssl req -newkey rsa:2048 -sha256 -nodes -keyout config/nginx.key -x509 -days 3650 -out config/nginx.pemCreate a directory named
configto store bot configuration files. Copytemplates/config.jsontoconfigdirectory. Change values according to your configuration.$ mkdir config $ cp templates/config.json config/config.jsonconfig.json:
settings:
token - Telegram bot token, obtained from @BotFather.
webhook:
trueto run the bot using webhooks.falseto use polling.log_level: set level of the logging module.
ip: Your server/home IP. Must be accessible from internet.
port: Port to receive telegram updates. Allowed ports:
443,80,88and8443Nginx can be used as a reverse proxy in order to use other ports. Copy
templates/nginx.confto config and change values according to your configuration.<docker-host-ip>is the gateway of the container. Similar to172.17.0.1<portX>Can be any port in the user range.
$ cp templates/nginx.conf config/nginx.con $ docker run --rm --name nginx --net host -v ./config/nginx.conf:/etc/nginx/nginx.conf:ro -v ./config/nginx.key:/etc/nginx/nginx.key:ro -v ./config/nginx.pem:/etc/nginx/nginx.pem:ro nginxcert: Path to your server certificate (can be self-signed).
Warning: If you're using a verified certificate, you may receive "certificate verify failed" error. Leave
certpath empty in your config.json
apis:
chats:
- password: Password to use with /unlock and gain access to the
bot (only required for the first time).
"password": "supersecurepassword123" - id: List of telegram IDs allowed in the bot, without password. Obtain
if from bots like @getmyid_bot.
"id": [ 123123123, 132322322 ] - admin: List of telegram IDs allowed retrieve and update configuration files, i.e. config.json, cookies.json.
"admin": [ 123123123 ]
- password: Password to use with /unlock and gain access to the
bot (only required for the first time).
Run the bot.
$ python src/edge.pyNote: If you run the bot in port 80, it may be needed to run the bot as superuser (sudo)
Docker
Manual build
Build the image and bind config directory in the container.
$ docker build . -t edgegpt-telegram-bot --rm
$ docker run -d -it --name edgegpt -v ./config:/edgegpt/config edgegpt-telegram-bot
Dockerhub image
$ docker run -d -it --name edgegpt -v ./config:/edgegpt/config scmanjarrez/edgegpt-telegram-bot
docker-compose.yml file provided.
$ docker compose up -d
Contributing
Happy to see you willing to make the project better. In order to make a contribution, please respect the following format:
- Sort imports with
usort.$ usort format *py - Format your code using
black(line length 79).$ black -l 79 *pyIf you are using flake8, add E203 to .flake8 ignore list
[flake8] extend-ignore = E203
Pre-commit hooks
Installation
$ pre-commit install
Manual execution
$ pre-commit run --all-files
VSCode project settings
VSCode should have the following settings in settings.json:
{
"python.analysis.fixAll": [],
"python.formatting.blackArgs": [
"-l 79"
],
"python.formatting.provider": "black",
"isort.path": [
"usort format"
],
}
If you use flake8, add:
"python.linting.flake8Args": [ "--ignore=E203", ],