Das Benachrichtigungssystem von der Konsole zu Telegramm

    In der Vergangenheit gab es oft Situationen, in denen eine anspruchsvolle Aufgabe lange Zeit in Anspruch nahm, aber es ist ratsam, nach dem Ende schnell zu reagieren. Was tun? Natürlich schreibe ein Programm ...


    In der ersten Version wurde einfach notify-send verwendet, die Zeit hat jedoch einige Unannehmlichkeiten für den Prozess gezeigt. Da die Operationen sehr anstrengend waren, wurde das Auto in diesem Moment unbrauchbar und wollte Kaffee trinken gehen. Aber kehren Sie zurück, wenn der Vorgang abgeschlossen ist. Daher ist die Idee eines Programms aufgetaucht, das der Konsolenpipeline hinzugefügt oder wie ein sudo-Programm umschlossen werden kann, und sendet am Ende eine Benachrichtigung an den Chat. Daher wird die Benachrichtigung sowohl auf dem Desktop als auch auf dem Telefon angezeigt.


    Für diejenigen, die nicht lesen wollen, aber versuchen wollen. (Nur Linux)


    1. Registrieren Sie sich beim Bot und holen Sie sich das Token mit dem Befehl / config
    2. Client herunterladen
    3. Rennen!
      wget https://ice2heart.com/snitch
      chmod +x snitch
      SNITCH_USER_ID=<here_is_your_uuid> ./snitch sleep 10

    Server


    Die Idee war einfach: Wir brauchen einen einfachen Server, der die Nachricht erhält und an den Benutzer sendet.


    Und da ich mich nicht mit der Registrierung, Speicherung und Verwaltung von Konten beschäftigen wollte, entschied ich mich, es so zu tun, wie es mir einfach schien (und jetzt scheint es, aber ich bin mir nicht sicher, ob das gut ist).


    Mit einem Bot erhält eine Person eine eindeutige uuid v4, mit der sie dann zum Server geht. Autorisierung auf der Client-Chat-Seite, ich habe nur ein paar uuid-interne IDs.


    Nachdem ich node.js als Server genommen und ein paar Koa, Nedb, Node-Telegram-Bot-Api hinzugefügt hatte, baute ich den Server-Teil zusammen. Die Architektur implizierte anfangs mehr Gateway in den Chats, aber es gab keine Fälle und daher gab es nur noch ein Telegramm.


    Außerdem wollte ich die js-Anwendung nicht direkt im Internet veröffentlichen. Daher fügte ich mit der Magie des Dockers einen Proxyserver-Caddy hinzu. Warum ist er? Weil mir das Format der Konfigurationsdateien gefällt.


    Der Server erwies sich als einfach, aber ausreichend für die Arbeit.


    Daher haben wir eine so einfache Docker-Compose-Datei, wir brauchen auch einen Schlüssel für den Bot, den wir in die .env-Datei einfügen, um unsere Schlüssel nicht im Github zu speichern, was nicht gut ist.


    Für den Start benötigen wir Docker, Docker-Compose und einen Schlüssel für Bot-Carts, um Ihre eigenen zu erhalten. Sie müssen sich mit Botfather in Verbindung setzen .
    Danach ist der Docker-Composer fertig und unser Server ist einsatzbereit.


    Kunde


    Für den Kunden entschied ich mich für den einfachen Grund, dass er in eine Binärdatei geht, die dann leicht verteilt werden kann.


    Es gab zwei Hauptideen bezüglich des Kunden.


    1. Wir bauen in die Pipeline ein, sammeln das Protokoll (nicht implementiert), senden die Nachricht, um die Pipeline zu schließen.
    2. Wir wickeln die Anwendung um, zum Beispiel sudo. Nach Abschluss senden wir ein Protokoll und eine Nachricht mit einem Rückkehrcode.

    Während der Implementierung gab es keine einfache Möglichkeit, den Rückkehrcode des vorherigen Programms in der Pipeline herauszufinden, was die Freude an der Verwendung des Programms in der Pipeline leider verringert.
    Für die Konfiguration habe ich Umgebungsvariablen gewählt, da Sie die Einstellungen problemlos von der Maschine auf die Maschine kopieren können und einfach ersetzt werden können.


    Dadurch wird die Installation so einfach wie möglich.


    1. Wir schwingen eine binäre
    2. Registrieren Sie sich in PATH
    3. Wir setzen die Variable SNITCH_USER_ID mit Ihrer uuid in die Shell-Konfiguration
    4. Fertig, du bist großartig!

    Jetzt können Sie lange Befehle im Formular ausführen snitch makeund am Ende erhalten Sie eine Meldung, dass die Anwendung beendet wurde und wir wissen sogar, ob Sie erfolgreich sind oder nicht.


    Um zu bauen, habe ich ein kleines Skript erstellt, das einfach r genannt wurde. Er wird die Go-App erstellen und durch upx überspringen. Und am Ausgang erhalten wir eine schöne statisch verknüpfte Binärdatei.


    Den Quellcode finden Sie hier.


    Und wenn alles fertig ist, können Sie den Bot mit dem Befehl / config kontaktieren.
    Er erstellt einen Eintrag über unseren Benutzer und gibt uuid zurück.
    Sie können auch immer aus der Datenbank entfernen, dafür gibt es einen Befehl / delete


    So haben wir eine recht einfache, aber effektive Anwendung, die uns auf einfache und natürliche Weise über die erledigte Aufgabe informiert, auch wenn wir Kaffee trinken.


    Jetzt auch beliebt: