A telegram bot which answers with rendered .svg files in .png format.
Using terrastruct/d2 for generating .svg files from messages.
$ cp config.json.sample config.jsonand edit:
{
"allowed_ids": ["telegram_username_1", "telegram_username_2"],
"monitor_interval": 5,
"theme_id": 0,
"sketch": false,
"is_verbose": false,
"bot_token": "xxxxxxxxyyyyyyyy-1234567"
}bot_tokencan be obtained from bot fatherallowed_idsare ids of allowed telegram users who can get responses from this botmonitor_intervalis the polling interval (in seconds) from telegram APItheme_idcan be retrieved from these files (= 0 for default)sketchis whether to render results in sketched styleis_verboseis whether to print verbose messages
You can use Infisical for retrieving your bot token and api key:
{
"allowed_ids": ["telegram_username_1", "telegram_username_2"],
"monitor_interval": 5,
"theme_id": 0,
"sketch": false,
"is_verbose": false,
"infisical": {
"client_id": "012345-abcdefg-987654321",
"client_secret": "aAbBcCdDeEfFgG0123456789xyzwXYZW",
"project_id": "012345abcdefg",
"environment": "dev",
"secret_type": "shared",
"bot_token_key_path": "/path/to/your/KEY_TO_BOT_TOKEN",
}
}Playwright is needed for exporting .png files:
$ npx playwright install-deps$ go build
$ ./telegram-d2-bot config.jsonCreate a file named /etc/systemd/system/telegram-d2-bot.service:
[Unit]
Description=Telegram D2 Bot
After=syslog.target
After=network.target
[Service]
Type=simple
User=ubuntu
Group=ubuntu
WorkingDirectory=/dir/to/telegram-d2-bot
ExecStart=/dir/to/telegram-d2-bot/telegram-d2-bot [CONFIG_FILEPATH]
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
and make it run automatically on booting:
$ sudo systemctl enable telegram-d2-bot.service
$ sudo systemctl start telegram-d2-bot.service- Add more configurable options.
- Support uploading .d2 files.
- Respond with .png files. (Playwright is needed)
