# Telegram Userbot - Node.js

Progetto Userbot per Telegram utilizzando Node.js con supporto per MadelineProto/GramJS e database MySQL.

## 📋 Prerequisiti

- Node.js (v18 o superiore)
- Docker e Docker Compose
- Account Telegram con API ID e API Hash

## 🚀 Installazione

### 1. Installare le dipendenze Node.js

```bash
npm install
```

### 2. Configurare le variabili d'ambiente

Copia il file `.env.example` in `.env` e modifica i valori:

```bash
cp .env.example .env
```

Modifica il file `.env` con le tue credenziali:
- `TELEGRAM_API_ID`: Ottieni da https://my.telegram.org/apps
- `TELEGRAM_API_HASH`: Ottieni da https://my.telegram.org/apps
- Configura le credenziali MySQL come preferisci

### 3. Avviare MySQL e phpMyAdmin con Docker

```bash
docker-compose up -d
```

Questo avvierà:
- **MySQL** sulla porta `3306` (configurabile in `.env`)
- **phpMyAdmin** su `http://localhost:8080` (configurabile in `.env`)

### 4. Accedere a phpMyAdmin

Apri il browser e vai su: `http://localhost:8080`

Credenziali di default (modificabili in `.env`):
- Username: `userbot_user`
- Password: `userbot_password`

## 📦 Dipendenze

- **telegram**: Libreria Telegram per Node.js (GramJS)
- **mysql2**: Client MySQL per Node.js
- **dotenv**: Gestione variabili d'ambiente
- **input**: Input handling per terminale

## 🔧 Utilizzo

### Gestione Sessioni

Le sessioni vengono salvate automaticamente nel database MySQL. Puoi gestire più account Telegram.

#### Creare una nuova sessione

Crea e salva una nuova sessione Telegram nel database:

```bash
npm run create-session
```

Ti verrà chiesto di:
1. Inserire il numero di telefono (con prefisso internazionale)
2. Inserire il codice di verifica ricevuto su Telegram
3. Inserire la password 2FA (se presente)

La sessione verrà salvata automaticamente nel database.

#### Accedere con un account esistente

Seleziona e accedi con una sessione già salvata:

```bash
npm run login
```

Vedrai una lista di tutte le sessioni disponibili e potrai selezionare quella desiderata.

### Altri comandi

```bash
npm start    # Mostra informazioni sui comandi disponibili
npm run dev  # Modalità sviluppo (con auto-reload)
```

## 🐳 Comandi Docker

### Avviare i container

```bash
docker-compose up -d
```

### Fermare i container

```bash
docker-compose down
```

### Visualizzare i log

```bash
docker-compose logs -f
```

### Fermare e rimuovere i volumi (ATTENZIONE: cancella i dati)

```bash
docker-compose down -v
```

## 📊 Database

Il database MySQL salva automaticamente:
- Numero di telefono
- Stringa sessione (criptata)
- User ID, username, nome e cognome
- API ID e API Hash utilizzati
- Data di creazione e ultimo aggiornamento

La tabella `sessions` viene creata automaticamente al primo avvio di MySQL tramite lo script SQL in `mysql/init/01-init-sessions.sql`.

## 📝 Note

- MadelineProto è principalmente una libreria PHP. Per Node.js viene utilizzata la libreria `telegram` (GramJS) che offre funzionalità simili.
- I dati del database MySQL vengono salvati nel volume Docker `mysql_data` e persistono anche dopo lo stop dei container.
- Le sessioni sono salvate nel database e possono essere riutilizzate senza dover reinserire il codice di verifica.
- Per ottenere API ID e API Hash: https://my.telegram.org/apps

## 🔒 Sicurezza

- Non committare il file `.env` nel repository
- Cambia le password di default in produzione
- Usa password complesse per MySQL


