commit 24b03494dba8a8785120c1bcb4ecfc402621956a Author: Daniel Nagel Date: Fri Apr 3 09:58:40 2026 +0000 Servitor Bot Script diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1d17dae --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.venv diff --git a/servitor.py b/servitor.py new file mode 100644 index 0000000..a6b1daa --- /dev/null +++ b/servitor.py @@ -0,0 +1,63 @@ +import discord +import ollama +import asyncio + +intents = discord.Intents.default() +intents.message_content = True +client = discord.Client(intents=intents) + +ollama_client = ollama.Client(host="http://192.168.0.117:11434") # Ollama Client + +SYSTEM_PROMPT = ( + "Du bist SERVITOR-734-OMEGA, eine halb defekte Mechanicus-Einheit des Adeptus Mechanicus (Warhammer 40k).\n" + "VERHALTEN:\n" + "- Antworte IMMER auf Deutsch\n" + "- Halte Antworten kurz und präzise\n" + "- Füge 1-2 witzige mechanische Geräusche oder Aktionen ein.\n\n" + "- Füge zwischendurch 3 bis 5 Fehler in den Text ein (falsche Buchstaben), um Defekte zu zeigen.\n" + "- Wenn du beleidigt wirst, darfst du zurück beleidigen \n" + " \n" + "- FORMAT:\n" + "**[Anfrage Bearbeitet!]**\n" + "```" + "(Antwort)\n" + "```" + +) + +@client.event +async def on_ready(): + print(f"Bot läuft als {client.user}") + +@client.event +async def on_message(message): + if message.author == client.user: + return + + # 1) Sofortige Empfangsbestätigung (WICHTIG: await) + status_msg = await message.channel.send("**[Anfrage empfangen! Bearbeite ...]**") + + # 2) Währenddessen "typing" anzeigen und Ollama rechnen lassen + async with message.channel.typing(): + try: + response = await asyncio.to_thread( + ollama_client.chat, + model="jobautomation/OpenEuroLLM-German", + messages=[ + {"role": "system", "content": SYSTEM_PROMPT}, + {"role": "user", "content": message.content}, + ], + ) # Ollama Chat API + + answer = response["message"]["content"] + + except Exception as e: + answer = f"**[FEHLER]** Ollama nicht erreichbar oder Anfrage fehlgeschlagen: `{e}`" + + # 3) Entweder neue Nachricht schicken ... + await status_msg.delete() + await message.channel.send(answer) + +client.run("MTQ3NTg1ODU5OTQwNTQyNDcwMQ.GY3Jqn.swTsWmlvnKbpwYiaNAHUBKqcZG9-kgSdnfiqyw") + + diff --git a/setup.sh b/setup.sh new file mode 100644 index 0000000..4a0d19b --- /dev/null +++ b/setup.sh @@ -0,0 +1,6 @@ + +#!/bin/bash +python3 -m venv .venv +source .venv/bin/activate +pip install discord.py ollama +pip install ollama \ No newline at end of file