Telegram bot using EdgeGPT unofficial API
Content:
- python
Create a bot with @BotFather and set the following commands:
new - Start a new conversation with the bot.
settings - Change bot settings, i.e. language/voice, conversation style, etc.
Hidden commands:
/unlock <passwd> - Unlock bot functionalities with a password
-
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. Copytemplates/config.json
toconfig
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:
true
to run the bot using webhooks.false
to use polling. -
log_level: set level of the logging module. More info: log levels
-
ip: Your server/home IP. Must be accessible from internet.
-
port: Port to receive telegram updates. Allowed ports:
443
,80
,88
and8443
Nginx can be used as reverse in order to use other ports. Copy
templates/nginx.conf
to config and change values according to your configuration.<docker-host-ip>
is the gateway of the containers. Looks like172.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 nginx
-
cert: Path to your server certificate (can be self-signed)
-
assemblyai_token: Your AssemblyAI token, required to use ASR. More info: Supported Languages
-
-
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.
"ids": [ 123123123, 132322322 ]
- password: Password to use with /unlock and gain access to the
bot (only required for the first time)
-
-
Run the bot.
$ python 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
- Use Docker
Install Docker and cocker-compose, put all config file to ./edgebot
and put docker-compose.yml
in current folder.
docker-compose up -d
Note: Only support amd64 and arm64.
Happy to see you willing to make the project better. In order to make a contribution, please respect the following format:
- Imports sorted with usort
$ usort format *py
- Code formatted with black (line lenght 79)
$ black -l 79 *py
If you are using flake8, ignore E203 in .flake8
[flake8] extend-ignore = E203
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"
],
}
"python.linting.flake8Args": [ "--ignore=E203", ],
Copyright (c) 2023 scmanjarrez. All rights reserved.
This work is licensed under the terms of the MIT license.
For a copy, see LICENSE.