Difference between revisions of "Begiak"
TommiPirinen (talk | contribs) |
|||
(173 intermediate revisions by 19 users not shown) | |||
Line 1: | Line 1: | ||
{{TOCD}} |
|||
'''begiak''' is the irc bot in the [[IRC|#apertium]] irc channel. Its primary function is to report svn updates to various relevant repositories, but it serves some other purposes too. |
|||
'''begiak''' is the IRC bot in the #apertium [[IRC]] channel. It serves several purposes, including to showcase some applications of the apertium translation [[API]], getting information about languages and other topics, and providing various forms of reminders, as well as a couple features that are just for fun. |
|||
== Background == |
== Background == |
||
Begiak was set up by conor_f for [[Google Code-in|GCI 2012]] |
Begiak was set up by conor_f for [[Google Code-in|GCI 2012]], and several modules were written and fixed by [[User:Sushain|sushain]], Qasim, and a number of other GCI students since then. The core code base is the [https://github.com/mutantmonkey/phenny mutantmonkey port] to Python3 of the [http://inamidst.com/phenny/ phenny] bot. Our codebase is currently hosted at [https://github.com/apertium/phenny]. |
||
Begiak means "the eyes" in [[Basque]]. |
Begiak means "the eyes" in [[Basque]]. |
||
== |
== Features == |
||
Begiak recognises the following commands. |
|||
The following svn repositories are monitored by begiak. Begiak polls for updates when it receives a ping from the server. Also see [[#AI Features|below]] for some ways to manually update |
|||
* [[Using SVN|apertium.svn.sourceforge.net]] |
|||
* HFST |
|||
* vislcg3 |
|||
* <code>.awikstats update <lang></code> — update the wikipage apertium-LANG/stats (note: will dump a bunch of info in private chat) |
|||
== AI Features == |
|||
* <code>.follow <nick> <lg1-lg2> [follower]</code> — Follow someone and translate as they speak. (Translations are sent as notices to the follower (follower feature is admin only!)) |
|||
Begiak recognises the following commands. Commands in '''bold''' are special apertium-related or #apertium-specific commands, or were designed with apertium in mind. |
|||
* <code>.following</code> — List people currently being followed. |
|||
* .8ball — magic 8 ball |
|||
* <code>.iso639 <lg></code> — look up [http://en.wikipedia.org/wiki/ISO_639 ISO 639]-1, -2 and -3 language codes either by code or by language name. Codes sourced from Ethnologue.com (639-3) and Wikipedia (-1 and -2) |
|||
* '''.awik — Search for something on Apertium wiki''' |
|||
* <code>.isodb status</code> — see if the database updater (.isodb update) is running |
|||
* .beats — Shows the internet time in Swatch beats |
|||
* <code>.issue <title></code> — create a new GitHub issue. |
|||
* .botsnack — Give begiak a snack for being good |
|||
* <code>.listpairs <lg></code> — List language pairs available for apertium translation |
|||
* .c — Query Google calculator |
|||
* <code>.listlangs</code> — List languages available for apertium translation |
|||
* .catfact — Random facts about cats |
|||
* <code>.t <lg1-lg2> [ | lg2-lg3 ...] <text>''</code> — Apertium translate |
|||
* .chill — Measure the current channel chillness level. |
|||
* <code>.unfollow <nick></code> — Stop following a user. |
|||
* .ety — Look up the etymology of a word |
|||
* <code>.8ball</code> — magic 8 ball |
|||
* .fcc ''callsign'' — Look up a callsign issued by the FCC |
|||
* <code>.beats</code> — Shows the internet time in Swatch beats |
|||
* '''.follow ''nick'' ''lg1-lg2'' - Follow a user and translate as they speak. (Translations are private messaged to you)''' |
|||
* <code>.botsnack</code> — Give begiak a snack for being good |
|||
* '''.following - List users currently being followed.''' |
|||
* . |
* <code>.c</code> — Calculator using SymPy. |
||
* . |
* <code>.chill</code> — Measure the current channel chillness level. |
||
* <code>.choose <choice1> <choice2></code> — begiak will choose one of the two options (randomly). |
|||
* .in — Set a reminder |
|||
* <code>.ety</code> — Look up the etymology of a word |
|||
* .imdb — Search imdb |
|||
* <code>.fcc <callsign></code> — Look up a callsign issued by the FCC |
|||
* .linx ''url'' — Upload ''url'' to linx.li |
|||
* <code>.fight <nick></code> — have begiak fight someone for you. |
|||
* '''.listpairs (''lg'') — List language pairs available for apertium translation''' |
|||
* <code>.hug <nick></code> — have begiak hug someone for you. |
|||
* '''.listlangs — List languages available for apertium translation''' |
|||
* <code>.in <time></code> — Set a reminder |
|||
* '''.noexceptions (''nick'') — Tells someone there aren't ever any exceptions''' |
|||
* <code>.linx <url></code> — Upload ''url'' to linx.li |
|||
* .npl — Shows the time from NPL's SNTP server |
|||
* <code>.npl</code> — Shows the time from NPL's SNTP server |
|||
* .nsfw ''link'' - for when a link isn't safe for work |
|||
* <code>.nsfw <link></code> — for when a link isn't safe for work |
|||
* .py — Evaluate an expression in python (This runs as a sandboxed web service, not on your computer) |
|||
* <code>.pesters |
|||
* '''.t ... ''lg1-lg2 ( | lg3-lg4 ...)'' — Apertium translate''' |
|||
** begiak: pester <nick> <message></code> — Sends a message to nick every hour they're around (or something. settable in config) |
|||
* .seen — When was the last time a user was seen? |
|||
** <code>.pesters snooze <nick></code> — 'snooze' a pester from nick |
|||
* .stache ''url'' — Moustachify an image |
|||
** <code>.pesters <dismiss|rm|remove> <to|from> <nick></code> — to stop pestering/being pestered by nick |
|||
* .tell ''nick'' ''message'' (''**pm**'') — Tells someone something the next time they say something in a channel begiak is monitoring. The **pm** option has the message sent privately. |
|||
* Search commands: |
|||
* .time — Return the current time |
|||
** The search commands are used to point other users to the output of several supported commands which are as follows: |
|||
* .title — Get the title of a link |
|||
*** Apertium Wiki (<code>.awik</code>) |
|||
* .tock — Shows the time from the USNO's atomic clock |
|||
*** Wikipedia (<code>.wik</code>) |
|||
* .u — Search for a unicode character |
|||
*** Urban Dictionary (<code>.urb</code>) |
|||
* '''.unfollow ''nick'' - Stop translating a user.''' |
|||
*** Wiktionary (<code>.w</code>) |
|||
* .urb — Query urban dictionary |
|||
*** DuckDuckGo Search (<code>.search</code>) |
|||
* .wa — Query Wolfram Alpha |
|||
** Replace <code>.wik</code> or <code>.awik</code> with any of the above commands for appropriate output like 'svineet, "India, officially the Republic of India (Bhārat Gaṇarājya),[18][19][c] is a country in South Asia" - https://en.wikipedia.org/wiki/India' for <code>.wik India -> svineet</code> |
|||
* .weather — Get the weather for a city |
|||
*** <code>.awik Begiak -> svineet</code> |
|||
* .wik — Search for something on Wikipedia |
|||
*** <code>.awik Begiak → svineet</code> |
|||
* .wuvt — Find out what radio station WUVT is currently playing |
|||
*** <code>nick: .wik India</code> |
|||
* .yi — Shows whether it is currently yi or not |
|||
*** <code>nick, .wik India</code> |
|||
* begiak: tell nick something — Send a message to nick |
|||
*** <code>.awik India -> nick</code> |
|||
* begiak: "parlez-vous français"? — Translate a phrase (google translate) |
|||
* <code>.seen</code> — When was the last time a user was seen? |
|||
* '''begiak: esan! — Poll for svn updates''' ("esan!" means "say!" in Basque) |
|||
* <code>.time [timezone]</code> — Returns current time in timezone (can be a city or a time zone e.g UTC). If timezone is empty, returns current time in GMT time zone. |
|||
* '''begiak: recent — Get most recent svn updates''' |
|||
* <code>.tz</code> — Timezone converter Converts a time from one timezone to another. (e.g., .tz 335EST in CET, or .tz 335EST in London) |
|||
* <code>.tells</code> — See a summary of outstanding reminders you've sent to others using "begiak: tell" |
|||
** begiak: tell <nick> <message> [**pm**]</code> — Tells someone something the next time they say something in a channel begiak is monitoring. The **pm** option has the message sent privately. |
|||
** <code>.tells <nick></code> — List your reminders currently queued to that nick |
|||
** <code>.tells rm <num></code> — Delete a queued reminder using its number from .tells nick |
|||
* <code>.alias</code> — manage aliases |
|||
** <code>.alias add <nick></code> — adds an alias for your nick of nick |
|||
** <code>.alias rm <nick></code> — removes an alias for nick nick |
|||
** <code>.alias list <nick></code> — lists existing aliases for nick |
|||
* <code>.u <char></code> — Search for a unicode character |
|||
* <code>.weather <city></code> — Get the weather for a city |
|||
* <code>.yi</code> — Shows whether it is currently yi or not |
|||
=== Admin |
=== Admin === |
||
These are admin-only, or only useful to admins. |
|||
* begiak: reload ''module'' — reload a module |
|||
* <code>.isodb update</code> — update the local database of ISO 639 codes |
|||
* <code>.greeting</code> — Manage Greetings |
|||
** <code>.greeting add <name> <message></code> — Add a greeting |
|||
** <code>.greeting del <name></code> - Delete a greeting |
|||
* <code>.gitserver [status|start|stop]</code> — get the githook-server's status/start it/stop it. See [[Begiak's git plugin]] for more info. |
|||
* <code>.tzdb</code> — Manage timezone database |
|||
** <code>.tzdb update</code> — Updates a timezones database (admin only) |
|||
** <code>.tzdb status</code> — Returns a status of updating a timezones database |
|||
=== |
=== Unknown === |
||
These functions/plugins either don't seem to work or need some figuring out: |
These functions/plugins either don't seem to work or need some figuring out: |
||
* .tfw |
* .tfw |
||
* .validate |
|||
* rule34 |
|||
* lastfm |
* lastfm |
||
* mylife |
* mylife (.fml .mlia) |
||
* oblique |
* oblique |
||
* .whereis ''nick'' — Tells you nick's current status. |
|||
* .queue — Manage lists. |
|||
** .queue new ''name'' [''item1'', ''item2'' ...] — Make a new queue |
|||
** .queue ''name'' — Display a queue |
|||
** .queue delete ''name'' — Delete a queue |
|||
** .queue ''name'' add ''item'' — Add an item |
|||
** .queue ''name'' remove ''item'' — Remove an item |
|||
** .queue ''name'' pop — Pop an item off the queue |
|||
** .queue ''name'' swap ''item1'', ''item2'' — Swap two items |
|||
* .py — Evaluate an expression in python (This runs as a sandboxed web service, not on your computer) |
|||
* .wikicount ''lg'' — Get the number of articles an official or incubated Wikipedia for the specified language has, given a Wikipedia code or partial language name. |
|||
* .(ml|mailinglist) poll — Poll for new messages in apertium mailing lists (this is automatically done every five minutes). |
|||
* .(ml|mailinglist) last <list> — Get the last message in a specified list. |
|||
== Help! It crashed!== |
|||
Begiak has a known bug that causes it to repeatedly quit and rejoin. A few recent changes have reduced this, but it still occasionally occurs. Please don't report this as an issue; we already know about it. If you know how to fix it, however, please do tell us. |
|||
== Development == |
|||
A good tutorial on creating Phenny modules can be found [https://github.com/myano/jenni/wiki/How-to-create-a-phenny-module here]. Also, note that some commands start with a period and others start with "begiak: "; new commands should use a period. |
|||
== Administration == |
|||
Begiak is controlled by an init script (/etc/init.d/begiak.sh, found at [https://github.com/apertium/phenny/blob/master/init.sh]) on Bytemark, and can be started, stopped, and restarted by anyone with sudo access. |
|||
== Irssi == |
|||
Since begiak talks a lot it may be beneficial to set your IRC so begiak's messages don't have to alert you very loudly: |
|||
<pre> |
|||
ignores = ( |
|||
{ level = "JOINS PARTS QUITS MODES NICKS"; }, |
|||
{ mask = "begiak"; level = "NO_ACT ALL"; }, |
|||
); |
|||
</pre> |
|||
This way you don't get highlights in channel list when begiak says automated messages or goes in the join-part-join cycle. |
|||
[[Category:Bots]] |
[[Category:Bots]] |
Latest revision as of 17:01, 3 December 2020
begiak is the IRC bot in the #apertium IRC channel. It serves several purposes, including to showcase some applications of the apertium translation API, getting information about languages and other topics, and providing various forms of reminders, as well as a couple features that are just for fun.
Background[edit]
Begiak was set up by conor_f for GCI 2012, and several modules were written and fixed by sushain, Qasim, and a number of other GCI students since then. The core code base is the mutantmonkey port to Python3 of the phenny bot. Our codebase is currently hosted at [1].
Begiak means "the eyes" in Basque.
Features[edit]
Begiak recognises the following commands.
.awikstats update <lang>
— update the wikipage apertium-LANG/stats (note: will dump a bunch of info in private chat).follow <nick> <lg1-lg2> [follower]
— Follow someone and translate as they speak. (Translations are sent as notices to the follower (follower feature is admin only!)).following
— List people currently being followed..iso639 <lg>
— look up ISO 639-1, -2 and -3 language codes either by code or by language name. Codes sourced from Ethnologue.com (639-3) and Wikipedia (-1 and -2).isodb status
— see if the database updater (.isodb update) is running.issue <title>
— create a new GitHub issue..listpairs <lg>
— List language pairs available for apertium translation.listlangs
— List languages available for apertium translation.t <lg1-lg2> [ | lg2-lg3 ...] <text>
— Apertium translate.unfollow <nick>
— Stop following a user..8ball
— magic 8 ball.beats
— Shows the internet time in Swatch beats.botsnack
— Give begiak a snack for being good.c
— Calculator using SymPy..chill
— Measure the current channel chillness level..choose <choice1> <choice2>
— begiak will choose one of the two options (randomly)..ety
— Look up the etymology of a word.fcc <callsign>
— Look up a callsign issued by the FCC.fight <nick>
— have begiak fight someone for you..hug <nick>
— have begiak hug someone for you..in
— Set a reminder.linx <url>
— Upload url to linx.li.npl
— Shows the time from NPL's SNTP server.nsfw <link>
— for when a link isn't safe for work.pesters
begiak: pester <nick> <message>
— Sends a message to nick every hour they're around (or something. settable in config).pesters snooze <nick>
— 'snooze' a pester from nick.pesters <dismiss|rm|remove> <to|from> <nick>
— to stop pestering/being pestered by nick
- Search commands:
- The search commands are used to point other users to the output of several supported commands which are as follows:
- Apertium Wiki (
.awik
) - Wikipedia (
.wik
) - Urban Dictionary (
.urb
) - Wiktionary (
.w
) - DuckDuckGo Search (
.search
)
- Apertium Wiki (
- Replace
.wik
or.awik
with any of the above commands for appropriate output like 'svineet, "India, officially the Republic of India (Bhārat Gaṇarājya),[18][19][c] is a country in South Asia" - https://en.wikipedia.org/wiki/India' for.wik India -> svineet
.awik Begiak -> svineet
.awik Begiak → svineet
nick: .wik India
nick, .wik India
.awik India -> nick
- The search commands are used to point other users to the output of several supported commands which are as follows:
.seen
— When was the last time a user was seen?.time [timezone]
— Returns current time in timezone (can be a city or a time zone e.g UTC). If timezone is empty, returns current time in GMT time zone..tz
— Timezone converter Converts a time from one timezone to another. (e.g., .tz 335EST in CET, or .tz 335EST in London).tells
— See a summary of outstanding reminders you've sent to others using "begiak: tell"- begiak: tell <nick> <message> [**pm**] — Tells someone something the next time they say something in a channel begiak is monitoring. The **pm** option has the message sent privately.
.tells <nick>
— List your reminders currently queued to that nick.tells rm <num>
— Delete a queued reminder using its number from .tells nick
.alias
— manage aliases.alias add <nick>
— adds an alias for your nick of nick.alias rm <nick>
— removes an alias for nick nick.alias list <nick>
— lists existing aliases for nick
.u <char>
— Search for a unicode character.weather <city>
— Get the weather for a city.yi
— Shows whether it is currently yi or not
Admin[edit]
These are admin-only, or only useful to admins.
.isodb update
— update the local database of ISO 639 codes.greeting
— Manage Greetings.greeting add <name> <message>
— Add a greeting.greeting del <name>
- Delete a greeting
.gitserver [status|start|stop]
— get the githook-server's status/start it/stop it. See Begiak's git plugin for more info..tzdb
— Manage timezone database.tzdb update
— Updates a timezones database (admin only).tzdb status
— Returns a status of updating a timezones database
Unknown[edit]
These functions/plugins either don't seem to work or need some figuring out:
- .tfw
- lastfm
- mylife (.fml .mlia)
- oblique
- .whereis nick — Tells you nick's current status.
- .queue — Manage lists.
- .queue new name [item1, item2 ...] — Make a new queue
- .queue name — Display a queue
- .queue delete name — Delete a queue
- .queue name add item — Add an item
- .queue name remove item — Remove an item
- .queue name pop — Pop an item off the queue
- .queue name swap item1, item2 — Swap two items
- .py — Evaluate an expression in python (This runs as a sandboxed web service, not on your computer)
- .wikicount lg — Get the number of articles an official or incubated Wikipedia for the specified language has, given a Wikipedia code or partial language name.
- .(ml|mailinglist) poll — Poll for new messages in apertium mailing lists (this is automatically done every five minutes).
- .(ml|mailinglist) last <list> — Get the last message in a specified list.
Help! It crashed![edit]
Begiak has a known bug that causes it to repeatedly quit and rejoin. A few recent changes have reduced this, but it still occasionally occurs. Please don't report this as an issue; we already know about it. If you know how to fix it, however, please do tell us.
Development[edit]
A good tutorial on creating Phenny modules can be found here. Also, note that some commands start with a period and others start with "begiak: "; new commands should use a period.
Administration[edit]
Begiak is controlled by an init script (/etc/init.d/begiak.sh, found at [2]) on Bytemark, and can be started, stopped, and restarted by anyone with sudo access.
Irssi[edit]
Since begiak talks a lot it may be beneficial to set your IRC so begiak's messages don't have to alert you very loudly:
ignores = ( { level = "JOINS PARTS QUITS MODES NICKS"; }, { mask = "begiak"; level = "NO_ACT ALL"; }, );
This way you don't get highlights in channel list when begiak says automated messages or goes in the join-part-join cycle.