IRC Bots: Difference between revisions

From Lojban
Jump to navigation Jump to search
No edit summary
 
(46 intermediate revisions by 6 users not shown)
Line 1: Line 1:
=A Guide to the IRC Bots of #lojban (and #ckule)=
A Guide to the IRC Bots of #lojban (also #ckule and ##jboselbau).
 
You might think all ~120 logged on users of #lojban are watching you and/or participating in the conversation. Well, no, we all live in different timezones and at any given moment of time most of them are inactive. But also, there are a bunch of robots! Some of them are even helpful. Read on for more.


==Lojban assistance==
==Lojban assistance==
;'''valsi'''
 
: This is a bidirectional Lojban-English dictionary. It works from a dump of [http://jbovlaste.lojban.org/ Jbovlaste], so it may not be completely up to date.
==='''vlaste'''===
: Run by [[donri]] ([https://github.com/lojban/vlasisku/blob/master/vlasisku/irc.py source]).
This is a bidirectional Lojban-English dictionary, run by [[la durka]]. It works from a dump of [http://jbovlaste.lojban.org/ Jbovlaste], so it may not be completely up to date.
: You can invoke '''valsi''' in the channel by prefixing a message with "valsi ", or send a private message to the bot (with no prefix).
 
: The content of the message is just a word. If it's a Lojban word, you'll get its definition. If it's an English word, you'll get a list of suggested translations.
Run by [[la donri]] ([https://github.com/lojban/vlasisku/blob/master/vlasisku/irc.py source]).
: Accepted options for Lojban word lookup: (you can give up to one option, in parentheses, e.g. "valsi lercu'aca'a (components)")
 
:* affix
You can invoke '''valsi''' in the channel by prefixing a message with "valsi ", or send a private message to the bot (with no prefix).
:: Get the affix (rafsi) form of the word.
 
:* class
The content of the message is just a word. If it's a Lojban word, you'll get its definition. If it's an English word, you'll get a list of suggested translations.
:: Get the selma'o (grammatical category) of the word.
 
:* type
Accepted options for Lojban word lookup: (you can give up to one option, in parentheses, e.g. "valsi lercu'aca'a (components)")
:: Get the type (cmavo/gismu/lujvo/etc) of the word.
* affix
:* notes
: Get the affix (rafsi) form of the word.
:: Return the notes field of the definition (without this option it isn't shown).
* class
:* cll
: Get the selma'o (grammatical category) of the word.
:: Get the link to the section of the CLL that discusses the word (not always accurate).
* type
:* url
: Get the type (cmavo/gismu/lujvo/etc) of the word.
:: Get the link to Vlasisku's page for the word.
* notes
:* components
: Return the notes field of the definition (without this option it isn't shown).
:: Break a lujvo into its component gismu (works on nonce lujvo).
* cll
:* rafsi
: Get the link to the section of the CLL that discusses the word (not always accurate).
:: Treat the word as a rafsi for the purposes of the search (many cmavo are also rafsi of other words).
* url
::* I don't see this option in the source, so maybe what's running is a slightly different version? [[User:Durka42|Durka42]] ([[User talk:Durka42|talk]])
: Get the link to Vlasisku's page for the word.
:* You can also send queries in vlasisku's internal query language, like "valsi class:BAI" or "valsi affix:ka'i".
* components
; '''gerna'''
: Break a lujvo into its component gismu (works on nonce lujvo). Beware: lujvo with missing hyphens are still parsed, so you can't rely on this to check your construction.
: This is a grammar checker based on [[jbofi'e]].
* rafsi
: Run by [[donri]] ([https://github.com/lojban/vlasisku/blob/master/vlasisku/irc.py source], same as '''valsi''').
: Treat the word as a rafsi for the purposes of the search (many cmavo are also rafsi of other words).
: You can invoke '''gerna''' in the channel by prefix a message with "gerna ", or send a private message to the bot (with no prefix).
:* I don't see this option in the source, so maybe what's running is a slightly different version? [[User:Durka42|Durka42]] ([[User talk:Durka42|talk]])
: The message is just a Lojban sentence. If it parses, you'll get the structure. If it doesn't parse or jbofi'e crashes, it will say "not grammatical" and try to show you which word broke the parse.
* You can also send queries in vlasisku's internal query language, like "valsi class:BAI" or "valsi affix:ka'i".
: There are no options.
* lujvo
;'''camxes''', '''cipra'''
: Combine a tanru into a lujvo, using [[jvocu'adju]]. If the canonical form is defined, the definition is shown.
: These are parser bots based on [[camxes]]. '''camxes''' parses regular Lojban while '''cipra''' has (most of?) the [[ELG]] implemented.
: Relatedly, if you ask '''vlaste''' for a lujvo not in canonical form, and no definition is found, it will try to help you by silently correcting it to canonical form.
: Who runs them? It must be different people since they are sometimes on at different times. Here is the [https://github.com/Ilmen-vodhr/ilmentufa source] (based on [https://github.com/mhagiwara/camxes.js camxes.js]]).
* finti
: You send this bot a sentence by prefixing it with the bot's name and a colon (the colon is mandatory, unlike other bots), e.g. "camxes: coi".
: Show the [[jbovlaste]] user who created the word.
: Accepted options:
* gimka
:* +s
: Shows whether the input gismu collides with any existing official or experimental gismu.
:: Show the selma'o of each word.
 
:* -f
Also, its lujvo-breaking algorithm for ''(components)'' is backed by [[camxes]], so it will call you out on a badly-constructed lujvo (e.g. a [[tosmabru]]), unlike '''valsi'''.
:: Don't show terminators.
 
:* -f+s (not +s-f)
<!--==='''gerna'''===
:: Both of the above.
This is a grammar checker based on [[jbofi'e]].
 
Run by [[la donri]] ([https://github.com/lojban/vlasisku/blob/master/vlasisku/irc.py source], same as '''valsi''').
 
You can invoke '''gerna''' in the channel by prefix a message with "gerna ", or send a private message to the bot (with no prefix).
 
The message is just a Lojban sentence. If it parses, you'll get the structure. If it doesn't parse or jbofi'e crashes, it will say "not grammatical" and try to show you which word broke the parse.
 
There are no options
-->
 
==='''camxes'''===
A grammar checking bot based on [[camxes]].
 
Run by [[la durka]] ([https://github.com/lojban/ilmentufa/blob/master/ircbot/camxes-bot.js source]).
 
You can invoke '''camxes''' in the channel by prefix a message with "camxes: ", or send a private message to the bot (with no prefix).
 
The message is just a Lojban sentence. If it parses, you'll get the structure. If it doesn't parse, it'll try to tell you where you went wrong.
 
Accepted flags for parsing: (put them before the sentence, like "camxes: +s-f coi"; you can put any number of flags in any order)
* +s
: Show the [[selma'o]] of each word in the sentence.
* -f
: Don't show elidible terminators.
* +exp (or -std)
: Parse using the [[ilmentufa]] experimental grammar.
* -exp (or +std)
: Parse using the standard [[BPFK]] grammar (default).
 
==='''mensi'''===
Kitchen sink bot run by [[la gleki]] ([https://github.com/lagleki/glekitufa/ source]).
 
Commands recognized by mensi:
*"'''.ilm '''", "'''.beta '''"
**These are parser options based on [[camxes]]. '''ilm''' parses regular [[BPFK]] Lojban while '''beta''' uses an experimental grammar of la [[ilmentufa]].
**You send this bot a sentence by prefixing it with the parser name and a colon, e.g. ".ilm coi". You can also private-message it (the prefixes are also needed there).
**Accepted options (put them before the sentence, like ".ilm+mts coi"):
***s - with spaces
***m - with morphology
 
***t - with terminators
***c - with selmaho
 
***n - with node labels
***j - in JSON format
 
*[[jbofihe]] parser
**".gerna " parses using jbofihe, which was the de facto standard parser before camxes.
*[[John Cowan]]'s parser
**".cowan " parses using the (very old) [[Official LLG Parser|official LLG parser]], based on the YACC grammar.
*Searching jbovlaste with mensi:
**Entering ".en coi" into the chat will output the English definition, notes and the author.
*showing etymology with mensi: ".krasi mlatu" will output Lojbanized sources for this gismu.
***lujvo are expanded and its structure is shown. If no lujvo is found it searches for other lujvo with the same se rafsi.
**Other languages are supported: ".jbo ", ".ja " (Japanese), ".ru " (Russian), ".f@ " (Easy French), ".de " (German), ".es " (Spanish), ".eo " (Esperanto), ".jb " (Lojban dictionary with examples).
**"/full " flag performs a search for a given sequence in definitions and notes. E.g. ".en /full greets".
*"Tatoeba:" outputs an arbitrary Lojban sentence from Tatoeba with a substring given
*Alternative orthography with '''mensi''':
**".rot13 " prefix performs ROT13 encoding on a given string
**".kru " prefix performs conversion to la [[krulermorna]] orthography
**"mensi: j " performs [[jbopomofo]] encoding on a given string
**"mensi: r " performs Cyrillic encoding on a given string
*Messaging
** "mensi: doi <nick> <message>"
*** Delayed messaging service. Next time <nick> says something in the channel, '''mensi''' will relay the message. You can use regular expressions in the nick.
*Loglan to Lojban conversion
** ".loi " converts Lojban text to Loglan (not perfect!). Failed words are marked with "*".
** ".coi " converts Loglan text to Lojban (not perfect!). Failed words are marked with "*".
*Glossing
** ".gloss " converts Lojban text to glossed English words.
*lujvo building
** ".lujvo " combines a given tanru into a list of lujvo and cmevla with their scores, using a method similar to [[jvocuhadju]]. The first (with the lowest score) lujvo are preferable in speech.
 
===tersmus===
[https://gitlab.com/zugz/tersmu/ la tersmu] converts Lojban sentences into logic formulas. Type "tersmus: " or "tersmux: " followed by a sentence to use it publicly; drop the prefix in private messages. Add "jbo: " before the sentence for Lojbanized output.
 
===Experimental grammars===
 
Some bots are testbeds for experimental grammar that may or may not find its way into common use. Currently all of them are based on camxes, but not fully compatible with the official grammar.
 
* '''[[zantufa]]'''
: Extensive reforms to basic sentence structure, connectives, and mekso. Most experimental cmavo listed on jbovlaste are supported. The bot uses the last stable release by default; adding "+exp " before the sentence switches to the unstable version. Adding "+mal " switches to '''maltufa''', a version meant for parsing older texts that lacks many of the reforms. Adding "+maf " switches to '''maftufa''', made to parse [http://selpahi.de/oz.html selpa'i's translation of The Wonderful Wizard of Oz]]. There is detailed [[zantufa|documentation]].
 
* '''[https://github.com/mezohe/ilmentufa spagetufa]'''
: Morphology reform, allowing new word shapes while preserving existing ones. Several changes taken from zantufa and alta. [[ce ki tau jau]] available as a runtime switch (send "+help" in private for a list of switches). Development stagnant.
 
* Another, older experimental grammar ([[ilmentufa]]) is part of both '''camxes''' and '''mensi''' bots. Most of its additions are also supported by the other experimental parsers.


==Other==
==Other==
; '''sidju'''
* '''nuzba'''
: This is an instance of the Phenny IRC bot.
: Searches Twitter for posts containing the words "lojban", "jbobau", or "ロジバン", and posts them whenever the channel has been quiet for two minutes. Takes no commands.
: Run by [[Tene]] ([https://github.com/sbp/phenny source]).
* '''djisku'''
; '''xorban'''
: Monitors the channel for new users. If a newbie doesn't get an answer within one minute of first talking, it posts a message asking for patience. You can have a PM sent to you whenever a newbie starts talking by saying "djisku: ko mi fanza". Unsubscribe with "djisku: ko mi na fanza".
: Xorban is a parser bot for another logical language (you guessed it, called Xorban). It's actually the same bot as '''camxes''' and '''cipra''' but with a different grammar.
* '''xorban'''
: Run by [[selpa'i]].
: Xorban is a parser bot for another logical language (you guessed it, called Xorban). It's actually the same bot as '''camxes''' but with a different grammar.
; '''mensi''', '''livla'''
: Run by [[la selpa'i]].
: These bots start talking when the channel is dead, so that there are no long stretches of time without Lojban being transmitted over the Internet.
* '''stetudu'''
: Run by [[gleki]] ([https://github.com/lagleki/glekitufa/tree/master/ircbot source]).
: An instance of [[User:Leslie Beaumont|Randall Holmes]]'s [http://math.boisestate.edu/~holmes/loglan.org/holmes_stuff/cefli.html parser] for [[Loglan]]. Takes a Loglan sentence prefixed with "stetudu: " in the channel or without a prefix in private messages. Add "+s " before the sentence to show rule names.
: '''livla''' repeats sentences from [[Tatoeba]], while '''mensi''' has a list of canned replies.
* '''gua'''
: Parses [[Gua\spi]], yet another logical language, using an incomplete grammar reconstructed by [[User:Cirko|cirko]]
* '''vreji'''
: Logs Lojban utterances in the channel at http://www.lojban.org/irclogs/.
: Run by a pile of Perl scripts.
: Does not respond to any commands, as far as I know.

Latest revision as of 18:27, 21 July 2017

A Guide to the IRC Bots of #lojban (also #ckule and ##jboselbau).

You might think all ~120 logged on users of #lojban are watching you and/or participating in the conversation. Well, no, we all live in different timezones and at any given moment of time most of them are inactive. But also, there are a bunch of robots! Some of them are even helpful. Read on for more.

Lojban assistance

vlaste

This is a bidirectional Lojban-English dictionary, run by la durka. It works from a dump of Jbovlaste, so it may not be completely up to date.

Run by la donri (source).

You can invoke valsi in the channel by prefixing a message with "valsi ", or send a private message to the bot (with no prefix).

The content of the message is just a word. If it's a Lojban word, you'll get its definition. If it's an English word, you'll get a list of suggested translations.

Accepted options for Lojban word lookup: (you can give up to one option, in parentheses, e.g. "valsi lercu'aca'a (components)")

  • affix
Get the affix (rafsi) form of the word.
  • class
Get the selma'o (grammatical category) of the word.
  • type
Get the type (cmavo/gismu/lujvo/etc) of the word.
  • notes
Return the notes field of the definition (without this option it isn't shown).
  • cll
Get the link to the section of the CLL that discusses the word (not always accurate).
  • url
Get the link to Vlasisku's page for the word.
  • components
Break a lujvo into its component gismu (works on nonce lujvo). Beware: lujvo with missing hyphens are still parsed, so you can't rely on this to check your construction.
  • rafsi
Treat the word as a rafsi for the purposes of the search (many cmavo are also rafsi of other words).
  • I don't see this option in the source, so maybe what's running is a slightly different version? Durka42 (talk)
  • You can also send queries in vlasisku's internal query language, like "valsi class:BAI" or "valsi affix:ka'i".
  • lujvo
Combine a tanru into a lujvo, using jvocu'adju. If the canonical form is defined, the definition is shown.
Relatedly, if you ask vlaste for a lujvo not in canonical form, and no definition is found, it will try to help you by silently correcting it to canonical form.
  • finti
Show the jbovlaste user who created the word.
  • gimka
Shows whether the input gismu collides with any existing official or experimental gismu.

Also, its lujvo-breaking algorithm for (components) is backed by camxes, so it will call you out on a badly-constructed lujvo (e.g. a tosmabru), unlike valsi.


camxes

A grammar checking bot based on camxes.

Run by la durka (source).

You can invoke camxes in the channel by prefix a message with "camxes: ", or send a private message to the bot (with no prefix).

The message is just a Lojban sentence. If it parses, you'll get the structure. If it doesn't parse, it'll try to tell you where you went wrong.

Accepted flags for parsing: (put them before the sentence, like "camxes: +s-f coi"; you can put any number of flags in any order)

  • +s
Show the selma'o of each word in the sentence.
  • -f
Don't show elidible terminators.
  • +exp (or -std)
Parse using the ilmentufa experimental grammar.
  • -exp (or +std)
Parse using the standard BPFK grammar (default).

mensi

Kitchen sink bot run by la gleki (source).

Commands recognized by mensi:

  • ".ilm ", ".beta "
    • These are parser options based on camxes. ilm parses regular BPFK Lojban while beta uses an experimental grammar of la ilmentufa.
    • You send this bot a sentence by prefixing it with the parser name and a colon, e.g. ".ilm coi". You can also private-message it (the prefixes are also needed there).
    • Accepted options (put them before the sentence, like ".ilm+mts coi"):
      • s - with spaces
      • m - with morphology
      • t - with terminators
      • c - with selmaho
      • n - with node labels
      • j - in JSON format
  • jbofihe parser
    • ".gerna " parses using jbofihe, which was the de facto standard parser before camxes.
  • John Cowan's parser
  • Searching jbovlaste with mensi:
    • Entering ".en coi" into the chat will output the English definition, notes and the author.
  • showing etymology with mensi: ".krasi mlatu" will output Lojbanized sources for this gismu.
      • lujvo are expanded and its structure is shown. If no lujvo is found it searches for other lujvo with the same se rafsi.
    • Other languages are supported: ".jbo ", ".ja " (Japanese), ".ru " (Russian), ".f@ " (Easy French), ".de " (German), ".es " (Spanish), ".eo " (Esperanto), ".jb " (Lojban dictionary with examples).
    • "/full " flag performs a search for a given sequence in definitions and notes. E.g. ".en /full greets".
  • "Tatoeba:" outputs an arbitrary Lojban sentence from Tatoeba with a substring given
  • Alternative orthography with mensi:
    • ".rot13 " prefix performs ROT13 encoding on a given string
    • ".kru " prefix performs conversion to la krulermorna orthography
    • "mensi: j " performs jbopomofo encoding on a given string
    • "mensi: r " performs Cyrillic encoding on a given string
  • Messaging
    • "mensi: doi <nick> <message>"
      • Delayed messaging service. Next time <nick> says something in the channel, mensi will relay the message. You can use regular expressions in the nick.
  • Loglan to Lojban conversion
    • ".loi " converts Lojban text to Loglan (not perfect!). Failed words are marked with "*".
    • ".coi " converts Loglan text to Lojban (not perfect!). Failed words are marked with "*".
  • Glossing
    • ".gloss " converts Lojban text to glossed English words.
  • lujvo building
    • ".lujvo " combines a given tanru into a list of lujvo and cmevla with their scores, using a method similar to jvocuhadju. The first (with the lowest score) lujvo are preferable in speech.

tersmus

la tersmu converts Lojban sentences into logic formulas. Type "tersmus: " or "tersmux: " followed by a sentence to use it publicly; drop the prefix in private messages. Add "jbo: " before the sentence for Lojbanized output.

Experimental grammars

Some bots are testbeds for experimental grammar that may or may not find its way into common use. Currently all of them are based on camxes, but not fully compatible with the official grammar.

Extensive reforms to basic sentence structure, connectives, and mekso. Most experimental cmavo listed on jbovlaste are supported. The bot uses the last stable release by default; adding "+exp " before the sentence switches to the unstable version. Adding "+mal " switches to maltufa, a version meant for parsing older texts that lacks many of the reforms. Adding "+maf " switches to maftufa, made to parse selpa'i's translation of The Wonderful Wizard of Oz]. There is detailed documentation.
Morphology reform, allowing new word shapes while preserving existing ones. Several changes taken from zantufa and alta. ce ki tau jau available as a runtime switch (send "+help" in private for a list of switches). Development stagnant.
  • Another, older experimental grammar (ilmentufa) is part of both camxes and mensi bots. Most of its additions are also supported by the other experimental parsers.

Other

  • nuzba
Searches Twitter for posts containing the words "lojban", "jbobau", or "ロジバン", and posts them whenever the channel has been quiet for two minutes. Takes no commands.
  • djisku
Monitors the channel for new users. If a newbie doesn't get an answer within one minute of first talking, it posts a message asking for patience. You can have a PM sent to you whenever a newbie starts talking by saying "djisku: ko mi fanza". Unsubscribe with "djisku: ko mi na fanza".
  • xorban
Xorban is a parser bot for another logical language (you guessed it, called Xorban). It's actually the same bot as camxes but with a different grammar.
Run by la selpa'i.
  • stetudu
An instance of Randall Holmes's parser for Loglan. Takes a Loglan sentence prefixed with "stetudu: " in the channel or without a prefix in private messages. Add "+s " before the sentence to show rule names.
  • gua
Parses Gua\spi, yet another logical language, using an incomplete grammar reconstructed by cirko
  • vreji
Logs Lojban utterances in the channel at http://www.lojban.org/irclogs/.
Run by a pile of Perl scripts.
Does not respond to any commands, as far as I know.