Partido Interdimensional Pirata
Barca Porteña
Puerto Pirata / Congreso / CABA

{cyborgs de Telegram}
Mejor gestión de redes
para boludear más rápido y mejor
t.me/Gahen0 // signal: gahen.07
Configuramos el ambiente local de desarrollo
Instalamos NVM, nodejs y typescript
Escribimos un bot básico que responde en espejo
Instalamos las dependencias globales
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
# o bien
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
source ~/.bashrc
nvm install stable
nvm use stable
nvm list
npm install -g typescript ts-node
# LINUXEANDO
Same pero dependencias *locales*
mkdir nuevo-bot
cd nuevo-bot
npm init
# sí a todo ...
npm i --save telegramsjs
echo '{}' > tsconfig.json # eeeeeeeeeehhhhhh
echo 'console.log("anda!")' > index.ts
ts-node index.ts
# anda!
# LINUXEANDO

Creamos el bot con @botfather
# bot-fathering
// Traemos la biblioteca que vamos a usar
import { TelegramClient } from "telegramsjs";
// el token que nos dio Telegram
const BOT_TOKEN = "123456:asoidhlalazxc1p23";
const client = new TelegramClient(BOT_TOKEN);
// Nos conectamos con la API de telegram usando
// las credenciales de antes
client.login()# CODEANDING
Conexión a la API
client.on("ready", async ({ user }) => {
await user.setCommands([
{
command: "/start",
description: "Comando de inicio (no hace nada)",
},
]);
console.log(`¡Bot @${user.username} está listo!`);
});
client.on("message", async (messageEvent) => {
if (!messageEvent.content || !messageEvent.chat) {
return;
}
client.sendMessage({
chatId: messageEvent.chat.id,
text: messageEvent.content})
});Definición de eventos
# CODEANDING
[Unit]
Description=Nombrebot unit service
[Service]
ExecStart=/opt/bots/nombrebot/app/index.ts
Restart=always
User=nombrebot
Group=nombrebot
Environment=PATH=/opt/bots/nombrebot/.nvm/versions/node/v24.11.1/bin:/usr/bin:/usr/local/bin
# chequear que la versión de nodejs sea la correcta!
Environment=BOT_TOKEN=<replace-with-actual-token>
WorkingDirectory=/opt/bots/nombrebot/app
[Install]
WantedBy=multi-user.targetSystemd unit.service
# CODEANDING
Lo guardamos como unit.service
// Traemos la biblioteca que vamos a usar
import { TelegramClient } from "telegramsjs";
// el token que nos dio Telegram
const BOT_TOKEN = process.env.BOT_TOKEN;
if (!BOT_TOKEN) {
throw new Error("Falta la variable de entorno BOT_TOKEN")
}Sacamos el token del código
# CODEANDING
export BOT_TOKEN="123123:askjdhaskdhlaasdkajsdkasdhkajsdh"
ts-node index.ts
# ¡Bot @nombrebot está listo!
index.ts
Lo probamos en la terminal
Creamos el bot-suario y configuramos los permisos.
Clonamos el código de github usando deploy keys
Lo instalamos en systemd para que funcione 24/7
Dejamos andando la app en el servidor
Configuramos el servidor
sudo su
groupadd bot
mkdir /opt/bots
chmod 770 /opt/bots
chown root:bots /opt/bots
useradd nombrebot -b /opt/bots -s /bin/bash -m -G bot
su nombrebot
ssh-keygen # le decimos que sí a todo
cat ~/.ssh/id_rsa.pub
# ssh-rsa (...) user@host # nos copiamos esta línea
# LINUXEANDO

Configuramos el servicio
# seguimos logueados como "nombrebot".
# Repetimos los pasos de nvm del comienzo.
git clone git@github.com:tucuenta/nombrebot.git
cd nombrebot
npm i
ts-node index.ts
# chequeamos que el output esté OK y salimos con Ctrl + C
exit # volvemos a root
cp unit.service /etc/systemd/system/nombrebot.service
systemctl enable nombrebot
systemctl start nombrebot
journalctl -e
# LINUXEANDO

# PROFIT
PROFIT
{cyborgs de Telegram}
Mejor gestión de redes
para boludear más rápido y mejor
t.me/Gahen0 // signal: gahen.07
Debates
Grog
Galponeo
Code
By gahen
Code
- 41