summaryrefslogtreecommitdiff
path: root/README.md
blob: 273fb83b5ef3802658ee6008d93c9dc07b21ea67 (plain)
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
# slopbot

Zulip bot for [meshheads.org](https://zulip.meshheads.org) that replies with stock prices when it sees `$TICKER` patterns and calls `agent` for `@slop` mentions.

## Usage

Post `$NVDA` or `$AAPL is mooning` in any stream and slopbot replies with the current price. Mention `@slop` and it runs a one-shot `agent` subprocess with recent Zulip topic history.

## Setup

```bash
pip install -r requirements.txt
cp .zuliprc.example .zuliprc
# edit .zuliprc with your bot credentials
python main.py
```

Get your `.zuliprc` from Zulip: Settings → Bots → your bot → download config.

## Architecture

- `main.py` — single-file bot, raw `zulip` event loop (no framework)
- `fetch_price(ticker)` — isolated data layer, easy to swap yfinance for a real API
- `ask_agent(msg, content)` — runs the Rust `agent` binary once per mention
- Regex: `\$([A-Z]{1,5})` — matches 1-5 uppercase letters after `$`
- Deduplicates tickers per message, replies in-place (same stream + topic)
- `flake.nix` — packages slopbot with `agent` from `/home/ben/src/bsima/agentd` as a Nix input

## Extending

Future ideas:
- Swap `fetch_price` for Finnhub/Polygon for real-time data
- Add LLM commentary on price moves
- Support crypto tickers
- Add `@slopbot summarize $NVDA` command style