Durchsuche Mail und falls Bestimmter Inhalt vorhanden sende Nachricht mittels Telegram/Schicke Nachricht nach reboot

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ja die leerzeilen hab ich beim Einfügen und wieder Rauslöschen der prints zum debuggen wohl versehentlich entfernt. Und dass hier gleich immer aus einer Frage geschlossen wird dass man eine Lösung auf dem Silbertablett serviert haben will finde ich schon fast beängstigend. Ich habe inzwischen schon X mal in so ziemlich jedem Thread den ich erstellt habe erwähnt dass ich keine Fertiglösung bevorzuge sondern gern auch etwas Lernen möchte, daher ne meigrafd das ist für mich nicht Schwein-Sein sondern ein Tip den ich verfolgen kann ;) .

    Ich suche nicht nach einer fertigen Lösung sondern nach dem Weg dahin ;)

  • Durchsuche Mail und falls Bestimmter Inhalt vorhanden sende Nachricht mittels Telegram/Schicke Nachricht nach reboot? Schau mal ob du hier fündig wirst!

  • meigrafd Tja, tut mir leid, dass ich besseres zu tun habe als > 100 Zeilen dicht gequetschten Code nach einem nackten Except abzusuchen. :dau1:

    Apop85 ein paar Leerzeilen hier und da (üblicherweise nach einem Block Code, der "eine Einheit" bildet) würden deinem Code gut tun. Und nie nie nie nie nie ein reines except oder except Exception verwenden. Nie.

    Nie.

    Wegen genau sowas, wenn du eine bestimmte exception erwartest, fang' sie gezielt ab und mache weiter. Wenn du einfach nur allgemeine Fehler unterdrücken willst, lass das Script sterben und fixe sie.

    Das Zen of Python sagt dazu:

    Da das Script via Crontab läuft und sofern korrekt eingerichtet keinerlei Fehlermeldung ausgeben sollte, dient das von mir ihm vorgegebene except Exception, error: als Laufzeitsicherheit... Weil der Exitcode vom Script dann bei 0 bleibt.... Wir erarbeiten hier gemeinsam eine Lösung. Dass man sowas für gewöhnlich nicht machen sollte ist klar und kommentier ich nicht weiter weil:

    Also sorry aber bevor man in einem mehr-als-ein-Beitrag-langen-Thread postet, liest man sich entweder vorher ein oder hält die Klappe.

    Es kommen in letzter Zeit einige Situationen zusammen die mich langsam nerven und Du kriegst das jetzt halt mal ab.

  • Dass es hier keine Privatunterhaltungen in öffentlichen Threads gibt weißt du doch mittlerweile, meigrafd. Und BTW habe auch ich in diesem Thread schon mehrfach geschrieben, seit Beitrag #6.

    Und egal, ob das except von Apop85 kommt oder du das untergeschoben hast, ich werde mich weiterhin aktiv dagegen wehren. Das hat noch nie etwas gutes gebracht.

    Du kriegst das jetzt halt mal ab.

    Kein Problem, komm ich mit klar! :bussi2:

  • Ok habe den Fehler gefunden.

    Die Seite auf welchem die chat-id ausgelesen wird wurde aus irgend einem Grund gereseted. Musste dem Bot nochmals eine Nachricht schicken und tadaaa.... :bravo2:

    Danke meigrafd für den Tipp mit den Zeilen.

    Gibt es sowas öfters oder wie ist/konnte das passieren dass die Daten da gereseted wurden?

    Grüsse

    Edit: Debugausgaben mit auskommentierten Zeilen:

    Code
    Traceback (most recent call last):
      File "/home/pi/scripts/checkmail.py", line 119, in <module>
        check_mails()
      File "/home/pi/scripts/checkmail.py", line 61, in check_mails
        telegram_chat_id = get_last_chat_id(get_updates())
      File "/home/pi/scripts/checkmail.py", line 50, in get_last_chat_id
        chat_id = updates['result'][last_update]['message']['chat']['id']
    IndexError: list index out of range

    Ich suche nicht nach einer fertigen Lösung sondern nach dem Weg dahin ;)

  • Ok habs nun entsprechend umgeschrieben dass die Chatid hardgecoded ist.

    Linus Ich habe das soweit verstanden dass es genau aus dem Grund wie jetzt gerade ungünstig ist das except so zu nutzen da die Fehlerbeschreibungen einfach geschluckt werden. Besser wäre es den Error abzufangen um eine entsprechende Meldung auszugeben damit das Script ned wortlos abschmiert. Ist das so richtig?

    Ich suche nicht nach einer fertigen Lösung sondern nach dem Weg dahin ;)

    Einmal editiert, zuletzt von Apop85 (16. Januar 2018 um 23:13)

  • Reines meckern ist unterste Schublade. Wenn ihr Beiträge macht dann bitte konstruktiv - ansonsten unterdrückt bitte euren python-forum.de-like-style. Werde ich künftig immer wieder kritisieren weils langsam echt nervt.

    Besser wäre es den Error abzufangen um eine entsprechende Meldung auszugeben damit das Script ned wortlos abschmiert.

    Wortlos abschmieren tuts i.d.R. nicht. Besser wäre der entsprechenden Fehlermeldung zu handeln und somit gezielt die möglicherweise auftretenden Fehler abzufangen. In dem Fall war es ein IndexError was man hätte gezielt behandeln würde/könnte.

  • meigrafd ja da kann ich nur zustimmen. Dieser Beitrag von bootsmann ist weder hilfreich noch weiterführend, daher bin ich darauf auch nicht eingegangen.

    Bezüglich dem IndexError müsste dann das inetwa so aussehen?

    Python
    except IndexError as e:
        print(e.args)

    Das müsste mir dann den entsprechenden Index angeben welcher den Error verursacht hat wenn ich das so richtig verstanden habe.

    Ich suche nicht nach einer fertigen Lösung sondern nach dem Weg dahin ;)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!