SwissKnifeBot — un ponte tra GitHub Copilot e Telegram. Invia messaggi a Copilot direttamente da Telegram e ricevi risposte in tempo reale.
- Node.js 18+
- Un token bot Telegram (da @BotFather)
- Un account GitHub con accesso a GitHub Copilot
git clone <repo-url>
cd SwissKnifeBot
npm installCrea un file .env nella root del progetto (usa .env.example come riferimento):
TELEGRAM_BOT_TOKEN=il_tuo_token_qui
ALLOWED_CHAT_ID=il_tuo_chat_id_qui
COPILOT_ENABLED=false # true per abilitare Copilot
CMD_ENABLED=true # true per abilitare /cmdOttieni il token da @BotFather su Telegram:
- Apri chat con @BotFather
- Invia
/newbote segui le istruzioni - Copia il token ricevuto
ID della chat autorizzata a usare il bot. Puoi ottenerlo in due modi:
Automatico: Avvia il bot, mandagli un messaggio e lui ti comunicherà il tuo Chat ID nel messaggio di "Accesso non configurato".
Manuale: Usa @userinfobot su Telegram per ottenere il tuo ID.
node bot.jsIl bot partirà e resterà in ascolto su Telegram.
| Comando | Descrizione |
|---|---|
/start |
Messaggio di benvenuto |
/help |
Elenco completo dei comandi |
/ipinfo |
Mostra IP pubblico, posizione, ISP e coordinate |
/weather <città> |
Meteo attuale per una città |
/translate <testo> |
Traduzione italiano → inglese |
/shorten <url> |
Abbrevia un URL con is.gd |
/qr <testo> |
Genera un QR code |
/define <parola> |
Definizione inglese da dizionario |
/sys |
Info sistema (uptime, RAM, CPU, hostname) |
/wakeon |
Mantiene il PC attivo (previene sospensione) |
/wakeoff |
Disattiva il mantenimento PC |
/claude |
Mostra stato Claude Code (in esecuzione / idle / CPU / processi figli) |
/cmd <comando> |
Esegue un comando bash sul server (disabilitabile con CMD_ENABLED=false) |
/info |
Mostra le tue info Telegram (ID, username, chat) |
| qualunque testo | Invia il testo a Copilot e ricevi la risposta (solo se COPILOT_ENABLED=true) |
- ✅ Autorizzazione tramite Chat ID (solo utenti autorizzati)
- ✅ Flag di abilitazione per comandi sensibili (
CMD_ENABLED,COPILOT_ENABLED) - ✅ Comandi disabilitati nascosti da
/help - ✅ Risposte lunghe suddivise automaticamente (limite Telegram: 4096 caratteri)
- ✅ Indicatore "sta scrivendo..." durante l'attesa
- ✅ Gestione errori di base
- ✅ Arresto graceful (SIGINT)
- ✅ Monitoraggio automatico attività Claude (stay‑awake con
caffeinate)
SwissKnifeBot/
├── bot.js # Entry point — routing comandi e startup
├── commands/ # Comandi Telegram (un file per comando)
│ ├── start.js
│ ├── help.js
│ ├── ipinfo.js
│ ├── weather.js
│ ├── translate.js
│ ├── shorten.js
│ ├── qr.js
│ ├── sys.js
│ ├── define.js
│ ├── wakeon.js
│ ├── wakeoff.js
│ ├── claude.js
│ ├── cmd.js
│ └── info.js
├── services/ # Servizi automatici
│ ├── stayAwake.js # Monitora Claude e blocca sleep Mac quando lavora
│ └── claudeUtils.js # Utility per rilevare stato Claude (PID, CPU, processi figli)
├── package.json
├── .env.example
└── README.md
All'avvio del bot parte un monitor che controlla ogni 10 secondi se Claude Code sta attivamente lavorando (CPU > 5% o processi figli in esecuzione). Se sì, avvia caffeinate per impedire lo sleep del Mac. Quando Claude torna in idle, caffeinate viene terminato e lo sleep viene ripristinato.
node-telegram-bot-api— client Telegram@github/copilot-sdk— SDK ufficiale GitHub Copilotdotenv— gestione variabili d'ambiente
