<our> is an IRC bot on tilde.town. Commands
are just executables in a world-writeable directory. If you’re on town,
you can create new commands just by putting a script in
Lowering the barrier to entry by so much gave us a pretty nice bot ecosystem, and has just proven to overall be a bunch of fun.
2022-04-19: 18:56 <dzwdz> i like the idea of having every command be a separate binary 18:59 <opfez> it does make for rather composable programs (in some cases) 18:59 <opfez> netcat is neat 18:59 <dzwdz> i meant in a [irc] bot 18:59 <dzwdz> you could create new commands very quickly [...] 19:01 <dzwdz> wait do we have bwrap on here 19:01 <dzwdz> idea: a bot which works like this 19:01 <dzwdz> where the command directory is public 19:01 <dzwdz> so anyone could drop a script there to create a new command 19:01 <opfez> sounds pretty cool 19:01 <opfez> very pubnixy 19:03 <opfez> every command gets run with arguments specifying the user that called the command and (if necessary), additional arguments to the command
Basically, at the time I’ve been thinking about making an
sh(1) bot framework which would store each command in a
separate script. But, I’ve realized:
I grabbed a basic Ruby bot framework I’ve made the other day, and quickly prototyped jsbot’s weird cousin.
19:49 --> our (beep boop) (dzwdz@localhost) has joined #tildetown 19:49 <dzwdz> our/greet 19:49 <our> hi dzwdz!dzwdz@localhost from #tildetown 19:49 <opfez> \o/ 19:49 <dzwdz> /home/dzwdz/code/town/our/cmds 19:49 <dzwdz> world writeable 19:49 <dzwdz> have fun 19:50 <@vilmibm> whee
Others soon started playing with it. ~vilmibm immediately made some commands in Go, for example.
19:56 <elly> our/../../../../../../../bin/ls 19:56 <elly> hm! definitely thought that would work :P [...] 19:56 <dzwdz> first off 19:56 <dzwdz> how dare you assume i'm such a bad programmer 19:56 <dzwdz> second off 19:56 <dzwdz> our/../../../bin/echo lol 19:56 <our> dzwdz!dzwdz@localhost lol #tildetown 20:13 <@vilmibm> dzwdz: i linked /home/dzwdz/code/town/our/cmds to /town/our
After making the proof of concept bot, I just left it running with no other changes. If it ain’t broke, don’t fix it.
Except it was broke and I wasn’t fixing it. Thus, ~kindrobot took over.
2022-08-24: 04:01 <kindrobot> our/timefor dzwdz 04:01 <our> Wed, 24 Aug 2022 06:01:15 +0200 04:14 <kindrobot> dzwdz: (when you wake up) for your consideration: I added forking, a persistence data dir, and limited configuration to our. You can check it out in #bots 04:15 <kindrobot> You can use "your/..." followed by "your/town" (or any other command) to test forking 04:15 <kindrobot> You can use "your/count" to test persistence.
our got her a job at Wikimedia.
2022-10-13: 19:59 <kindrobot> When I was interviewed at Wikimedia, I talked about the "our" project that I've contributed a bit to. It seemed like the most relevant to what they were doing which is user defined functions for Wikipedia. 19:59 <dzwdz> i can't believe i got the job at wikipedia 19:59 <kindrobot> Yeah good job dzwdz :)
Look, our is just like any other IRC bot, and the commands people have made are about what you’d expect. Some are just typical utility commands:
<dzwdz> our/timefor dzwdz <our> Sun, 23 Jul 2023 18:47:44 +0200 <dzwdz> our/w Kraków <our> Cracow, , Poland | Sunny 28°C (82°F) (feels 29°C (84°F)) | 33% humidity | 1012 hPa
Some are fortune-style commands.
<dzwdz> our/qotd <our> 00:50:58 <daisy> "i like to practise my bakery baking bakery in the bakery" <dzwdz> our/plan9/fortune <our> Did you know ... that no-one ever reads these things?
Some play well-known sports.
<our> your/ping <your> our/pong <our> your/ping <your> our/pong <our> your/ping <your> our/pong <our> your/ping <your> our/pong
The one I personally use the most, though, is
It’s handy both to explain *nix stuff live, and to just do all sorts of
2023-07-23: [...] [someone was learning about /dev/shm and tmpfs] <dzwdz> /dev/shm IS tmpfs <dzwdz> our/sh grep /dev/shm /proc/mounts <our> tmpfs /dev/shm tmpfs ro,nosuid,nodev,inode64 0 0 2023-07-24: <dzwdz> i'm going to try to write a small article about our <dzwdz> how bad of a title is "/town/our, a tildebrained irc bot" <dzwdz> also does anyone have #tildetown logs from around 1650394568 <dzwdz> our/sh date -d @1650394568 <our> Tue Apr 19 18:56:08 UTC 2022 <dzwdz> login, maybe? [~login did turn out to have the logs. thanks for sending them over <3]
2022-04-20: 14:37 <nihilazo> our/sh rm * 14:37 <dzwdz> nico what the fuck
First off—don’t get the wrong idea here. This wasn’t malicious. ~nihilazo was just messing around, knowing that I implemented sandboxing. (also, note that this happened not even 24 hours after the bot went live)
But yeah, it’s safely sandboxed using bubblewrap. The
entire filesystem is remounted ro, except a single directory for
persistent data, a fresh
/tmp/, and a fresh devtmpfs (for
/dev/null). The uid is also spoofed to 0, but that’s just
for shits and giggles.
That being said, the IRC is only accessible internally, so if you can
our commands, you can also just run the commands
yourself. Everything’s logged, too.
If you must, the source’s at git.tilde.town. Note that:
cmds/directory in the repo only includes a small subset of old commands