fixed vibewritten readme a bit because claude is a bit dumb

This commit is contained in:
david committed 2026-10-16 03:58:13 -03:00
1 parent 090fb736e5
commit 387331d1af
1 file changed
+35 -49
+35 -49
View File
@@ -8,108 +8,93 @@ pick your distro. all of them use a venv because python doesn't let you `pip ins
### ubuntu ### ubuntu
```console ```console
$ sudo apt install python3 python3-venv curl zstd sudo apt install python3 python3-venv curl zstd
$ curl -fsSL https://ollama.com/install.sh | sh curl -fsSL https://ollama.com/install.sh | sh
``` ```
### arch ### arch
```console ```console
$ sudo pacman -S python ollama sudo pacman -S python ollama
#ollama-cuda or ollama-rocm if you have a gpu #ollama-cuda or ollama-rocm if you have a gpu
``` ```
### gentoo ### gentoo
```console ```console
$ sudo emerge --ask dev-lang/python sci-ml/ollama sudo emerge --ask dev-lang/python sci-ml/ollama-bin
#sci-ml/ollama is ~amd64, so you need to keyword it first #ollama-bin is from guru iirc you know how to do that you use gentoo
$ echo "sci-ml/ollama ~amd64" | sudo tee /etc/portage/package.accept_keywords/ollama
#sci-ml/ollama-bin if you don't wanna compile it
``` ```
(skip the ollama part if you're using the gemini api) (skip the ollama part if you're using the gemini api)
then your python dependencies are then your python dependencies are
```console ```console
$ python3 -m venv venv python3 -m venv venv
$ source venv/bin/activate source venv/bin/activate
$ pip install ollama websockets discord.py pip install ollama websockets discord.py
#and this one only if you're using the gemini api #and this one only if you're using the gemini api, you don't need ollama if so
$ pip install google-genai pip install google-genai
``` ```
# once you install your dependencies # once you install your dependencies
you need ollama running (not needed for gemini) you need ollama running (not needed for gemini)
```console ```console
#ollama needs to be serving, the packages above already ship a service #ollama needs to be serving, the packages above already ship a service
$ sudo systemctl enable --now ollama #ubuntu / arch / gentoo systemd sudo systemctl enable --now ollama #ubuntu / arch / gentoo systemd
$ sudo rc-update add ollama default && sudo rc-service ollama start #gentoo openrc sudo rc-update add ollama default && sudo rc-service ollama start #gentoo openrc
#or just run it by hand #or just run it by hand / use tmux or screen
$ ollama serve & ollama serve &
$ ollama pull <your model> ollama pull <your model>
$ ollama pull <your embedding model> ollama pull <your embedding model>
#those two are in main.py #those two are in main.py
#test it with #test it with
$ ollama run <your model> ollama run <your model>
``` ```
if that runs fine (or you have a gemini key) then you can 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 - 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 - add the bot to your server
- run the wizard, it writes all the config files for you - run the wizard, it writes all the config files for you using your input
```console ```console
$ python3 setup_wizard.py python3 setup_wizard.py
``` ```
- edit your system prompt in `./files/config/system_prompt.txt` (it makes a placeholder the first time bot.py runs) - 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 - optional: `./config/params.json` has the ollama options (temperature and stuff), without it ollama just uses its defaults
- run the brain first, then the bot - run main first, then the bot
```console ```console
$ python3 main.py #or gemini.py python3 main.py #or gemini.py
$ python3 bot.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 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 # 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 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
```console ```console
$ PORT=8766 python3 main.py 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" 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
`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 `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
```console ```console
$ python3 admin.py list 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 edit <blocked|prompt|settings|reactions|params> #opens $EDITOR, vim if you don't have one
$ python3 admin.py block <user id> python3 admin.py block <user id>
$ python3 admin.py unblock <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
# 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
```console
$ 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
```console
$ 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 `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 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
```console ```console
$ python3 describe.py #only the empty ones, --all redoes everything, --model <name> to use another model, --gemini to use the gemini api instead 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 # colab
if your pc can't run the model you can host `main.py` on colab, run `setup_wizard.py` on both sides and say yes to the colab question 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
```console ```console
#on colab #on colab
$ python3 colab_setup.py 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 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 # IF IT FAILS
- check `./files/log/errorlog.txt` - check `./files/log/errorlog.txt`
@@ -117,3 +102,4 @@ it prints a wss:// address and a token, paste those into the wizard on the bot.p
- on colab main.py logs to `main.log` next to colab_setup.py - on colab main.py logs to `main.log` next to colab_setup.py
# have fun # have fun
don't ask me why the bot is female she just is