eknoes / covidbot Goto Github PK
View Code? Open in Web Editor NEWMulti-platform messenger bot which provides updates on current COVID19 situation for Germany
Home Page: https://covidbot.d-64.org
License: GNU General Public License v3.0
Multi-platform messenger bot which provides updates on current COVID19 situation for Germany
Home Page: https://covidbot.d-64.org
License: GNU General Public License v3.0
Wäre es möglich, Unterstützung in mehreren Sprachen anzubieten? Die gewünschte Sprache könnte man über einen Befehl setzen. Hilfreich wäre es dafür vermutlich, wenn wir alle Nachrichten, die dem/der Nutzer/in angezeigt werden, in eine Datei auslagern, die dann von weiteren Unterstützer:innen übersetzt werden könnte.
Über bspw. /feedback NACHRICHT sollte man Feedback-Nachrichten hinterlassen können
Derzeit scheinen die Orte nach dem Zeitpunkt des Abonnements sortiert zu werden (Neueste zuerst). Sinnvoller ist eine alphabetische Sortierung, würde ich sagen. Was meinst du?
Mein Eindruck ist, dass die aktuelle Ortsauswahl noch nicht optimal von der Benutzerfreundlichkeit ist. Für viele dürfte das Eintippen von Befehlen (so simpel sie auch sind) eine Hürde darstellen.
Vielleicht könnte man ein Alternativ-System mit Buttons erstellen, welches durch /ort ohne spezifische Angabe getriggert wird? Dann könnten erst die 16 Bundesländer angezeigt werden und danach, nach Auswahl eines Bundeslandes, die Land- und Stadtkreise die es in diesem Bundesland gibt.
Ich glaube, es macht Sinn, Städte und Bundesländer im Bericht optisch voneinander zu trennen.
Vielleicht so:
Insgesamt wurden bundesweit [...] gemeldet.
Bundesländer: [nur anzeigen, sofern welche abonniert sind]
• Hamburg:
• Niedersachsen:Stadt- und Landkreise: [nur anzeigen, sofern welche abonniert sind]
• Kassel:
• Darmstadt:
Bei Signal gibt es ein paar kleinere Formatierungsfehler:
Der Messenger Newsletter aus Baden-Württemberg beinhaltet neben der Inzidenz noch die folgenden Daten. Können wir die auch (auf Stadt- und/oder Landes- und/oder Bundesebene) darstellen?
Corona-Bericht für Baden-Württemberg vom 23. Dezember 2020
Neuinfektionen: 4.391 (gesamt: 221.845)
Verstorbene: 4.330 (+64)
Genesene: 157.624 (+3.002)
Aktuell Infizierte: 59.891 (+1.325)
7-Tage-R-Wert: 1,02
7-Tage-Inzidenz: 204,5
Gesamtbelegung der Intensivkapazitäten: 86,0 % (da sind wir ja schon dran)
Können wir den jeweiligen R-Wert für die Städte auch angeben?
Über Nominatim (siehe #18) sollten auch sowohl eine Ortsangabe über die PLZ als auch ein Mapping von Orten, die selbst keine Stadt- oder Landkreise sind, zu dem dazugehörigen Stadt-/Landkreis recht problemlos funktionieren.
Leider zeigt die Suche nicht unmittelbar den Wert für "county" an, den müsste man dann noch über die Reverse Search mit der ausgegebenen Länge und Breite ermitteln.
Beispiel für PLZ-Suche (69181 ist Leimen im Rhein-Neckar-Kreis):
https://nominatim.openstreetmap.org/search?format=json&countrycodes=de&postalcode=69181
Beispiel für die Suche nach einem Ort, der in einem Landkreis liegt:
https://nominatim.openstreetmap.org/search?format=json&countrycodes=de&city=leimen
Unverbindliche Einschätzung, die ausdrücklich keine Rechtsberatung darstellt!
Problem: Das RKI stellt die Infektionszahlen in einer Excelliste bereit und versieht diese nicht mit einer Lizenz.
Das RKI ist eine selbstständige Bundesoberbehörde i.S.d. Art. 87 Abs. 3 S. 1 GG. Damit gehört es zur mittelbaren Bundesverwaltung, die derzeit nicht in den Anwendungsbereich von § 12a EGovG fällt. Das RKI unterliegt damit keiner originären „Open-Data-Pflicht.
Das RKI veröffentlicht aber freiwillig und proaktiv eine Excelliste. Diese Daten unterfallen dem IWG. Schließlich ist das RKI als selbstständige Bundesbehörde eine „öffentliche Stelle“ i.S.d. § 2 Abs. 1 Nr. 1 lit. b IWG. Da das RKI die Daten veröffentlicht, also jedermann freiwillig zur Verfügung stellt, kommt es nicht mehr darauf an, ob ein Zugangsrecht für die Daten bestünde (BVerwG, Urt. v. 14.4.2016 – 7 C 12/14 (VGH Mannheim).
Dementsprechend gilt § 2a S. 1 IWG „Informationen, die in den Anwendungsbereich dieses Gesetzes fallen, dürfen weiterverwendet werden“. Zwar dürfen öffentliche Stellen bereitgestellte Daten mit sog. Nutzungsbedingungen versehen (§ 4 IWG). Dies gebietet auch die „gute Praxis“. Solche Nutzungsbedingungen schaffen Rechtsklarheit. Soweit die öffentliche Stelle aber keine (einschränkenden) Nutzungsbedingungen erlässt, vermittelt § 2a IWG ipso iure einen ErlaubnisTB, die bereitgestellten Daten zu nutzen. Dass das RKI mutmaßlich ein Datenbankherstellerrecht an diesen Daten inne hat, ist m.E. unschädlich. Zwar sieht das IWG vor, dass Datensätze, die von Urheberrechten, verwandten Schutzrechten oder gewerblichen Schutzrechten Dritter erfasst werden, nicht dem IWG unterfallen (§ 1 Abs. 2 Nr. 4 IWG). Das RKI ist aber öffentliche Stelle i. S. d. § 2 Abs. 1 Nr. 1 lit. b IWG und damit gerade kein Dritter i. S. d. § 1 Abs. 2 Nr. 4 IWG.
Danach dürfen die vom RKI bereitgestellten Daten nach meiner kursorischen Einschätzung weiterverwendet werden.
Zu klären bleibt noch, ob ggf. ein Anspruch auf Bereitstellung der Daten in einem anderen Format besteht. Ein solcher kann sich ggf. originär aus dem IFG ergeben. Zudem könnte sich ein solcher Anspruch auch aus der Art. 5 Abs. 1 PSI-RL 2013 ergeben. Diese setzt das IWG m.E. nicht richtlinienkonform um. Dazu gibt es aber keine Rechtsprechung. Selbst wenn man Art. 5 Abs. 1 PSI-RL 2013 für unmittelbar anwendbar erklärt, könnte sich das RKI aber womöglich auf Art. 5 Abs. 2 PSI-RL 2013 berufen. Ein möglicher Anspruch aus dem IFG hätte die selbe Hürde des „verhältnismäßigen Aufwandes“ zu nehmen, vgl. § 1 Abs. 2 S. 2 IFG Bund.
Womöglich könnte das RKI sich auch auf § 1 Abs. 2 Nr. 6 IWG berufen, um zu begründen, warum es dem IWG nicht unterfällt. Richter, IWG, Kommentar § 1 Rn. 519 führt hierzu aus: „Es muss sich um wissenschaftliche Forschung handelt. Diese umfasst nach Ansicht des BVerfG eine ‚geistige Tätigkeit mit dem Ziel, in methodischer, systematischer und nachprüfbarer Weise neue Erkenntnisse zu gewinnen [BVerfGE 35, 113]. Die Einrichtung muss sich in ihrem niedergelten Zweck nach der Forschung verschrieben haben. Nicht ausreichend ist, wenn ein tatsächlicher Schwerpunkt auf der Forschung liegt.“ Richter § 1 Rn. 520 „Im Zweifelsfall ist die Ausnahme […] in Bezug auf die Forschung eng auszulegen.“ Vgl. auch KOM SEC (2011) 1152 final, 33 f.
[Subsumtion des RKI unter diese VSS überlasse ich euch. Ich gehe aber nicht davon aus, dass sich das RKI darauf berufen kann, da es neben seinem Zweck nach weniger der Forschung, als vielmehr der Gefahrenabwehr zu dienen scheint, vgl. Wikipedia.].
Aus demselben Grund ist das RKI wohl auch eine „Einrichtung für den Transfer von Forschungsergebnissen“ i. S. d. § 1 Abs. 2 Nr. 6 IWG.
Die DIVI stellt ihre Zahlen für die Intensivbettenbelegung nicht allgemein frei lizenziert bereit, sondern man immer explizit anfragen muss (und wir darauf seit drei Wochen keine Antwort erhalten).
Die DIVI ist ein e.V. Die Mitglieder bestehen aus Ärzten, also Privatleuten. Einige dieser Ärzte arbeiten bei Krankenhäusern in öffentlich-rechtlicher Trägerschaft. Das trifft aber sicher nicht auf alle Mitglieder zu. Eine Konstruktion eines Anspruchs aus einem IFG oder dem IWG gegenüber DIVI ist dann wohl nicht möglich.
Gegenüber den öffentlich-rechtlichen Trägern könnte man Informationszugangsansprüche nach dem jeweiligen Landes-IFG gelten machen. Ein Anspruch auf Weiterverwendung der Daten ergibt sich dann aus § 2a IWG. Gegenüber Krankenhäusern in privater Trägerschaft könnten auch Ansprüche aus dem jeweils geltenden Landes-IFG bestehen. Private Einrichtungen unterfallen dem IFG regelmäßig aber nur soweit eine Behörde sich dieser Person zur Erfüllung ihrer öffentlich-rechtlichen Aufgaben bedient (Vgl. § 1 Abs. 1 S. 3 IFG Bund; viele Landes-IFG sind an diese Regelung zumindest angelehnt). Ob dies der Fall ist, kann ich mangels Kenntnis des „Krankenhausrechts“ aber nicht beurteilen.
Sofern ein Krankenhaus dem Anwendungsbereich eines Landes-IFG unterfällt, besteht grds. ein Anspruch auf Zugang zu der Information. Dieser darf nur gestützt auf einen Ausnahmegrund verweigert werden. Ohne nähere Prüfung gehe ich aber nicht davon aus, dass es sich bei den Informationen um besonders schutzwürdige Informationen handelt, die etwaigen Ausnahmegründen nach den Landes-IFG unterfallen. Ich gebe aber zu bedenken, dass ein solcher Anspruch notfalls eingeklagt werden müsste.
Informationen müssen grds. in dem angefragten Format bereitgestellt werden, es sei denn, für die Behörde ist damit ein „unverhältnismäßiger Aufwand“ verbunden. Hier würde ich davon ausgehen, dass ein Gericht sich schwer damit tuen sollte, einen solchen Aufwand zu erkennen. Schließlich ist davon auszugehen, dass die Informationen von DIVI gleichsam nicht händisch zusammengetragen werden, sondern in entsprechenden Formaten bereitgestellt werden. Das ist natürlich aber nur eine Annahme.
Aktuell bekommt man beim /start den langen Hilfetext angezeigt - das schreckt imho ab. Wir könnten einen interaktiven Start ermöglichen, also nach dem Motto:
Das RKI stellt die Zahlen für das Impfquotenmonitoring derzeit leider nur als Excel-Datei und ohne explizite Nennung einer Lizenz zur Verfügung.
Eine Anfrage bzgl. der Verwendung und das Bereitstellen über eine standardisierte Schnittstelle wurde am 10. Januar 2021 an das RKI gesendet.
Falls es keine Lizenzprobleme gibt, wie aufwendig wäre es, die Zahlen der Excel-Datei automatisiert zu verarbeiten, @eknoes? Die URL der Datei scheint derzeit stabil zu sein.
Wir könnte für alle Werte den Trend (also Vergleich zu gestern oder - vermutlich besser - Vergleich zu vor exakt sieben Tagen (also dem gleichen Wochentag vor einer Woche)) durch Emojis vor oder nach dem Wert anzeigen (bspw.
Currently, graphs are cached in-memory, so every messengerbot uses its own Cache. We should use a shared file-based cache.
Wir könnten zu den Berichten Grafiken generieren, damit man die Anzahl der Neuinfektionen besser einordnen kann. Bspw mit matplotlib
Aktuell checken wir alle 15 Minuten, ob das RKI neue Daten meldet. Dies ist ein Prozess, der vom Telegrambot angestoßen wird. Schöner wäre imho:
Für Threema und ggf. später auch Mail relevant: Nutzer:innen müssen erst freigeschaltet werden, entweder von uns (Threema) oder über einen Link zur Aktivierung (Mail).
Die Trends sollten eigentlich immer mit Ihrem Pendant vor einer Woche verglichen werden, richtig?
Das scheint bei den Bundesangaben nicht ganz zu funktionieren:
Corona-Bericht vom 20.01.2021
Insgesamt wurden bundesweit 15.974 Neuinfektionen
↗️ und 1.148 Todesfälle↗️ gemeldet.
Corona-Bericht vom 27.01.2021
Insgesamt wurden bundesweit 13.202 Neuinfektionen
↗️ [falsch, gesunken] und 982 Todesfälle↗️ [falsch, gesunken] gemeldet. Die 7-Tage-Inzidenz liegt bei 100,95↘️ [kann ich gerade nicht verifizieren].
Viele Kommunen veröffentlichen ihre Corona-Beschränkungen über das Katastrophenwarnsystem des Bundes (wird dann bspw. über NINA angezeigt). Vielleicht kann man das System anzapfen, so dass für die abonnierten Orte auch diese Meldungen angezeigt werden.
Eine offizielle API gibt es leider nicht, aber diese JSON-Datei (Hintergrund). Die Meldungen selbst sind auch nicht urheberrechtlich geschützt (§ 5 UrhG), die Datenbank als solche könnte aber Schutz genießen (dann dürften wir nicht ohne Erlaubnis drauf zugreifen). Wir könnten die Rechtsauffassung des Bundesamts für Bevölkerungsschutz und Katastrophenhilfe (BBK) anfragen, ggf. könnte man auch FragDenStaat bzw. die OpenKnowledgeFoundation um Unterstützung in der Angelegenheit bitten.
Ergänzend zu #17 wäre auch eine Ortsauswahl durch das Übersenden des aktuellen GPS-Standortes sehr komfortabel.
Alle außer uns melden nur 9847 Neuinfektionen, wir über 19.000
Wir gewinnen aktuell viele neue Nutzer:innen. Die meisten schließen lediglich ein Abo ab, bedanken sich bei den Freund:innen die es ihnen empfohlen haben.
Ich glaube, es ist nach dem aktuellen /start nur wenigen klar, dass man:
Andererseits war unser /start vorher so überfrachtet, dass man ihn einfach kaum gelesen hat.
Ich denke wir sollten
Leider können wir /start kaum interaktiver machen. Was mein Vorschlag da wäre:
Wenn die Person ihr erstes Abo abschließt, dann sollte die Nachricht slightly anders sein, vom Inhalt in etwa:
Danke für dein erstes Abo! Du kannst beliebig viele abschließen oder Daten nachsehen, sende einfach weitere Orte. Wie du uns Feedback senden kannst, die beliebtestesten Orte abcheckst, XXXX kannst du unter /hilfe nachsehen
Wenn wir das haben, könnten wir vielleicht Anfang nächster Woche den Newsletter vom letzten Mal passend modifizieren und an alle herausschicken, die seit dem letzten Newsletter dabei sind.
Bei manchen Fehlern, gerade in der Datenbank, sollten wir eine Antwort an den Nutzer senden á la "Es tut mir Leid, aber ein Fehler ist aufgetreten. Bitte versuche es später nochmal!". Aktuell gibt es da gar keine Benachrichtigung.
Welche der Daten, die der Bot verarbeitet (Name, abonnierte Orte, Nachrichten im Chat an den Bot u.ä.), sind für uns einsehbar?
Um Code + Text mehr zu entkoppeln, wäre das nutzen von Templates praktisch, bspw. über https://mustache.github.io/
Auch für #10 cool, weil man dann einfach verschiedene Dateien hätte in denen die Nachrichten übersetzt sind -> Andererseits müsste man dann auch in allen Dateien die Änderungen nachvollziehen, wenn die Struktur verändert werden soll.
Bei Fehlern sollte es eine Nachricht an uns geben, damit wir sie früher bemerken - bisher hing es meist an der Datenbankverbindung, d.h. Nachrichten sollte der Bot trotzdem versenden können!
Bisher nicht implementiert, Exceptions werden nur geloggt: https://github.com/python-telegram-bot/python-telegram-bot/wiki/Exception-Handling
Es sollte einen Befehl geben, um das bestehende Nutzerprofil zu löschen (also alle Orte zu entfernen). Danach sollte der Befehl /start ausgelöst werden.
Aktuell ist die Konfiguration in zwei Dateien (apikey, db_secret) sowie innerhalb des Codes fix. Alles in einem ini-File ist sauberer.
Ich finde das Logo nicht ganz optimal, mir ist es etwas zu dunkel und zu detailreich für ein kleines Icon. Was hältst du von diesem?
Wir sollten die Daten mehr erläutern (Woher kommen sie, wie kann man sie vergleichen, welche Aussagekraft, etc.) Dafür sollten wir aber einen neuen Befehl einführen, und im Bericht auf diesen verweisen und dafür die Erläuterungen weglassen.
Es wäre gut, wenn wir im Einleitungstext neben den Infektionen und Todesfällen auch die bundesweite Inzidenz angeben würden.
Siehe https://github.com/python-telegram-bot/python-telegram-bot/wiki/Avoiding-flood-limits
Müssen wir dringend implementieren, damit unser Bot nicht versehentlich gesperrt wird.
Das Matching der Stadtnamen ist aktuell billig. Sie sehen jetzt besser aus, also statt bspw. SK Kassel und LK Kassel gibt es Kassel (Kreisfreie Stadt) und Kassel (Landkreis), aber Kassel Stadt
matched bspw. nicht.
Die Buttons scheinen gut zu funktionieren, wenn die Angabe des Stadt- oder Landkreises nicht eindeutig ist und man sie deshalb mit einem Button auswählt (bspw. bei "Kassel" -> "Kassel (Kreisfreie Stadt)").
Ist die Angabe eindeutig (bspw. bei "Heidelberg"), treten die folgenden Fehler auf:
Wird aktuell nicht versandt, wir warten auf: lwesterhof/semaphore#24
Wäre eine hilfreiche Angabe, leider scheint die entsprechende Spalte vom RKI nicht gepflegt zu werden. Vielleicht Kontakt mit dem RKI aufnehmen, warum das der Fall ist?
Ob statistisch alle als genesen erfasst werden, die seit 14 Tagen nicht gemeldet wurden, bin ich ziemlich skeptisch. Zum einen sind noch die Todesfälle zu berücksichtigen, zum anderen würden schwerere Krankheitsverläufe, die über 14 Tage andauern, dann gar nicht (mehr) erfasst werden.
Inwieweit müssen wir die Bibliotheken, die wir benutzen, referenzieren? Die stehen alle in der Datei requirements.txt! Ist das abhängig von deren Lizenz?
Aktuell entwickeln wir einige neue Features - diese könnten wir ab und zu als Newsletter an die Nutzer*innen versenden mit der Möglichkeit eines Opt-Out, bspw. als Button.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.