Projekt:Schaffenbot: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(66 dazwischenliegende Versionen von 9 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Datei:Telegram-Bot.png|mini|rechts]]
{{Infobox Projekt
|name            = Telegram Bot
|status          = stable
|beschreibung    = Telegram-Bot für Schaffen-CIX Gruppe
|autor          = VinRisen360
|owner          = VinRisen360
|image          = Telegram-Bot.png
|imagesize      = 240
}}
 
=Telegram Bot Allgemein=
=Telegram Bot Allgemein=
Author: [[Benutzer:VinRisen360|Paul Freudenberger]] / [[Benutzer:zero|Marcel]]<br />
Author: [[Benutzer:VinRisen360|Paul Freudenberger]] (Aktuelle Version des Bots) / [[Benutzer:zero|Marcel]] (Version 0.1 des Bots)<br />
GitHub Telegram Bot API: https://github.com/php-telegram-bot/core <br />
GitHub Telegram Bot API: https://github.com/php-telegram-bot/core <br />
GitHub Example Bot Template: https://github.com/php-telegram-bot/example-bot.git <br />
GitHub Example Bot Template: https://github.com/php-telegram-bot/example-bot.git <br />
Zeile 98: Zeile 107:
=Bot Erweiterung für Spacestatus=
=Bot Erweiterung für Spacestatus=
Zunächst muss eine SQL-Datenbank angelegt werden. (Wird für das Tracking des Spacestatus benötigt)
Zunächst muss eine SQL-Datenbank angelegt werden. (Wird für das Tracking des Spacestatus benötigt)
Zunächst legt man eine neue SQL-Datenbank incl. User und Passwort mit folgendem Befehl an:
Zunächst legt man eine neue SQL-Datenbank incl. User und Passwort mit folgendem Befehl an:<br />
mysql -u sqlrootuser -p'p@ssw0rd' -e "CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'dbpass';CREATE DATABASE dbname;GRANT ALL PRIVILEGES ON dbname . * TO 'dbuser'@'localhost';"
mysql -u sqlrootuser -p'p@ssw0rd' -e "CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'dbpass';
mysql -u sqlrootuser -p'p@ssw0rd' dbname < structure-schaffenburg.sql<br />
CREATE DATABASE dbname;
GRANT ALL PRIVILEGES ON dbname . * TO 'dbuser'@'localhost';
mysql -u sqlrootuser -p'p@ssw0rd' dbname < structure-schaffenburg.sql<br />
Download the file here: [[Datei:Structure-schaffenburg.zip]]
Download the file here: [[Datei:Structure-schaffenburg.zip]]


Zeile 136: Zeile 147:
==Daten loggen==
==Daten loggen==
Über die folgende URL können Daten ins Logging aufgenommen werden:<br />
Über die folgende URL können Daten ins Logging aufgenommen werden:<br />
http://codeblatz.ddns.net/soap.php?token=<secret token>&tag=<string>&value=<string> <br />
http://bot.schaffenburg.org/soap.php?token=<secret token>&tag=<string>&value=<string> <br />
Erklärung:<br />
Erklärung:<br />
* token: Damit nicht jeder einfach Daten loggen kann, muss ein valider Token in der URL mitgegeben werden.<br />Ein neuer Token kein beim Benutzer [[Benutzer:VinRisen360|Paul Freudenberger]] angefordert werden.
* token: Damit nicht jeder einfach Daten loggen kann, muss ein valider Token in der URL mitgegeben werden.<br />Ein neuer Token kein beim Benutzer [[Benutzer:VinRisen360|Paul Freudenberger]] angefordert werden.
* tag: Ein Search-Tag, der mit den Infos hinterlegt wird.<br />Es sollte ein einzelnes Wort sein, dass beschreibend für den Wert ist. (Beispiel: temperature)
* tag: Ein Search-Tag, der mit den Infos hinterlegt wird.<br />Es sollte ein einzelnes Wort sein, dass beschreibend für den Wert ist. (Beispiel: temperature)
* value: Der eigentliche Wert, den man loggen möchte.<br />Hier kann eigentlich alles mitgegeben werden.
* value: Der eigentliche Wert, den man loggen möchte.<br />Hier kann eigentlich alles mitgegeben werden.<br />Es ist auch möglich mehrere Werte zu übergeben. Dafür muss man die Werte einfach mit einem der folgenden Zeichen voneinander trennen:<br />Semikolon(;), Leerzeichen( ), Plus(+), Pipe(|).<br />Wenn mehrere Werte für "value" übergeben werden, können auch mehrere Werte für "tag" mitgegeben werden.<br />Die Zuordnung der "tag"s zu den "value"s erfolgt über die Position in der Mehrfach-Value-Kette


RÜCKGABEWERT BEI ERFOLGREICHEM LOGGEN:<br />
RÜCKGABEWERT BEI ERFOLGREICHEM LOGGEN:<br />
Zeile 147: Zeile 158:
==Daten auslesen==
==Daten auslesen==
Über die folgende URL können die Daten wieder ausgelesen werden:<br />
Über die folgende URL können die Daten wieder ausgelesen werden:<br />
http://codeblatz.ddns.net/soap.php?token=<secret token>[&tag=<string>][&limit=100] <br />
http://bot.schaffenburg.org/getlog.php?token=<secret token>[&tag=<string>][&limit=100] <br />
Erklärung:<br />
Erklärung:<br />
* token: Damit nicht jeder einfach Daten auslesen kann, muss ein valider Token in der URL mitgegeben werden.<br />Ein neuer Token kein beim Benutzer [[Benutzer:VinRisen360|Paul Freudenberger]] angefordert werden.
* token: Damit nicht jeder einfach Daten auslesen kann, muss ein valider Token in der URL mitgegeben werden.<br />Ein neuer Token kein beim Benutzer [[Benutzer:VinRisen360|Paul Freudenberger]] angefordert werden.
Zeile 163: Zeile 174:
*/Commands/GenericCommand.php (Dieser Command wird getriggert, wenn ein Command getriggert wird, den es nicht gibt) <br />
*/Commands/GenericCommand.php (Dieser Command wird getriggert, wenn ein Command getriggert wird, den es nicht gibt) <br />
*/Commands/GenericmessageCommand.php (Wird getriggert, wenn ein Text an den Bot oder in eine Gruppe mit dem Bot geschrieben wird) <br />
*/Commands/GenericmessageCommand.php (Wird getriggert, wenn ein Text an den Bot oder in eine Gruppe mit dem Bot geschrieben wird) <br />
*/Commands/CallbackqueryCommand.php (Erklärung: ???) <br />
*/Commands/CallbackqueryCommand.php (Wird getriggert, wenn jemand auf einen Button drückt, der im Chat Fenster steht (Umfrage)) <br />
*/Commands/WeatherCommand.php (Mit diesem Command kann das Wetter abgefragt werden.)<br />
*/Commands/WeatherCommand.php (Mit diesem Command kann das Wetter abgefragt werden. Benötigt allerdings Anmeldung an openweather API)<br />
  Damit das funktioniert, muss man sich auf der folgenden Webseite registrieren:
  Damit das funktioniert, muss man sich auf der folgenden Webseite registrieren:
  https://home.openweathermap.org/users/sign_up <br />
  https://home.openweathermap.org/users/sign_up <br />
Zeile 209: Zeile 220:
* Gibt es keine Sprachenzuordnung für einen User, spricht der Schaffenbot in der Standardsprache
* Gibt es keine Sprachenzuordnung für einen User, spricht der Schaffenbot in der Standardsprache
* Die Standardsprache vom Schaffenbot ist Deutsch
* Die Standardsprache vom Schaffenbot ist Deutsch
* Sowohl der Text, der in den Commands ausgegeben wird ist an die Sprache angepasst, als auch das Schlüsselwort, das den Command triggert ( /weristda oder auch /whoisthere )
* Nicht nur der Text, der von Commands ausgegeben wird ist an die Sprache angepasst, sondern auch die Schlüsselworte welche Commands triggern ( /weristda und /whoisthere geht)
* Die /hilfe bzw. /help wird abhängig von der gewählten Sprache ausgegeben
* Die /hilfe bzw. /help wird abhängig von der gewählten Sprache ausgegeben
* Es gibt ein Wörterbuch pro Sprache, das gepflegt werden muss
* Es gibt ein Wörterbuch pro Sprache, das gepflegt werden muss
Zeile 215: Zeile 226:
==Wörterbucher==
==Wörterbucher==
Die Wörterbücher Englisch und Deutsch waren mit der Einführung des Multi-Language Support bereits verfügbar.<br>
Die Wörterbücher Englisch und Deutsch waren mit der Einführung des Multi-Language Support bereits verfügbar.<br>
Jeder der Mithelfen möchte weitere Sprache zu implementieren soll ein neues Wörterbuch anlegen.<br>
Jeder der mithelfen möchte weitere Sprachen zu implementieren soll ein neues Wörterbuch anlegen.<br>
Das Format des Wörterbuchs muss wie in den vorhandenen Wörterbüchern sein:<br>
Das Format des Wörterbuchs muss wie in den vorhandenen Wörterbüchern sein:<br>
<br>
<br>
Zeile 232: Zeile 243:
! Sprache !! Datei !! Vollständig !! Author/Mitwirkende
! Sprache !! Datei !! Vollständig !! Author/Mitwirkende
|-
|-
|Englisch || [[Datei:telegram-bot-en.txt]] || style="background: green; color: white;" | Ja || [[Benutzer:VinRisen360|Paul]]
|Englisch || [[Datei:Telegram-bot-en.zip]] || style="background: green; color: white;" | Ja || [[Benutzer:VinRisen360|Paul]]
|-
|-
|Deutsch || [[Datei:telegram-bot-de.txt]] || style="background: green; color: white;" | Ja || [[Benutzer:VinRisen360|Paul]]
|Deutsch || [[Datei:Telegram-bot-de.zip]] || style="background: green; color: white;" | Ja || [[Benutzer:VinRisen360|Paul]]
|-
|-
|Japanisch || [[Datei:telegram-bot-jp.txt]] || style="background: red; color: white;" | Nein || [[Benutzer:Fraxinas|Andy]]
|Japanisch || [[Datei:Telegram-bot-jp.zip]] || style="background: red; color: white;" | Nein || [[Benutzer:Fraxinas|Andy]]
|-
|Saarländisch || [[Datei:Telegram-bot-sal.zip]] || style="background: red; color: white;" | Nein || [[Benutzer:Dg3hda|Hendrik]]
|-
|Hessisch || [[Datei:Telegram-bot-he.zip]] || style="background: blue; color: white;" | 45% || [[Benutzer:Dg3hda|Hendrik]] [[Benutzer:stev96|stev96]]
|-
|Klingonisch || [[Datei:Telegram-bot-klingonisch.zip]] || style="background: red; color: white;" | Nein || Freiwillige vor!
|}
|}


Zeile 245: Zeile 262:
! Feature !! Notizen !! Umgesetzt zu X%
! Feature !! Notizen !! Umgesetzt zu X%
|-
|-
|Nyus-Letter || Nyus-Lettter auch in Private chat, mit Sticker von Nyu drunter für cooleres Aussehen || Antrag Hendi/Paul
|Einbindung [[Projekt:Space-Status-Schalter|Space-Status-Schalter]]|| Wir haben den Schalter, die Info muss zu Nyu. || Antrag [[Benutzer:Dg3hda]]
|-
|Warnung wenn letzter User /geht aber Space noch offen|| Es kam ja schon häufiger vor, dass Nyu den Space um 4 am schließt, von dem her is die "Fehlerquote" der Gehenden wohl hoch :D..evtl paar min Zeit vor Warnung || Antrag [[Benutzer:MaesterK|Karsten]]
|-
|Nachrichten für Aufenthalt hinterlegen|| Wär praktisch wenn man für sich selbst und andere Nachrichten hinterlegen könnte, die Nyu bei Einchecken in den Space ausrichtet. Richtung "Kannst du dir das und das bitte mal anschauen", oder "Ich hab dir dein Wasauchimmer ins Fach gelegt", "Ich wollte eigentlich noch das und das machen" || Antrag [[Benutzer:MaesterK|Karsten]]
|-
|MoWaS-Integration || Warnungen aus dem Warnsystem MoWaS übernehmen, Nyu statt NINA! || Antrag Hendi
|-
|Hilfe-Update || Fertige Features wie Pizzatimer auch in Hilfe übernehmen und freigeben || Antrag Hendi
|-
|Oliver-Special || Textänderung für ihn: Oliver Kömm hat angegeben später zu k<b>ö</b>mmen um 20:00 Uhr usw. || Antrag Hendi
|-
|Geschlossene Gesellschaft || Statusse hinzufügen, um Website "Space open" für geschlossene Gesellschaft zu unterdrücken|| Antrag Hendi
|-
|<strike>Temperaturwächter</strike> || <strike>Temperaturprobleme und -Ausfall pushen</strike> Implementiert in Florians little helper/Nagios || <strike>Antrag Hendi</strike>
|-
|Sipgate.io || Nyu eine Stimme geben || Antrag Stev96
|-
|Anmeldung zum Plenum ||Analog zu Funktion für Schaffentag  ||  Antrag [[Benutzer:Bola|Torsten]]
|-
|Uff Counter || "Uff" pro Tag zählen und in Milli bzw Mega Uff ausgeben sobald jemand "Uff" schreibt || Antrag [[Benutzer:Byteturtle|byteturtle]]
|-
|Verkürzung von Ausgaben|| So was wie Putzzeitpunkte muss nicht minutengenau angezeigt werden || Antrag [[Benutzer:Dg3hda|Hendrik]]
|-
|Telegramm-Melder|| Auslösung einer akustischen Meldung im Space (z.B. Piepser der Konferenzraum-Uhr) mittels Botkommando, unterschiedliche Kommandos für unterschiedliche Signale (Aufmerksamkeit auf Telegram richten, Hinweis auf verschlossene Tür) || Antrag [[Benutzer:Dg3hda|Hendrik]]
|-
|Anmeldung und  Erinnerung Stammtisch|| Analog zu Funktion für Schaffentag  || Antrag [[Benutzer:MaesterK|Karsten]]
|-
|Rückkehr der Aliase || Alias "werkommtnoch" ist weggefallen, vielleicht noch andere? Sind wohl noch bei Lucy?:-) Bitte wieder zurückbringen!  || Antrag [[Benutzer:Dg3hda|Hendi]]
|-
|-
|Totzeit für "not working"||  Meldung in Telegram erst wenn mehrere Poll-Versuche fehl schlugen, Rückkehr zu Normalbetrieb erst nach mehreren erfolgreichen || Antrag [[Benutzer:Dg3hda]] Statusabfragen um "not working" Wellen zu vermeiden. Siehe Vorgänger =)
|Anwesenheitskomprimierung || Automatische Meldung des frühesten Öffnungszeitpunkt von "Ichkommheute" im CIX, detailierte Listen nur noch privat oder komprimiert. || Antrag [[Benutzer:Dg3hda|Hendi]]
|-
|Strichlistenfernbedienung || Da ja der Bot weiß, wer postet, könnte doch etwa ein '''/trank cola''' oder '''/trank bier''' direkt über das Strichlisten API abbuchen. || Antrag [[Benutzer:frodozet|Jochen]]
|-
|Anmeldung für SchaffenTag || Um den SchaffenTag besser Planen zu könne, vor allem das Essen. Wäre es gut eine Funktion zu haben die die Zusagen für den nächsten SchaffenTag zählt und auf Anfrage ausgibt. Um Spam zu vermeiden sollte das vielleicht nur in Privatchat mit Nyu ablaufen. || Antrag [[Benutzer:Bola|Torsten]]
|-
|<strike>Geschlossene Gesellschaft</strike>|| <strike>In Telegram und Auslese-Feature "offen" angeben während Website/statuspage Geschlossenen Zustand zeigt. (ANMERKUNG PAUL: Abgelehnt. Wenn dann einfach weiteren Status 'Geschlossene Gesellschaft' hinzufügen als /privatespace oder /geschlossenegesellschaft )</strike>|| <strike>Antrag [[Benutzer:Dg3hda|Hendi]]</strike>
|-
|Öffnungsankündigung URL|| Angekündigte Öffnung des Space per URL-Abfrage (Daten-Auslese-Feature?) auslesbar machen, z.B. als Countdown. Zeit db-Abhängig. (Ankündigung via getlog abfragen)|| Antrag [[Benutzer:Dg3hda|Hendi]]
|-
|<strike>Chat Öffnungsankündigung</strike>||<strike> Parallel mit dem anschalten der Heizung oder mit eigener Vorlaufzeit im Chat Meldung über den ersten angekündigten wie "Hendrik will in 20 Minuten den Space öffnen!" ausgeben. Zeit und Name db-Abhängig. (Ankündigung des ersten Kommenden am Tag, 20 Minuten vor Ankunft)</strike>Anzeige, wer wann kommt, ist abfragbar||<strike> Antrag [[Benutzer:Dg3hda|Hendi]]</strike>
|-
|-
|Abstimmung || Funktion zum Abstimmen im Bot einbauen. Wird wahrscheinlich Voraussetzung für Ban / Mute || Antrag [[Benutzer:VinRisen360|Paul]]
|Abstimmung || Funktion zum Abstimmen im Bot einbauen. Wird wahrscheinlich Voraussetzung für Ban / Mute || Antrag [[Benutzer:VinRisen360|Paul]]
|-
|-
|Interface || URL-Kommando &format=(GP,JSON) (GP=Gnuplotfreundliches Textformat, to be specified)|| Antrag Hendi
|Müllüberwachung<br />Notiz von Paul:<br />(Warte auf Rückmeldung von Karsten/Steven) || Abfrage des Status vom ESP Karsten (Müll muss gelehrt werden?), automatisch rot nach 3 Tagen, Grün per Knopfdruck am Müll; Wenn kritisch ("rot") automatischer Hinweis vom Bot wenn sich der Spacestatus auf "offen" ändert (jmd zum leeren da ist); Hinweis vom Bot beim Wechsel von grün zu rot und zunehmend energischere Hinweise, wenn nach gewissen Abständen niemand etwas unternommen hat || Antrag Karsten/Steven
|-
|-
|Müllüberwachung || Abfrage des Status vom ESP Karsten (Müll muss gelehrt werden?), automatisch rot nach 3 Tagen, Grün per Knopfdruck am Müll; Wenn kritisch ("rot") automatischer Hinweis vom Bot wenn sich der Spacestatus auf "offen" ändert (jmd zum leeren da ist); Hinweis vom Bot beim Wechsel von grün zu rot und zunehmend energischere Hinweise, wenn nach gewissen Abständen niemand etwas unternommen hat || Antrag Karsten/Steven
|Dönermelder || Wir würden bei Nyu gerne melden, wer zum Döner geht und wann (ggf. zu welchem) - Dönerholstatus soll abbonierbar sein. Nyu soll bei Dönerbestellungen dann annehmen und demjenigen mitteilen, der Döner holen geht || Antrag @Kaen_guru
|-
|-
|Tastaturfeld für Kommandos || Im privaten Chat Auswahl interessanter Kommandos standardmäßig als Optionen (/keyboard-like).  || 30%
|Tastaturfeld für Kommandos || Im privaten Chat Auswahl interessanter Kommandos standardmäßig als Optionen (/keyboard-like).  || 30%
|-
|-
|Ban, Silence und Unban Befehl || Der Bot soll eine Art Moderatoren Rolle in der<br />Schaffen-CIX Telegram Gruppe übernehmen || 90%
|Ban, Silence und Unban Befehl || Der Bot soll eine Art Moderatoren Rolle in der<br />Schaffen-CIX Telegram Gruppe übernehmen || 90%
|-
|CIX-Message API || URL zum Auslösen von Nachrichten vom Bot an die Schaffen-CIX Gruppe || 100%
|-
|Pizzatimer || Pizzatimer á 15 minuten für Pizza bei 220 Grad Umluft|| 100%
|-
|Spam durch Bot reduzieren || Bestimmte Befehle sollen auf PrivatChatOnly gesetzt werden um den Spam in der Schaffen-CIX Gruppe durch den Bot zu reduzieren || 100%
|-
|Putzalarm || Einmal die Woche sollte auf das Putzen der Toilette und des Spaces hingewiesen werden. Nyu sollte dabei so lange "Nerven" bis jemand /habewcgeputzt bzw /habegeputzt schreibt. Nyu bedankt sich bei dem Nutzer und zählt wie oft wer Putzt. Dann sollten wir uns überlegen wie wir die Fleißigen belohnen. || 100%
|-
|Heizungs-Trigger || Es soll immer 30 Minuten bevor jemand in den Space kommt ein Heizungsevent im log getriggert werden, sodass Hendrik's Arduino ihn zum Anschalten der Heizung verwenden kann. Beispiele für Logging-URL:<br />[URL]/soap.php?tag=heater&value=on<br />[URL]/soap.php?tag=heater&value=off || 100%
|-
|Logging erweitern || Mehrere Values (gleichzeitig) in der Logging-URL übergeben  || 100%
|-
|SQL Maintenance || Maintenance task erstellen, der den logging table verkleinert (Temperatur älter als 1 Tag reicht stündlich) || 100%
|-
|Interface || URL-Kommando &format=(GP,JSON) (GP=Gnuplotfreundliches Textformat, to be specified)|| 100%
|-
|/sendsticker || Funktion, um den Bot einen Sticker in die Schaffen-CIX Gruppe posten zu lassen || 100%
|-
|Totzeit für "not working"||  Meldung in Telegram erst wenn mehrere Poll-Versuche fehl schlugen, Rückkehr zu Normalbetrieb erst nach mehreren erfolgreichen.<br>(Statusabfragen um "not working" Wellen zu vermeiden. Siehe Vorgänger =)) || 100%
|-
|Nyus-Letter || Nyus-Letter auch in Private chat (changelog), mit Sticker von Nyu drunter für cooleres Aussehen || 100%
|-
|-
|/Slang Kommando || Zukünftige Ansprache in Slang von Nyu anfordern. "otaku kawaiii desuuuu" oder klingonisch oder hessisch oder oder oder... (Englisch und Deutsch sind verfügbar. Wer weitere Sprachen beitragen kann bitte bei [[Benutzer:VinRisen360|Paul]] melden) || 100%
|/Slang Kommando || Zukünftige Ansprache in Slang von Nyu anfordern. "otaku kawaiii desuuuu" oder klingonisch oder hessisch oder oder oder... (Englisch und Deutsch sind verfügbar. Wer weitere Sprachen beitragen kann bitte bei [[Benutzer:VinRisen360|Paul]] melden) || 100%
mitglieder, Administratoren
292

Bearbeitungen