Mal was neues: Ein LUA-Scripts für einen Telegram-Bot :)
am 18. Februar 2016 um 13:49:55Seit einiger Zeit nutze ich Telegram statt WhatsApp und bin ziemlich begeistert. Irgendwann entdecke ich die Bots. Die Fertigen von zB @botfather Können nicht viel und sind nervig einzurichten. Das ganze hier ist ‚Relativ‘ einfach. Darauf möchte ich auch gar nicht eingehen. Hier gibt es schon eine hervorragende Anleitung. Das ganze läuft bei mir in einen LXC-Container mit Debian 8 als Untergrund.
Nach 3 Tagen fummeln fange ich so langsam an zu verstehen, was Lua macht und ist. Definitiv werde ich mich nun häufiger mal mit LUA befassen :)
Hier also mein erstes Script:
do local command = 'rm -rf /tmp/actual.jpg.jpg*' local function getCam(attempt) attempt = attempt or 0 attempt = attempt + 1 local res,status = http.request('http://krefeldwetter.de/weatherdata/webcam/actual.jpg') -- kein bild vorhanden? if status ~= 200 then return nil end if not data and attempt <= 5 then print('Aktuell kein Bild vorhanden!') return getCam(attempt) end return 'http://krefeldwetter.de/weatherdata/webcam/actual.jpg' end local function run(msg, matches) local url = nil if matches[1] == "!krcam" then -- if not is_sudo(msg) then -- return "Du hast leider keinen Zugriff auf die IP-Kamera!" -- end url = getCam() end if url ~= nil then local receiver = get_receiver(msg) send_photo_from_url(receiver, url) -- Temporaere Dateien loeschen local handle = io.popen(command) else return 'FEHLER!' end end return { description = "Holt ein Aktuelles Bild der IP-Cam aus Krefeld", usage = {"!krcam: Holt ein Aktuelles Bild der IP-Cam aus Krefeld"}, patterns = {"^!krcam$"}, run = run} end |
(Wie man sieht, extremst unordentlich. Also Unordentlicher als sonst so :))
So. Was macht das Script? Nun. Das holt einfach nur ein Webcam-Bild ab. Hier das aus Krefeld und schickt es zurück (Egal ob Gruppenchat oder 1on1-chat. Wenn man die URLs anpasst auf zB:
http://www.berlin.de/webcams/_img/webcam/alex.jpg
Dann ist es halt eine Cam vom Alexanderplatz. Wie sieht das ganze dann im Chat aus?

Im Log sieht das ganze dann so aus:
[02:21] Test peter geher >>> !krcam msg matches: ^!krcam$ Aktuell kein Bild vorhanden! url to download: http://krefeldwetter.de/weatherdata/webcam/actual.jpg Saved to: /tmp/actual.jpg.jpg File path: /tmp/actual.jpg.jpg [02:21] Test peter geher >>> !krcam Not valid: msg from us [02:21] Test Peter Geher >>> [photo] Chat Test marked read 1 outbox and 0 inbox messages msg matches: ^!bcam$ Aktuell kein Bild vorhanden! url to download: http://www.berlin.de/webcams/_img/webcam/alex.jpg Saved to: /tmp/alex.jpg.jpg File path: /tmp/alex.jpg.jpg [02:21] Test peter geher >>> !bcam Not valid: msg from us [02:21] Test Peter Geher >>> [photo] Chat Test marked read 1 outbox and 0 inbox messages > |
So, und was ist jetzt das Auskommentierte? Also das:
– – if not is_sudo(msg) then
– – return „Du hast leider keinen Zugriff auf die IP-Kamera!“
– – end
Ja Nu, man kann einen User (per User-ID) in der Bot-Config als Privilegierten-Benutzer einrichten. Wenn er keiner ist und der Part aktiviert ist, sieht das Ergebnis so aus:
