Skip to content

Online Waschplan via Telegram Bot

Timothy Kellner requested to merge laundry_room_telegram_bot into master

Änderungen wie in #101 beschrieben:

Neue Befehle:

  • /start (das 'unified menu')
  • /status (unified)
  • /problem (unified)
  • /laundry_room (unified)
Aufbau von `/laundry_room`

Der Befehl /laundry_room ist (grob) wie folgt aufgebaut:

graph TB;
  A{/laundry_room}-->timetable[print the timetable];
  timetable-->toggel[show wek/day];
  timetable-->day_previus[show previus wek/day];
  timetable-->day_reload[reload];
  timetable-->day_next[show next wek/day];
  A-->new[create new booking];
  new-->new_device[select device]-->new_device_day[select day]-->new_device_day_time[select start time]-->new_device_day_time_len[select length]-->new_device_day_time_len_confirm[confirm choises]-->new_booking(create new booking);
  new_device_day_time_len_confirm-->new_no_booking[can't create booking]-->new_device_day_time_len_confirm;
  new_device-->new_device_now[boook for now]-->new_device_day_time_len_confirm;
  A-->list[list my bookings];
  A-->edit[edit a booking];
  edit-->edit_select[select booking]-->edit_select_main[print curent booking settings];
  edit_select_main-->edit_select_main_device[edit device];
  edit_select_main-->edit_select_main_day[edit day];
  edit_select_main-->edit_select_main_startTime[edit start time];
  edit_select_main-->edit_select_main_endTime[edit end time];
  edit_select_main-->edit_select_main_save[save changes?]-->edit_booking(create new booking)
  edit_select_main_save-->edit_no_booking[can't edit booking]-->edit_select_main_save
  A-->delete[delete a booking];
  delete-->delete_select[select booking]-->delete_select_confirm[confirm deletion]-->delete_booking(delete booking)
  A-->states[get machine states];
  A-->problem{report a problem};
  A-->settings[edit settings];
  settings-->settings_toggleReminder[toggel recive reminders];
  settings-->settings_toggleWarnings[toggel recive warnings];
  settings-->|if telegram_admin|settings_toggleProblem[toggel recive problem reports];
  settings-->|if telegram_admin|settings_toggleBug[toggel recive bug reports];
  A-->|if telegram_admin|admin[admin settings];
  admin-->edit_state[edit device state]-->edit_state_select[select device]-->edit_state_select_select[select state]-->edit_state_select_select_ack(change device state);
  admin-->edit_delete[delete boking]-->edit_delete_select[select any booking]-->edit_delete_select_confirm[confirm deletion]-->edit_delete_select_confirm_ack(delete booking);
  admin-->edit_broadcast[brodcast message]-->edit_broadcast_select[select recipiant group]-->edit_broadcast_select_confirm[recive and confirm message]-->edit_broadcast_select_confirm_ack(message is send);
  admin-->edit_doas[act as user]-->edit_doas_select[select user]-->edit_doas_select_ack(you act as the user);

ToDo's:

  • Formatierung bei mehrzeiligen Funktionsaufrufen überarbeiten
  • auskommentierten print's entfernen
  • timezone.now() common.telegrambot_handlers.here() main.telegrambot_handlers.here() benutzten
  • Eigentlich immer f-Strings benutzten
  • migrations nicht formatieren
  • speichern wenn man von /bookin_smart in /problems geht (für back)
  • eigenen Media Filter implementieren (main.telegrambot_handlers.message_handler_common verteilt)
  • Freitext Eingabe Funktion implementieren (menu_input_plain_text())
  • HTML Webseite für Personen ohne Telegram
    • aktuellen Tages / Wochen Waschplan anzeigen
    • neue Buchungen machen
    • eigene Buchungen editieren
    • Status der Waschmaschinen anzeigen
    • Fehler der Waschmaschinen melden
  • /laundry_room > edit a booking auf Startzeit und Länge umstellen
  • problem_report: Abgabe nach 30 min automatisch abbrechen (über context.job_queue ?)
  • unified menu:
    • fix login, logout and help
    • Membership Status
    • Fitness Room
    • Laundry Room
    • Help & Problems
    • message_handler für input_plain_text
    • message_handler für fitness video
    • message_handler für problem reports
  • auskommentierten code entfernen

Bekannte Bugs:

  • UserWarning: Retry and timeout are misconfigured.
  • auditlog.LogEntry.additional_data: Use django.db.models.JSONField instead.

Mögliche Verbesserungen (vorschläge?):

  • cronjobs in djangoQ übertragen (?)
  • menueInputTime: Eingaben direkt auf konformität prüfen

Es werden bestimmt noch Bugs auftauchen, aber fürs erste könnten wir das mal testen und Feedback sammeln.

Edited by Roman Faber

Merge request reports