bfbot is an IRC bot written by User:Palaiologos.
bfbot is capable of executing brainfuck (asm2bf, gisa and tiny-c support will be added later on). It's possible to define commands using these languages. The additions are permanent.
The default prefix is
=. You can find an always-up-to-date repo on Github.
Help displays generic information about the bot and commands. It's redirecting users to this page.
If you want to define a long command that won't fit into a single IRC message, you can use the
You have 10 temporary buffers available. To set contents of a buffer, use
=str as follows:
<kspalaiologos> =str 0s Hello <bfbot> ok
Contents of buffer 0 will be set to "Hello". "ok" response means write succeeded. If you want to clear a buffer, use d flag:
<kspalaiologos> =str 9d <bfbot> ok
Now buffer is empty. There is one very important flag - a. For example:
<kspalaiologos> =str 0s Hello <bfbot> ok <kspalaiologos> =str 0a World! <bfbot> ok
The following conversation with bot will result in buffer 0 content's be equal to "Hello World!". As you can observe, it's quite straightforward.
Let's sum things up:
- buffer is a temporary storage unit, at most 65 kilobytes big, storing temporary data.
- to set buffer data use s flag with the buffer ID before it, eg.
=set 0s abc
- to clear buffer use d flag, eg.
- to append data to a buffer, use a flag, eg.
=set 0a test
- you may use buffers to define a command.
- after you are done, it's a gentleman's rule to clear the buffer so it doesn't clog up space.
If you want to define your own, first class command, you have to use
=def. Let's look
at a very straightforward example. We will define our very own echo command.
<kspalaiologos> =str 0s ,[.,] <bfbot> ok <kspalaiologos> =def 0echo <bfbot> ok, defined 'echo' <kspalaiologos> =echo greetings <bfbot> greetings
A lot of stuff is covered here. First we set up a buffer, then we use def with a buffer ID and the name (note, it has to be maximum 16 characters long). The outcome is a first-class, non-overriding (you can't override builtins) function. The function may take at most 5 seconds and 128 memory cells to run.
Want to remove a user-defined function? Just use undef:
<kspalaiologos> =echo abc <bfbot> abc <kspalaiologos> =undef echo <bfbot> ok <kspalaiologos> =echo greetings <bfbot> No such command.
If you need to list all user-defined commands, you may use
<kspalaiologos> =list <bfbot> echo msg1 prog1 prog2 prog3
You can use additional parameter to filter the search result:
<kspalaiologos> =list prog <bfbot> prog1 prog2 prog3
You can list commands in pages too, using plist:
<kspalaiologos> =plist 0 <bfbot> echo msg1 prog1 prog2 prog3
The second argument is page number. Commands are grouped 25-30 each page.
The only form of writable and readable persistent memory. It's used to store stuff about various user-defined commands. To read and write a documentation string:
Write: <kspalaiologos> =doc echo Example <bfbot> ok. Read: <kspalaiologos> =doc echo <bfbot> echo: Example
Type 0: 8bit cells, integer i/o
Type 1: 32bit cells, integer i/o
Type 2: 16bit cells, integer i/o
Type 3: 8bit cells
Type 4: 32bit cells
Type 5: 16bit cells
To set the program type, enter the digit first by prepending a digit at the front.