add check for swear words and an initial list of words

This commit is contained in:
Jules 2026-02-22 21:55:22 +01:00
parent db682661cf
commit f3c704f733

View File

@ -65,13 +65,41 @@ message_label.grid(column=0, row=1, sticky='w', padx=5)
message_text = tk.Text(journal, height=textbox_height)
message_text.grid(column=0, row=2, padx=5)
# Function to check message length
# List of swear-words we need to check against
swear_words = [
"mistkerl", "mistkerle", "mistkerl*", "mist kerl", "mister kerl",
"arsch",
"hure", "hurensohn", "huso", "h*****sohn",
"Sex", "S**",
"ficken", "firken", "fi***en",
"bumsen", "bomsen", "b*msen", "bu*sen",
"fotze", "schlampe", "bitch",
"arschloch", "arschl***", "arsch loch", "arsch-loch", "arschloch*",
"depp", "deppen", "depp*", "deppchen", "depp!",
"idiot", "idioten", "id***", "idioot", "idot",
"trottel", "trottel*", "trottelchen", "trottel-", "trottl",
"dummkopf", "dummköpfe", "dummkopf*", "dumm-kopf", "dummkopf-",
"blödmann", "blödmänner", "bloeddman", "bloeddmänner"
]
# Function to check message validity
# validity consists of:
## 1. not more than 1000 Characters message length
## 2. no words from the bad-words-list contained
def is_message_valid():
current_message = message_text.get("1.0", "end-1c")
# ceck for message length
if len(current_message) > 1000:
showwarning("Warnung", "Deine Nachricht ist zu lang, bitte beschränke Dich auf 1000 Zeichen")
message_text.focus_set()
return False
# check for bad words case-insenstive (by making everything lower-case for the check)
if not set(word.lower() for word in current_message.split()).isdisjoint(swear_words):
showwarning("Warnung", "Deine Nachricht enthält fragwürdige Wörter - so können wir den Text nicht übernehmen.")
message_text.focus_set()
return False
return True
# Send button action
@ -118,50 +146,3 @@ button_quit.grid(sticky='e', column=0, row=3, ipady=8, padx=5, pady=5)
# Start application
journal_root.mainloop()
# TODO
# Ja, in Python wird ein **Array von Wörtern** in der Regel als eine **Liste von Strings** repräsentiert. Die Funktion `finde_wort_in_text_effizient` ist so geschrieben, dass sie eine solche Liste als Eingabe akzeptiert.
#
# ### Beispiel mit einer Liste von Wörtern
#
# Hier ist ein Beispiel, das zeigt, wie du die Funktion mit einer ganz normalen Python-Liste (`list`) verwenden kannst, die Strings enthält.
#
# ```python
# def finde_wort_in_text_effizient(woerter_liste, text):
# """
# Überprüft effizient, ob ein Wort aus einer Liste in einem Text vorkommt.
# Args:
# woerter_liste: Eine Liste von Wörtern.
# text: Der Text, in dem gesucht werden soll.
# Returns:
# False, wenn ein Wort gefunden wird.
# True, wenn kein Wort gefunden wird.
# """
# woerter_set = set(woerter_liste)
# text_woerter = set(text.split())
#
# if not woerter_set.isdisjoint(text_woerter):
# return False
#
# return True
#
# # Ein "Array von Wörtern" in Python ist eine Liste
# mein_array_von_woertern = ["Entwickler", "Programmierung", "Code"]
#
# # Ein Text, in dem wir suchen
# mein_text = "Ich bin ein Python-Entwickler und liebe Programmierung."
#
# # Wir übergeben die Liste direkt an die Funktion
# ergebnis = finde_wort_in_text_effizient(mein_array_von_woertern, mein_text)
#
# print(f"Gesuchte Wörter: {mein_array_von_woertern}")
# print(f"Text: '{mein_text}'")
# print(f"Treffer gefunden? {ergebnis}")
#
# # Das Ergebnis ist False, da "Entwickler" und "Programmierung" gefunden wurden
# ```
#
# Wie du siehst, funktioniert die Funktion einwandfrei mit einer **Liste von Strings**, da dies die standardmäßige und effizienteste Methode in Python ist, um eine Ansammlung von Wörtern zu speichern und zu verarbeiten.
#
# Übrigens: Wenn du [Aktivitäten in Gemini-Apps](https://myactivity.google.com/product/gemini) aktivierst, kannst du die Funktionen aller Apps verwenden.0