https://hub.docker.com/repository/docker/desprit/tg-ai-connector/general
# Create file to store whitelisted chats and users
touch /path/to/whitelist.txt
# If you're on Linux
docker run -d --rm \
-v /path/to/config.toml:/app/bot/config.toml \
-v /path/to/whitelist.txt:/app/bot/whitelist.txt \
desprit/tg-ai-connector:1.0.0
# If you're on MacOS M1
docker run -d --rm \
--platform linux/amd64 \
-v /path/to/config.toml:/app/bot/config.toml \
-v /path/to/whitelist.txt:/app/bot/whitelist.txt \
desprit/tg-ai-connector:1.0.0
Map log file from the host to the container if needed:
# Create log file
touch /path/to/log.txt
docker run \
-v /path/to/config.toml:/app/bot/config.toml \
-v /path/to/whitelist.txt:/app/bot/whitelist.txt \
-v /path/to/log.txt:/app/bot/log.txt \
desprit/tg-ai-connector:1.0.0
tail -f /path/to/log.txt
Python 3.10+ is required.
# Install system packages
apt install python3.10-dev python3.10-venv
# Create Virtual environment
python3.10 -m venv venv
# Activate it
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
- OpenAI through Official API
- Dall-E
- ChatGPT
- Text Completion
- Replicate through Replicate
- Midjourney
- Stable Diffusion
- Other networks
Relicate offers many different networks. Initially I was only using image generation but recently discovered a speech-to-text network. Since you need to provide an audio to it, the easiest way I found is to use "reply" in your Telegram chat. Basically you select an audio message, reply to it with /a
command (or whatever command you chose for the openai/whisper
integration) and optionally provide language, for example /a de
.
You may also need to change Bot Privacy settings: https://stackoverflow.com/questions/50204633/allow-bot-to-access-telegram-group-messages
You can whitelist/blacklist users and chats via the config file. Alternatively, set the admin_id and then use bot commands:
/whitelist user_id
/whitelist username
/whitelist chat_id
/blacklist user_id
/blacklist username
/blacklist chat_id
Create config.toml
, fill YOUR_TELEGRAM_TOKEN
and tokens for integrations:
debug = true
[general]
text_history_ttl = 300 # optional, for how long to store user messages, default 5 minutes
text_history_size = 10 # optional, how many messages from each user to keep
[telegram]
bot_token = "YOUR_TELEGRAM_TOKEN"
admin_id = 111 # optional, id of admin user who can whitelist and blacklist chats and users
allowed_users = [123, 234] # optional, a list of users from which messages are allowed
allowed_chats = [345, 456] # optional, a list of changes from which all messages are allowed
[integrations]
[integrations.openai]
api_key = "OPEN_AI_TOKEN" # set it to enable OpenAI integration
max_tokens = 1000 # max tokens to return by OpenAI text models, default 500
[[integrations.openai.networks]]
name = "completion"
version = "text-davinci-003"
command = "t" # Telegram command to trigger Text Completion requests
type = "text"
[[integrations.openai.networks]]
name = "chat"
version = "gpt-4"
command = "c" # Telegram command to trigger ChatGPT requests
type = "text"
[[integrations.openai.networks]]
name = "image"
version = "dalle"
command = "d" # Telegram command to trigger Dall-E requests
type = "text"
[integrations.replicate]
api_key = "REPLICATE_TOKEN" # set it to enable Replicate integration
[[integrations.replicate.networks]]
name = "tstramer/midjourney-diffusion"
version = "436b051ebd8f68d23e83d22de5e198e0995357afef113768c20f0b6fcef23c8b"
command = "m" # Telegram command to trigger Midjourney requests
type = "image"
[[integrations.replicate.networks]]
name = "stability-ai/stable-diffusion"
version = "f178fa7a1ae43a9a9af01b833b9d2ecf97b1bcb0acfd2b1c1c1c1c1c1c1c1c1c"
command = "s" # Telegram command to trigger Stable Diffusion requests
type = "image"
[[integrations.replicate.networks]]
name = "cjwbw/anything-v3.0"
version = "f410ed4c6a0c3bf8b76747860b3a3c9e4c8b5a827a16eac9dd5ad9642edce9a2"
command = "anything" # Telegram command to trigger requests to cjwbw/anything-v3.0
type = "image"
[[integrations.replicate.networks]]
name = "cjwbw/portraitplus"
version = "629a9fe82c7979c1dab323aedac2c03adaae2e1aecf6be278a51fde0245e20a4"
command = "portraitplus" # Telegram command to trigger requests to cjwbw/portraitplus
type = "image"
[[integrations.replicate.networks]]
name = "openai/whisper"
version = "e39e354773466b955265e969568deb7da217804d8e771ea8c9cd0cef6591f8bc" # Telegram command to trigger requests to openai/whisper speech-to-text model
command = "a"
type = "audio"
Explore Replicate website to find more models.
# Start bot
make start
# Check logs
tail -f log.txt
# Start bot
python -m src.bot &
# Stop bot
make stop
# Test bot is alive
/ping
# Show available commands
/help
ChatGPT and Text Completion stores history of requests which can be manually cleaned using clear
command.
/p clear
- A request to the Telegram API was unsuccessful. Error code: 409. Description: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running
You have another bot running on the background. Stop it with make stop
, if it doesn't work find that process and kill it manually:
ps aux | grep "src.bot"
kill -9 <PID>