Telegram bot using EdgeGPT unofficial API (archived)
909
Telegram bot using EdgeGPT unofficial API
Do you want an original and imaginative response? (Creative style powered by gpt4) Or more informative and friendly? What about a more concise and straightforward answer?
Automatic-Speech-Recognition powered by AssemblyAI or Whisper (OpenAI)
You can continue conversations from your private chat
Content:
Commands available to every user are set automatically. However, there are some commands that are hidden:
/unlock <passwd> - Unlock bot functionalities with a password
Be careful with /history_update. History will be recreated, removing ownership and moving the ownsership to admin1 (if multiple admins are present, to the first one)
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.
Install python dependencies.
$ pip install -r requirements.txt
If you want to contribute, install development dependencies as well.
$ pip install -r dev_requirements.txt
Create 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.pem
Create a directory named config to store bot configuration files.
Copy templates/config.json to config directory. Change values
according to your configuration.
$ mkdir config
$ cp templates/config.json config/config.json
config.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 ]🆕 remove_chats_on_stop:
true/falsedelete/keep chats after bot stop/restart (⚠️ WARNING ⚠️: chats retrieved from Bing with /history_update will be deleted as well if you enable this feature).🆕 history:
true/falseto enable/disable chat history.- cookies: List of file paths to cookies
"cookies": [ "config/cookies.json", "config/cookies2.json" ]
Run the bot.
$ chmod +x src/edge.py
$ src/edge.py
Note: If you run the bot in port 80, it may be needed to run the bot as superuser (sudo)
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
$ docker run -d -it --name edgegpt -v ./config:/edgegpt/config scmanjarrez/edgegpt-telegram-bot
docker-compose.yml file provided.
$ docker compose up -d
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 *py
If you are using flake8, add E203 to .flake8 ignore list
[flake8] extend-ignore = E203
$ pre-commit install
$ pre-commit run --all-files
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", ],
You find this bot helpful and want to support me?
Copyright (c) 2023 scmanjarrez. All rights reserved.
This work is licensed under the terms of the MIT license.
For a copy, see LICENSE.
Content type
Image
Digest
sha256:e1223b9d2…
Size
122.2 MB
Last updated
about 3 years ago
docker pull scmanjarrez/edgegpt-telegram-bot