Debian/Ubuntu and derivatives:
# Tested on Ubuntu 16.04. (please use release "stable", isn't working on stretch/testing)
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get autoremove && sudo apt-get autoclean && sudo apt-get install git redis-server libconfig8-dev libjansson-dev lua5.2 liblua5.2-dev lua-lgi glib-2.0 libnotify-dev libssl-dev libssl1.0.0 make libstdc++6 -yArch:
sudo yaourt -S git redis-server libconfig8-dev libjansson-dev lua5.2 liblua5.2-dev lua-lgi glib-2.0 libnotify-dev libssl-dev libssl1.0.0Fedora:
sudo dnf install git redis-server libconfig8-dev libjansson-dev lua5.2 liblua5.2-dev lua-lgi glib-2.0 libnotify-dev libssl-dev libssl1.0.0After those dependencies, lets install the bot
git clone https://github.com/Josepdal/DBTeamV2.git
cd DBTeamV2
chmod +x launch.sh
./launch.sh install
./launch.sh # Will ask you for a phone number & confirmation code.Un Dockerfile y .dockerignore están incluidos para ejecutar el bot en un contenedor basado en Ubuntu con lua5.2 y luarocks.
Construir la imagen:
docker build -t dbteamv2 .Ejecutar (ejemplo, usando LibreTranslate por defecto):
docker run -e TRANSLATE_PROVIDER=libre -v $(pwd):/app -it dbteamv2Para usar DeepL dentro del contenedor:
docker run -e TRANSLATE_PROVIDER=deepl -e TRANSLATE_API_KEY=your_key_here -v $(pwd):/app -it dbteamv2Se ha añadido un módulo lang/translator.lua que soporta LibreTranslate (por defecto) y DeepL.
-
Para generar una versión traducida del archivo base
lang/english_lang.lua, envía el comando al bot:/translate
Ejemplo:
/translate en esgenerarálang/es_lang.lua(archivo de salida:lang/es_lang.lua). -
El proveedor por defecto es
libre. Para cambiarlo usa la variable de entornoTRANSLATE_PROVIDER(libreodeepl). Para DeepL defineTRANSLATE_API_KEY. -
Si prefieres traducir varios archivos o usar otro archivo base, modifica el comando en
plugins/commands.luao ejecuta el traductor directamente:
local t = require('lang.translator')
t.translate_file('lang/english_lang.lua', 'lang/es_lang.lua', { provider = 'libre', source = 'en', target = 'es' })- LibreTranslate públicos pueden tener límites; considera desplegar tu propia instancia de LibreTranslate o usar DeepL para mayor robustez.
- Archivos generados por traducción sobrescriben/crean
lang/<target>_lang.lua.
Además del cliente TDLib/telegram-cli, este proyecto incluye un adaptador mínimo para la Telegram Bot API (bot/bot_api_adapter.lua). Es útil para pruebas rápidas con un Bot token (no requiere TDLib ni sesión telefónica).
- Para usarlo, exporta
BOT_TOKENy ejecutalaunch.sh(el script arranca el adaptador automáticamente si detectaBOT_TOKEN):
export BOT_TOKEN=123456:ABC-DEF...
./launch.sh- También puedes ejecutar el adaptador directamente:
BOT_TOKEN=123456:ABC-DEF... lua bot/bot_api_adapter.lua- Notas sobre el adaptador:
- Implementa long-polling con
getUpdatesy convierte cadamessageen la estructura interna usada por el bot, llamandotdcli_update_callback. - Reemplaza
tdcli_functionpor una versión adaptada que soporta al menosSendMessage,DeleteMessageySearchPublicChata través de la Bot API. No cubre todas las llamadas de TDLib; si tus plugins usan otras funciones deberás ampliar el mapeo. - El adaptador es para pruebas y desarrollo; para producción se recomienda TDLib o un diseño con webhooks.
- Implementa long-polling con
También se incluye un adaptador webhook en Lua (bot/webhook_adapter.lua) que expone un servidor HTTP simple para recibir webhooks de Telegram y convertirlos en actualizaciones internas del bot. Uso recomendado para entornos donde puedas exponer HTTPS (por ejemplo mediante ngrok o un proxy con certificado).
- Para usar el webhook adapter exporta
BOT_TOKENyWEBHOOK=1y (opcional)WEBHOOK_PORTantes de ejecutarlaunch.sh:
export BOT_TOKEN=123456:ABC-DEF...
export WEBHOOK=1
export WEBHOOK_PORT=8443 # opcional, por defecto 8080
./launch.sh- Telegram exige HTTPS para webhooks. Si desarrollas localmente usa
ngroko similar para exponerhttp://localhost:PORTcomohttps://...y luego registra el webhook consetWebhook:
curl -X POST "https://api.telegram.org/bot$BOT_TOKEN/setWebhook" -d "url=https://<your-ngrok-url>/" - El adaptador HTTP incluido es intencionalmente simple (desarrollos/test). Para producción se recomienda recibir webhooks detrás de un proxy HTTPS o usar un servidor más robusto.