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
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.