From 33b2688a2d2888bf5e560c70a5bd92a319f5288d Mon Sep 17 00:00:00 2001 From: david Date: Tue, 8 Sep 2026 00:36:22 -0300 Subject: all of this was vibecoded. i just asked claude to fix all my bugs and he actually overhauled shit woaw. he only changed the name and position of a couple functions so if i want to write more things it should be fine. i love claude i love antrhopic i love vibecoding @claude make me a million dollars in a day make no mistake --- setup_wizard.py | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 setup_wizard.py (limited to 'setup_wizard.py') diff --git a/setup_wizard.py b/setup_wizard.py new file mode 100644 index 0000000..8575b27 --- /dev/null +++ b/setup_wizard.py @@ -0,0 +1,104 @@ +#!/usr/bin/env python3 +""" +setup wizard for faggot-chan. figures out which files need writing based on +how you're deploying, and writes them. run this before bot.py / main.py. +""" +import secrets +from pathlib import Path + +SCRIPT_DIR = Path(__file__).resolve().parent + + +def ask(prompt: str, default: str = None) -> str: + suffix = f" [{default}]" if default else "" + val = input(f"{prompt}{suffix}: ").strip() + return val or default or "" + + +def ask_yn(prompt: str) -> bool: + while True: + val = input(f"{prompt} (y/n): ").strip().lower() + if val in ("y", "yes"): + return True + if val in ("n", "no"): + return False + print("just y or n please") + + +def write_tokens_file(config_dir: Path): + config_dir.mkdir(parents=True, exist_ok=True) + print("\n-- discord bot setup --") + token = ask("discord bot token") + server_id = ask("discord server (guild) id") + while not server_id.isdigit(): + print("that's not a number") + server_id = ask("discord server (guild) id") + (config_dir / "tokens.txt").write_text(f"{token}\n{server_id}\n", encoding="utf-8") + print(f"wrote {config_dir / 'tokens.txt'}") + + +def write_connection_file(config_dir: Path, default_uri: str = "ws://0.0.0.0:8765"): + config_dir.mkdir(parents=True, exist_ok=True) + print("\n-- connection to main.py --") + uri = ask("main.py address (ws:// or wss://)", default_uri) + print("paste the auth token main.py is using (from colab_setup.py output),") + token = ask("or leave blank to generate a new one") + if not token: + token = secrets.token_urlsafe(32) + print(f"generated token: {token}") + (config_dir / "connection.txt").write_text(f"{uri}\n{token}\n", encoding="utf-8") + print(f"wrote {config_dir / 'connection.txt'}") + return token + + +def write_auth_token_file(config_dir: Path, token: str = None): + config_dir.mkdir(parents=True, exist_ok=True) + if not token: + print("\n-- websocket auth for main.py --") + print("this is the secret bot.py has to send. leave blank to generate one.") + token = ask("auth token") + if not token: + token = secrets.token_urlsafe(32) + print(f"generated token: {token}") + (config_dir / "auth_token.txt").write_text(f"{token}\n", encoding="utf-8") + print(f"wrote {config_dir / 'auth_token.txt'}") + print(f"\ngive this token (and this machine's public wss:// url) to whoever's setting up bot.py:\n {token}") + + +def main(): + print("faggot-chan setup wizard\n") + + colab = ask_yn("is this for a colab-hosted main.py") + + if not colab: + # everything lives together, plain local setup + bot_config = SCRIPT_DIR / "files" / "config" + main_config = SCRIPT_DIR / "config" + write_tokens_file(bot_config) + token = write_connection_file(bot_config, default_uri="ws://0.0.0.0:8765") + write_auth_token_file(main_config, token=token) + print("\nall set. run main.py, then bot.py.") + return + + where = ask("running this on the 'vps' (bot.py host) or 'colab' box (main.py host)", "vps") + + if where.lower().startswith("colab"): + # this box just needs the auth token main.py will check — connection details + # (discord token, server id) live on whichever box runs bot.py + main_config = SCRIPT_DIR / "config" + write_auth_token_file(main_config) + print("\nnow run colab_setup.py to bring main.py + the tunnel up.") + return + + # vps / bot.py host: skip discord-client setup entirely (handled separately), + # this preset only wires up the connection to the colab-hosted main.py + bot_config = SCRIPT_DIR / "files" / "config" + if not (bot_config / "tokens.txt").exists(): + print("\nheads up: no files/config/tokens.txt found here — the vps preset skips") + print("discord token setup, so make sure that file gets added separately.") + write_connection_file(bot_config, default_uri="wss://your-colab-tunnel-url-here") + print("\nall set. run bot.py once main.py is up on the colab side.") + + +if __name__ == "__main__": + main() -- cgit v1.3-2-g0d8e