Seit 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?

photo_2016-02-18_02-23-58

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:

photo_2016-02-18_02-27-20

Flattr this!