Follow

In reworking some of my bots to use instead of , I'm looking at using a single unlisted room instead of chats to individual accounts (1:1 chat, not MUC).

This changes the command parser substantially. Probably more than I think.

What I'm considering is whether to keep the commands looking like "Bot, do this thing..." or switching to "Do this thing..." and the bots present look at the message, see if it's from their owner (me, in this case), and if so proceed to parse the command. The latter means that failed parses would fall into the same case as mis-parses, and result in a storm of error responses from every bot that doesn't have commands like that.

Of course, bots could easily just not send error responses, but that messes up the "there really is an error" handling case.

I'm also toying with the idea of having both use cases implemented for usability's sake (plus, it adds the "send commands directly to the bot" case).

What do you think, ?

@drwho

I take it that by “#bot” you mean an #XMPP component?

Cause if not, 99% chance you are/were doing it wrong.

E.g. I've used bots (actual accounts with no human operator) for cluster command, control and coordination in the past, because I didn't know any better (and #XEP-0114 was quite new back then). A design I implemented more recently uses a component instead and it's much cleaner, maintainable and provides better UX.

@0 I mean an actual bot. Running from systemd in --user mode, taking orders over XMPP (XMPP bridge, really) and doing stuff for me.

github.com/virtadpt/exocortex-

I don't doubt I'm doing it wrong. I'm about 30 degrees off of the same vector everybody else is on, it seems like.

What sort of design did you implement?

@drwho

Yeah I'd definitely expose that as a series of services run from one component (or more, can do either).

UX-wise you could have your component register the service bot.example.com (where example.com is your #XMPP server) and serve the different bots via the local part, e.g., copy@bot.example.com and so on. If you wanted to run bots on different machines you could even go for something like copy@hal9000.bot.example.com (or swap copy ←→ hal9000)

@drwho

Writing a service is 95% the same as writing a bot, but much cleaner and actually discoverable (if you so choose).

@0 I'm not sure what you mean by component.

I run them on multiple machines, a couple of dozen at last count.

@drwho

> I'm not sure what you mean by component.

#XEP-0114

Sign in to participate in the conversation
hackers.town

A bunch of technomancers in the fediverse. Keep it fairly clean please. This arcology is for all who wash up upon it's digital shore.