# Kjøre boten

***

## Starter boten

Med det virtuelle miljøet aktivt og `.env` konfigurert:

```bash
python -m bot.main
```

Ved vellykket oppstart skal du se konsollutskrift som:

```
Logget inn som Verbal Warning Logger#1234 (ID: 123456789012345678)
```

***

## Første gangs oppførsel

Ved aller første kjøring gjør boten automatisk følgende:

* Oppretter `warnings.db` — SQLite-database for muntlige advarsler
* Oppretter `staffpolls.db` — SQLite-database for avstemninger og maler
* Initialiserer alle tabellskjemaer
* Synkroniserer skråstrek-kommandoer globalt med Discord

> **Global kommandosynkronisering kan ta opptil en time** på å bli propagert til alle servere. Kommandoer vil vises i serveren din når Discords hurtigbuffer oppdateres.

***

## Raskere kommandosynkronisering under utvikling

For å få skråstrek-kommandoer til å vises umiddelbart i en enkelt server (nyttig under testing), rediger `bot/main.py` og erstatt synk-linjen i `setup_hook`:

```python
# Erstatt dette:
await self.tree.sync()

# Med dette (erstatt med ID-en til serveren din):
await self.tree.sync(guild=discord.Object(id=YOUR_GUILD_ID))
```

Kommandoer vil vises i den gilden i løpet av noen sekunder. Husk å reversere denne endringen før du distribuerer til produksjon hvis du vil at boten skal fungere i flere servere.

***

## Holde boten i gang

For en produksjonsdistribusjon bør du kjøre boten som en bakgrunnstjeneste slik at den overlever terminalfrakoblinger og serveromstarter.

### systemd (Linux)

Opprett `/etc/systemd/system/verbal-warning-logger.service`:

```ini
[Unit]
Beskrivelse=Verbal Warning Logger Discord Bot
Etter=network.target

[Service]
Type=simple
Bruker=din_bruker
Arbeidsmappe=/sti/til/verbal-warning-logger
ExecStart=/sti/til/verbal-warning-logger/.venv/bin/python -m bot.main
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
```

Deretter aktiver og start den:

```bash
sudo systemctl daemon-reload
sudo systemctl enable verbal-warning-logger
sudo systemctl start verbal-warning-logger
```

Sjekk logger med:

```bash
sudo journalctl -u verbal-warning-logger -f
```

### pm2 (enhver plattform)

```bash
pm2 start "python -m bot.main" --name verbal-warning-logger --interpreter python3
pm2 save
pm2 startup
```

***

## Stoppe boten

Send `Ctrl+C` i terminalen, eller hvis den kjører som en tjeneste:

```bash
sudo systemctl stop verbal-warning-logger
# eller
pm2 stop verbal-warning-logger
```

***

## Feilsøking

| Symptom                       | Sannsynlig årsak                                                                                |
| ----------------------------- | ----------------------------------------------------------------------------------------------- |
| `KeyError: DISCORD_TOKEN`     | `.env` fil mangler eller er ikke i prosjektroten                                                |
| Kommandoer vises ikke         | Global synkronisering er fortsatt under propagasjon — vent opptil 1 time, eller bruk gilde-synk |
| `/auttaja` kommandoer mangler | `SUPABASE_URL` / `SUPABASE_KEY` er ikke satt                                                    |
| `discord.errors.Forbidden`    | Boten mangler nødvendige tillatelser i kanalen eller serveren                                   |
| Tillatelsesfeil på `/verbal`  | Brukerens høyeste rolle er under `STAFF_ROLE_ID` i rollelisten                                  |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.vigila.augystudios.com/no/egen-hosting/running.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
