Photo uploader per Telegram

Programmino minimale in nodejs per poter salvare su un server foto inviate tramite Bot Telegram

Soluzione in NodeJS puro

Il modulo nodejs usato è botgram:

Per installarlo sul server Linux:

npm install -g botgram

Questo è il sorgente:

// Photo bot
// sudo npm install -g botgram
// https://github.com/jmendeth/node-botgram

var botgram = require("botgram");
var fs=require("fs");
var bot = botgram("Insert your Token here...");

bot.command("start", function (msg, reply, next) {
  reply.text("Ciao sono il photo bot manda le foto da archiviare..");
});

bot.photo(function (msg, reply, next) {
	reply.markdown("Foto ricevuta");
	// Invia uno sticker
	// Per sapere gli ID degli sticker usa questo Bot
	// https://telegram.me/GetStickerIdBot
	reply.sticker("CAADAQAD1gMAAmEkzgAB-Fd_OiHCc-kC");

	// Invia un messaggio di conferma ricezione
	// Andrebbe perfezionato con l'invio di conferma
	// di memorizzazione
	bot.fileLoad(msg.image.file.id, function (err, buffer) {
		if (err) throw err;
		// Salva le photo foto ricevute nel fs locale
		fs.writeFile(msg.image.file.id + ".jpg", buffer);
		
		// Salva un file json con le info ricevuto da Telegram
		var json = JSON.stringify(msg);
		fs.writeFile(msg.image.file.id + ".json", json,'utf8');
	});
});

Sergio Tanzilli (Autore - Progettista hw & sw - Imprenditore - Musicista dilettante, classe 1964)
Fondatore di Area SX srl, Acme Systems srl e del TanzoLab, si occupa dal 1974 di elettronica digitale, dal 1978 di microprocessori, dal 1992 di microcontroller, dal 1995 di Linux e pubblicazioni su Web, dal 2005 di progettazione, produzione e commercializzazione di schede Linux Embedded.
http://www.tanzilli.com - http://www.acmesystems.it - https://github.com/tanzilli - sergio@tanzilli.com

Soluzione in NodeRED

Palette utilizzato:

ClipBoard per l'importazione:

[{"id":"ef45d564.5e4668","type":"telegram command","z":"1b884cc0.45a903","name":"/start","command":"/start","bot":"40fc04bc.f4d53c","x":237,"y":116,"wires":[["9c13583a.7d8208"],[]]},{"id":"9c13583a.7d8208","type":"function","z":"1b884cc0.45a903","name":"create /start text","func":"var startMessage = \"Ciao \"+msg.originalMessage.from.username+\", benvenuto!\\r\\n\";\nstartMessage += \"sono il photo bot manda le foto da archiviare...\\r\\n\";\n\nmsg.payload.content = startMessage;\nreturn msg;","outputs":1,"noerr":0,"x":447,"y":107,"wires":[["1b49ef38.c6e1f1"]]},{"id":"1b49ef38.c6e1f1","type":"telegram sender","z":"1b884cc0.45a903","name":"send response","bot":"40fc04bc.f4d53c","x":725,"y":103,"wires":[[]]},{"id":"bd5cff9.759b2","type":"telegram receiver","z":"1b884cc0.45a903","name":"","bot":"40fc04bc.f4d53c","saveDataDir":"/home/pi/temp","x":216,"y":246,"wires":[["c050bbd1.a50028","59d7d794.13f308"],[]]},{"id":"c050bbd1.a50028","type":"function","z":"1b884cc0.45a903","name":"respond to photo message","func":"if(msg.payload.type == 'photo')\n{   \n    msg.payload.type = 'sticker';\n    msg.payload.content = 'CAADAQAD1gMAAmEkzgAB-Fd_OiHCc-kC';\n    return msg;\n}\nelse\n{\n    return null;\n}\n","outputs":1,"noerr":0,"x":483,"y":245,"wires":[["1b49ef38.c6e1f1"]]},{"id":"59d7d794.13f308","type":"json","z":"1b884cc0.45a903","name":"","pretty":true,"x":481,"y":344,"wires":[["fec0b0b9.0bdd"]]},{"id":"fec0b0b9.0bdd","type":"file","z":"1b884cc0.45a903","name":"","filename":"/home/pi/temp/logjson","appendNewline":true,"createDir":false,"overwriteFile":"false","x":753,"y":342,"wires":[]},{"id":"40fc04bc.f4d53c","type":"telegram bot","z":"","botname":"telegramBot","usernames":"","chatids":""}]

Alessio Camaioni (graphic designer - developer)
Socio di Eliografica dove si occupa di grafica e stampa. Appassionato di Tecnologia, Programmazione e Networking.
http://www.eliografica.com · info@lxs.it · Telegram: @LxS77

Links



Le attività del TanzoLab si svolgono ogni mercoledi sera, salvo casi speciali, dalle ore 18:30 presso i locali della Acme Systems srl e consistono in:

  • Talk monotematici a cura di professionisti in vari settori tecnologici
  • Workshop pratici su elettronica embedded, produzione e informatica
  • Progettazione e realizzazione di nuovi prodotti embedded per l'IT

Le attività vengono coordinate tramite questo sito, in cui vengono pubblicati tutti i lavori svolti o in via di sviluppo, e tramite un gruppo Telegram con cui per interagire direttamente via chat con gli altri membri.