-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup_env.py
More file actions
111 lines (88 loc) · 3.95 KB
/
Copy pathsetup_env.py
File metadata and controls
111 lines (88 loc) · 3.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import re
from pathlib import Path
EXAMPLE_FILE = ".env.example"
def prompt_default(prompt, default=""):
if default:
return input(f"{prompt} [{default}]: ") or default
return input(f"{prompt}: ")
def replace_line(lines, key, value):
pattern = re.compile(rf"^{re.escape(key)}=.*$", re.MULTILINE)
replaced = False
for i, line in enumerate(lines):
if pattern.match(line):
lines[i] = f"{key}={value}\n"
replaced = True
break
if not replaced:
lines.append(f"{key}={value}\n")
return lines
def main():
if not Path(EXAMPLE_FILE).exists():
print(f"❌ {EXAMPLE_FILE} not found in current directory.")
return
with open(EXAMPLE_FILE, "r", encoding="utf-8") as f:
lines = f.readlines()
print("=== Discord Bot Environment Setup ===\n")
bot_name = prompt_default("Enter bot name", "Emanuel")
discord_token = prompt_default("Enter Discord Token (https://discord.com/developers/applications/ -> Bot)")
discord_id = prompt_default("Enter Discord Bot Application ID (-> General Information)")
language = prompt_default("Language (en/de)", "en")
lines = replace_line(lines, "NAME", bot_name)
lines = replace_line(lines, "DISCORD_TOKEN", discord_token)
lines = replace_line(lines, "DISCORD_ID", discord_id)
lines = replace_line(lines, "LANGUAGE", language)
lines = replace_line(lines, "COMMAND_NAME", bot_name.lower())
print("\nChoose AI Provider:")
print("1) Mistral")
print("2) Azure OpenAI")
print("3) Gemini")
print("4) OpenAI")
print("5) Ollama")
ai_choice = ""
while ai_choice not in ["1", "2", "3", "4", "5"]:
ai_choice = input("Enter 1, 2, 3, 4 or 5: ")
# --- MISTRAL ---
if ai_choice == "1":
lines = replace_line(lines, "AI", "mistral")
api_key = prompt_default("Enter Mistral API Key")
model = prompt_default("Enter Mistral Model", "mistral-medium-latest")
lines = replace_line(lines, "MISTRAL_API_KEY", api_key)
lines = replace_line(lines, "MISTRAL_MODEL", model)
# --- AZURE OPENAI ---
elif ai_choice == "2":
lines = replace_line(lines, "AI", "azure")
key = prompt_default("Enter Azure OpenAI API Key")
endpoint = prompt_default("Enter Azure Endpoint URL")
model = prompt_default("Enter Azure OpenAI Model", "gpt-5-mini")
version = prompt_default("Enter Azure API Version", "2024-10-21")
lines = replace_line(lines, "AZURE_OPENAI_API_KEY", key)
lines = replace_line(lines, "AZURE_OPENAI_ENDPOINT", endpoint)
lines = replace_line(lines, "AZURE_OPENAI_MODEL", model)
lines = replace_line(lines, "AZURE_OPENAI_API_VERSION", version)
# --- GEMINI ---
elif ai_choice == "3":
lines = replace_line(lines, "AI", "gemini")
api_key = prompt_default("Enter Gemini API Key")
model = prompt_default("Enter Gemini Model", "gemini-2.5-flash")
lines = replace_line(lines, "GEMINI_API_KEY", api_key)
lines = replace_line(lines, "GEMINI_MODEL", model)
# --- OPENAI ---
elif ai_choice == "4":
lines = replace_line(lines, "AI", "openai")
api_key = prompt_default("Enter OpenAI API Key")
model = prompt_default("Enter OpenAI Model", "gpt-5-nano")
lines = replace_line(lines, "OPENAI_API_KEY", api_key)
lines = replace_line(lines, "OPENAI_MODEL", model)
# --- OLLAMA ---
else:
lines = replace_line(lines, "AI", "ollama")
url = prompt_default("Enter Ollama URL", "http://localhost:11434")
model = prompt_default("Enter Ollama Model", "gemma3:12b")
lines = replace_line(lines, "OLLAMA_URL", url)
lines = replace_line(lines, "OLLAMA_MODEL", model)
env_filename = f".env.{bot_name.lower()}"
with open(env_filename, "w", encoding="utf-8") as f:
f.writelines(lines)
print(f"\n✅ Environment file written: {env_filename}")
if __name__ == "__main__":
main()