Advertisement
here2share

# LaLaLa.py

Jan 12th, 2025
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.58 KB | None | 0 0
  1. # LaLaLa.py ZZZ
  2.  
  3. import random
  4. import json
  5. import tkinter as tk
  6. from tkinter import ttk
  7.  
  8. root = tk.Tk()
  9. root.title("LaLaLa Chatbot")
  10. root.geometry("1200x600+0+0")
  11.  
  12. mode = tk.StringVar(value="autocomplete")
  13. internet_search_enabled = tk.BooleanVar(value=False)
  14.  
  15. knowledge_base = {}
  16. interactions = []
  17. common_words = {}
  18. state_file = "LaLaLa_state.json"
  19. interactions_file = "interactions.log"
  20.  
  21. def toggle_mode():
  22.     mode.set("autocomplete" if mode.get() == "autosuggest" else "autosuggest")
  23.     mode_label.config(text=f"Mode: {mode.get().capitalize()}")
  24.  
  25. def toggle_internet_search():
  26.     internet_search_enabled.set(not internet_search_enabled.get())
  27.     internet_search_label.config(text=f"Internet Search: {'Enabled' if internet_search_enabled.get() else 'Disabled'}")
  28.  
  29. def send_message():
  30.     user_message = user_input.get()
  31.     if internet_search_enabled.get():
  32.         search_internet_for_python_resources()
  33.     if mode.get() == "autocomplete":
  34.         response = chatbot_autocomplete(user_message)
  35.         chat_display.insert(tk.END, f"LaLaLa: {response}\n")
  36.     else:
  37.         chatbot_autosuggest(user_message)
  38.     chat_display.insert(tk.END, f"You: {user_message}\n")
  39.     user_input.set("")
  40.  
  41. def chatbot_autocomplete(message):
  42.     response = "This is LaLaLa's response to: " + message + "\n"
  43.     for key, values in knowledge_base.items():
  44.         response += f"{key}: {random.choice(values)}\n"
  45.     interactions.append(f"User: {message}\nLaLaLa: {response}")
  46.     auto_save_interactions()
  47.     return response.strip()
  48.  
  49. def chatbot_autosuggest(message):
  50.     # Provide suggestions based on the knowledge base
  51.     suggestions = []
  52.     for key, values in knowledge_base.items():
  53.         if key in message:
  54.             suggestions.extend(values)
  55.     if not suggestions:
  56.         suggestions.append("### Oops, I don't have the data for that")
  57.  
  58.     suggestion_popup(suggestions)
  59.  
  60. def suggestion_popup(suggestions):
  61.     popup = tk.Toplevel(root)
  62.     popup.title("Suggestions")
  63.     tk.Label(popup, text="Select a suggestion:").pack()
  64.  
  65.     def select_suggestion(suggestion):
  66.         chat_display.insert(tk.END, f"LaLaLa: {suggestion}\n")
  67.         interactions.append(f"LaLaLa: {suggestion}")
  68.         auto_save_interactions()
  69.         popup.destroy()
  70.  
  71.     for suggestion in suggestions:
  72.         button = ttk.Button(popup, text=suggestion, command=lambda s=suggestion: select_suggestion(s))
  73.         button.pack(fill=tk.X)
  74.  
  75. def learn(input_data):
  76.     for key, value in input_data.items():
  77.         if key not in knowledge_base:
  78.             knowledge_base[key] = []
  79.         knowledge_base[key].append(value)
  80.     auto_save_state()
  81.     print("Learning complete.")
  82.  
  83. def save_state(filename=None):
  84.     if not filename:
  85.         filename = state_file
  86.     with open(filename, "w") as file:
  87.         json.dump(knowledge_base, file)
  88.     print(f"State saved to {filename}.")
  89.  
  90. def load_state(filename=None):
  91.     if not filename:
  92.         filename = state_file
  93.     try:
  94.         with open(filename, "r") as file:
  95.             global knowledge_base
  96.             knowledge_base = json.load(file)
  97.         print(f"State loaded from {filename}.")
  98.     except FileNotFoundError:
  99.         print(f"File {filename} not found. Starting with an empty knowledge base.")
  100.  
  101. def log_interactions(filename=None):
  102.     if not filename:
  103.         filename = interactions_file
  104.     with open(filename, "a") as file:
  105.         for interaction in interactions:
  106.             file.write(interaction + "\n")
  107.     print(f"Interactions logged to {filename}.")
  108.  
  109. def auto_save_state():
  110.     save_state()
  111.  
  112. def auto_save_interactions():
  113.     log_interactions()
  114.  
  115. def access_internet_for_python():
  116.     url = "https://www.learnpython.org/"
  117.     response = requests.get(url)
  118.     soup = BeautifulSoup(response.content, "html.parser")
  119.     tutorials = soup.find_all("div", class_="lesson")
  120.     python_tips = {tutorial.find("h3").text: tutorial.find("p").text for tutorial in tutorials[:5]}  # Limit to first 5 tutorials
  121.     learn(python_tips)
  122.     print("Learned Python code from the internet.")
  123.  
  124. def search_internet_for_python_resources():
  125.     query = "best ways to learn Python programming"
  126.     url = f"https://www.bing.com/search?q={query}"
  127.     response = requests.get(url)
  128.     soup = BeautifulSoup(response.content, "html.parser")
  129.     links = soup.find_all("a")
  130.     for link in links[:5]:  # Limit to first 5 links
  131.         href = link.get("href")
  132.         if href:
  133.             learn({"Python Resource": href})
  134.     print("Learned new Python resources from the internet.")
  135.  
  136. def learn_common_words(source_url):
  137.     response = requests.get(source_url)
  138.     data = response.json()
  139.     for word in data["words"]:
  140.         common_words[word["word"]] = word["meaning"]
  141.     learn(common_words)
  142.     print("Learned the meanings of the most common English words.")
  143.  
  144. def start_new_chat():
  145.     chat_display.delete('1.0', tk.END)
  146.     interactions.clear()
  147.  
  148. chat_frame = ttk.Frame(root)
  149. chat_frame.pack(fill=tk.BOTH, expand=True)
  150.  
  151. vertical_scrollbar = ttk.Scrollbar(chat_frame, orient=tk.VERTICAL)
  152. vertical_scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
  153.  
  154. horizontal_scrollbar = ttk.Scrollbar(chat_frame, orient=tk.HORIZONTAL)
  155. horizontal_scrollbar.pack(side=tk.BOTTOM, fill=tk.X)
  156.  
  157. chat_display = tk.Text(chat_frame, wrap="none", state="normal", height=20, width=100, yscrollcommand=vertical_scrollbar.set, xscrollcommand=horizontal_scrollbar.set)
  158. chat_display.pack(fill=tk.BOTH, expand=True)
  159.  
  160. vertical_scrollbar.config(command=chat_display.yview)
  161. horizontal_scrollbar.config(command=chat_display.xview)
  162.  
  163. user_input = tk.StringVar()
  164. input_frame = ttk.Frame(root)
  165. input_field = ttk.Entry(input_frame, textvariable=user_input, width=80)
  166. input_field.pack(side=tk.LEFT, fill=tk.X, expand=True)
  167. send_button = ttk.Button(input_frame, text="Send", command=send_message)
  168. send_button.pack(side=tk.RIGHT)
  169. input_frame.pack(fill=tk.X)
  170.  
  171. button_frame = ttk.Frame(root)
  172. button_frame.pack(fill=tk.X)
  173.  
  174. mode_button = ttk.Button(button_frame, text="Toggle Mode", command=toggle_mode)
  175. mode_button.pack(side=tk.LEFT, fill=tk.X, expand=True)
  176. mode_label = tk.Label(button_frame, text=f"Mode: {mode.get().capitalize()}")
  177. mode_label.pack(side=tk.LEFT, fill=tk.X, expand=True)
  178.  
  179. internet_search_button = ttk.Button(button_frame, text="Toggle Internet Search", command=toggle_internet_search)
  180. internet_search_button.pack(side=tk.LEFT, fill=tk.X, expand=True)
  181. internet_search_label = tk.Label(button_frame, text=f"Internet Search: {'Enabled' if internet_search_enabled.get() else 'Disabled'}")
  182. internet_search_label.pack(side=tk.LEFT, fill=tk.X, expand=True)
  183.  
  184. load_state()
  185.  
  186. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement