how to run ts bullshit

two parts: bot.py talks to discord, main.py (ollama) or gemini.py (gemini api) is the brain. main.py is stateless so it can live on another machine / colab and talk to bot.py through a websocket or tunnel, you never have to upload your files anywhere sketchy

installing

pick your distro. all of them use a venv because python doesn't let you pip install system wide anymore

ubuntu

sudo apt install python3 python3-venv curl zstd
curl -fsSL https://ollama.com/install.sh | sh

arch

sudo pacman -S python ollama
#ollama-cuda or ollama-rocm if you have a gpu

gentoo

sudo emerge --ask dev-lang/python sci-ml/ollama-bin 
#ollama-bin is from guru iirc you know how to do that you use gentoo

(skip the ollama part if you're using the gemini api)

then your python dependencies are

python3 -m venv venv
source venv/bin/activate
pip install ollama websockets discord.py
#and this one only if you're using the gemini api, you don't need ollama if so
pip install google-genai

once you install your dependencies

you need ollama running (not needed for gemini)

#ollama needs to be serving, the packages above already ship a service
sudo systemctl enable --now ollama #ubuntu / arch / gentoo systemd
sudo rc-update add ollama default && sudo rc-service ollama start #gentoo openrc
#or just run it by hand / use tmux or screen 
ollama serve &
ollama pull <your model>
ollama pull <your embedding model>
#those two are in main.py
#test it with
ollama run <your model>

if that runs fine (or you have a gemini key) then you can

  • go to the discord developer portal and turn on message content intent and server members intent for your bot or it won't start
  • add the bot to your server
  • run the wizard, it writes all the config files for you using your input
python3 setup_wizard.py
  • edit your system prompt in ./files/config/system_prompt.txt (it makes a placeholder the first time bot.py runs)
  • optional: ./config/params.json has the ollama options (temperature and stuff), without it ollama just uses its defaults
  • run main first, then the bot
python3 main.py #or gemini.py
python3 bot.py

she only reads general and announcements, and every dm gets its own memory in ./files/log/dm/ so it never leaks into the server

fallback

if you're using gemini you can have a local ollama main.py take over when gemini says you're out of quota. the wizard asks about it (it's the third line of ./files/config/connection.txt), it needs to run on another port so run it as

PORT=8766 python3 main.py

the bot goes back to trying gemini after an hour. if there's no fallback (or it's down) she just says "usage limit reached, see you in a month"

admin

admin.py is the admin panel, it only edits files on the box so nobody on discord can touch it. the bot re-reads everything on every message, no restart needed

python3 admin.py list
python3 admin.py edit <blocked|prompt|settings|reactions|params> #opens $EDITOR, vim if you don't have one
python3 admin.py block <user id>
python3 admin.py unblock <user id>

reactions.json is where the stickers / emojis / media she can send live, the bot adds new ones with an empty description and you fill them in. media with no description never gets offered

you can let the local gemma-4 write the descriptions for you, it needs pip install pillow (and ffmpeg for videos), ollama running, and the model has to be able to see images

python3 describe.py 
#only the empty ones, --all redoes everything, --model <name> to use another model
python3 --gemini uses the gemini api instead so you don't need ollama 

colab

if your pc can't run the model you can host main.py on colab (or a vps with a gpu), run setup_wizard.py on both sides and say yes to the colab question

#on colab
python3 colab_setup.py

it prints a wss:// address and a token, paste those into the wizard on the bot.py side. the address changes every time you restart the notebook this script assumes collab but it probably works with any ubuntu vps. it's not reccomended to run it on anything that's not google colab

IF IT FAILS

  • check ./files/log/errorlog.txt
  • bad auth token means the token in ./files/config/connection.txt isn't the one main.py has in ./config/auth_token.txt
  • on colab main.py logs to main.log next to colab_setup.py

have fun

don't ask me why the bot is female she just is

S
Description
ai thing
Readme
496 KiB
0 Stars 0 Watchers 0 Forks
Languages
Python 100%