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/Web master/Imprenditore/Musicista dilettante)
Fondatore del TanzoLab e di Acme Systems srl, si occupa di programmazione su sistemi embedded, elettronica digitale, tecnologie web e divulgazione.
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

The TanzoLab Project

Il TanzoLab è una iniziativa senza fini di lucro, nata da un'idea di Sergio Tanzilli socio fondatore di Acme Systems srl nel Novembre 2015, per trasferire ad appassionati di elettronica e informatica, professionisti e aziende nel settore, le conoscenze necessarie per poter creare prodotti embedded adatti per la produzione industriale.

Le attività del TanzoLab si svolgono ogni lunedi 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.