Telegram y Scripting

By | 2016-01-26

Hace un tiempo empece a investigar la posibilidad de hacer un “robot” para Telegram – https://telegram.org/ – y encontré un “How to…”, en Instructables,  muy interesante de como realizar tareas automatizadas con un lenguaje llamado LUA – www.lua.org -, así que me puse y esto fue lo que resulto:

function on_msg_receive (msg)
     local directorio_de_trabajo = '[PATH]'
     if msg.out then
         return
     end
     if (msg.text=='ping' or msg.text=='Ping') then
        send_msg (msg.from.print_name, 'pong', ok_cb, false)
     end
     if (string.upper(msg.text)=='AYUDA') then
        local inf = assert(io.open(..directorio_de_trabajo.."/script/ayuda.log", "r"), "Failed to open input file")
        local text = inf:read("*all");
        send_msg (msg.from.print_name, text, ok_cb, false)
     end
     if (string.upper(msg.text)=='RADAR') then
        os.execute('wget http://www.smn.gov.ar/radar/CMAX_240_Z_1_ANIM.gif --directory-prefix='..directorio_de_trabajo..'script/smn')
        send_msg (msg.from.print_name, ' >>> Se adjunta imagen de RADAR del SMN.gov.ar', ok_cb, false)
        send_document (msg.from.print_name, directorio_de_trabajo..'script/smn/CMAX_240_Z_1_ANIM.gif', ok_cb, false)
     end
     if (string.upper(string.sub(msg.text,1,5))=='METAR') then
        local argumento = string.upper(string.sub (msg.text,7))
        if argumento=='' then
                send_msg (msg.from.print_name, ' >>> Falta codigo ICAO de 4 letras.', ok_cb, false)
        else
                local file = 'php [PATH]/script/METAR_TAF_app.php '
                os.execute(file .. argumento)
                local inf = assert(io.open(..directorio_de_trabajo.."/script/metar.html", "r"), "Failed to open input file")
                local text = inf:read("*all");
                send_msg (msg.from.print_name, text, ok_cb, false)
                send_msg (msg.from.print_name, ' >>> Se adjunta archivo', ok_cb, false)
                send_document (msg.from.print_name, ..directorio_de_trabajo..'/script/metar.html', ok_cb, false)
        end
     end
     if (string.upper(string.sub(msg.text,1,5))=='NOTAM') then
        local argumento = string.upper(string.sub (msg.text,7))
        if argumento=='' then
                send_msg (msg.from.print_name, ' >>> Falta codigo local de 3 letras', ok_cb, false)
        else
                local file = 'php /home/cubie/proyecto_telegram_metar/tg/script/NOTAM_app.php '
                os.execute(file .. argumento)
                local archivo = directorio_de_trabajo..'script/notams/notam'..argumento..'.html'
                send_msg (msg.from.print_name, ' >>> Se adjunta archivo', ok_cb, false)
                send_document (msg.from.print_name, archivo, ok_cb, false)
        end
     end
end

En este post pueden encontrar los script de METAR / TAF / NOTAM.

A ver…

os.execute = Ejecuta cosas a nivel OS
send_msg = Envía mensaje
send_document = Envía documento

En Ayuda lo que hace es abrir un archivo “ayuda.log”, lo lee y lo manda como mensaje.

En Radar lo que hace es bajar un GIF y enviarlo como documento ( para que lo puedas ver animado, si lo mandas como imagen es estático ).

En Metar ejecuta un script de PHP el cual arma una pagina llamada metar.html, se lee dicho archivo, se la envía como mensaje de texto y como documento adjunto.

En Notam hace lo mismo que el caso de Metar pero obviamente es otro el script que ejecuta y lo que envía.

Para finalizar, la ejecución de Telegram ( la instalación esta en el how to… ) hay que realizarla de la siguiente manera: bin/telegram-cli -k tg-server.pub -W -s [SCRIPT]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.