WhatsAppBot es una aplicación escrita en Javacript, utiliza Node.js junto a whatsapp-web.js para iniciar un bot. El bot tiene funcionalidades variadas, entre ellas:
- Convierte imágenes, gifs y vídeos en stickers y viceversa
- Busca y reproduce canciones de Spotify (vista previa provista a través de sus APIs) y Youtube (a través de yt-dlp y ffmpeg)
- Busca y reproduce vídeos de YouTube a través de yt-dlp
- Busca la letra de canciones a través de scraping gracias al paquete fetch-lyrics
- Obtén información de Wikipedia (a través de su API)
- Tranforma texto en audio a través de Amazon Polly
- Obtén imágenes de Reddit a través de su API no oficial
- Transforma código LaTeX en imágenes
- Busca y descarga artículos científicos de Sci-Hub
- Busca y descarga archivos de Google Drive
También se provee de comandos especiales para usuarios de pago:
- Menciona a todos los miembros del grupo
- Añade o elimina usuarios del grupo
- Activa o desactiva el bot en grupos en particular
- Conversa con el bot utilizando el modelo 'gpt-3.5-turbo-instruct' de OpenAI
- Genera imágenes a través de Bing Create o la API de Stability AI
Desarrollo en Windows, pero hago deploy en un servidor que utiliza Ubuntu 22.04 así que no deberías de tener mucho problema en caso de ser usuario de Windows.
-
Node.js (nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
-
ffmpeg
sudo apt install ffmpeg
-
yt-dlp
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp sudo chmod a+rx /usr/local/bin/yt-dlp # Make executable
-
sudo apt install imagemagick -y
-
TeXLive
cd /tmp wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz tar -xf install-tl-unx.tar.gz cd install-tl-*/ sudo perl install-tl --no-interaction echo 'export PATH="/usr/local/texlive/2023/bin/x86_64-linux:$PATH"' >> ~/.bashrc source ~/.bashrc pdflatex --version
-
Clonar el repositorio
git clone https://github.com/totallynotdavid/WhatsAppBot
-
Crear un
.env
y agregar las siguientes variables:spotify_client_id
spotify_client_secret
supabase_api_key
supabase_base_url
folder_id
adminNumber
YOUTUBE_API_KEY_1
(puedes aumentar varias keys, el bot rotará entre ellas)NODE_ENV
IMGUR_CLIENT_ID
OPENAI_API_KEY
STABILITY_API_KEY
BING_IMAGE_COOKIE
-
Instalar las dependencias:
npm install
-
Necesitas añadir tus credenciales de Amazon. En Linux, Unix, y macOS:
~/.aws/credentials
. Para Windows:\Users\{usuario}\.aws\credentials
.[default] aws_access_key_id = aws_secret_access_key =
-
Inicia el bot por primera vez:
node index.js
-
Puedes usar pm2 para mantener el bot funcionando continuamente:
pm2 start index.js --cron-restart="*/15 * * * *"
Tip
En mi caso, reinicio el bot cada 45 minutos para evitar acumulación en la memoria RAM, antes, utilizaba un servidor gratuito de Digital Ocean y mucho antes de AWS y al llegar al tope, el servidor se caía y tenía que reiniciarlo manualmente.
El bot funciona interpretando los comandos que empiezan por !
o @
. Puedes redefinirlos en el archivo config.dev.js
y config.prod.js
. Para cambiar entre modos, modifica el valor NODE_ENV
en .env
.
Este proyecto se encuentra bajo la licencia MIT, lo que significa que es de código abierto y cualquier persona puede utilizarlo, modificarlo y distribuirlo libremente.