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.target

Systemd 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