Difference between revisions of "Begiak"

From Apertium
Jump to navigation Jump to search
Line 10: Line 10:
 
Begiak recognises the following commands.
 
Begiak recognises the following commands.
   
* .awikstats update ''lang'' update the wikipage apertium-LANG/stats (note: will dump a bunch of info in private chat
+
* .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!))
+
* .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.
 
* .following — List people currently being followed.
* .iso639 ''lg'' — 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)
+
* .iso639 <lg> — 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)
 
* .isodb status — see if the database updater (.isodb update) is running
 
* .isodb status — see if the database updater (.isodb update) is running
* .issue — create a new GitHub issue.
+
* .issue <title>— create a new GitHub issue.
* .listpairs (''lg'') — List language pairs available for apertium translation
+
* .listpairs <lg> — List language pairs available for apertium translation
 
* .listlangs — List languages available for apertium translation
 
* .listlangs — List languages available for apertium translation
 
* .t <lg1-lg2> [ | lg2-lg3 ...] <text>'' — Apertium translate
* .(ml|mailinglist) poll — Poll for new messages in apertium mailing lists (this is automatically done every five minutes).
 
 
* .unfollow <nick> — Stop following a user.
* .(ml|mailinglist) last ''list'' — Get the last message in a specified list.
 
* .t ... ''lg1-lg2 ( | lg2-lg3 ...)'' — Apertium translate
 
* .unfollow ''nick'' — Stop following a user.
 
 
<!--* begiak: esan! — Poll for svn updates ("esan!" means "say!" in Basque)
 
<!--* begiak: esan! — Poll for svn updates ("esan!" means "say!" in Basque)
 
* begiak: recent — Get most recent svn/git updates ([[Begiak's git plugin]] describes the git part)
 
* begiak: recent — Get most recent svn/git updates ([[Begiak's git plugin]] describes the git part)
Line 30: Line 28:
 
* .c — Calculator using SymPy.
 
* .c — Calculator using SymPy.
 
* .chill — Measure the current channel chillness level.
 
* .chill — Measure the current channel chillness level.
* .choose ''choice1'' ''choice2'' — begiak will choose one of the two options (randomly).
+
* .choose <choice1> <choice2> — begiak will choose one of the two options (randomly).
 
* .ety — Look up the etymology of a word
 
* .ety — Look up the etymology of a word
* .fcc ''callsign'' — Look up a callsign issued by the FCC
+
* .fcc <callsign> — Look up a callsign issued by the FCC
* .fight ''nick'' — have begiak fight someone for you.
+
* .fight <nick> — have begiak fight someone for you.
* .hug ''nick'' — have begiak hug someone for you.
+
* .hug <nick> — have begiak hug someone for you.
* .in — Set a reminder
+
* .in <time> — Set a reminder
* .linx ''url'' — Upload ''url'' to linx.li
+
* .linx <url> — Upload ''url'' to linx.li
 
* .npl — Shows the time from NPL's SNTP server
 
* .npl — Shows the time from NPL's SNTP server
* .nsfw ''link'' - for when a link isn't safe for work
+
* .nsfw <link> - for when a link isn't safe for work
 
* .pesters
 
* .pesters
** begiak: pester ''nick'' ''message'' — Sends a message to nick every hour they're around (or something. settable in config)
+
** 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 snooze <nick> - 'snooze' a pester from nick
** .pesters dismiss|rm|remove to|from ''nick'' - to stop pestering/being pestered by nick
+
** .pesters <dismiss|rm|remove> <to|from> <nick> - to stop pestering/being pestered by nick
* Point commands:
+
* Search commands:
** The point commands are used to point other users to the output of several supported commands which are as follows:
+
** The search commands are used to point other users to the output of several supported commands which are as follows:
 
*** Apertium Wiki (<code>.awik</code>)
 
*** Apertium Wiki (<code>.awik</code>)
 
*** Wikipedia (<code>.wik</code>)
 
*** Wikipedia (<code>.wik</code>)
Line 57: Line 55:
 
*** <code>.awik point nick India</code>
 
*** <code>.awik point nick India</code>
 
* .seen — When was the last time a user was seen?
 
* .seen — When was the last time a user was seen?
* .time (''TZ'') — 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.
+
* .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)
 
* .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"
 
* .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.
+
** 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 <nick> — List your reminders currently queued to that nick
** .tells rm ''num'' — Delete a queued reminder using its number from .tells ''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 add <nick>adds an alias for your nick of nick
** .alias list ''nick''lists existing aliases for ''nick''
+
** .alias rm <nick>removes an alias for nick nick
 
** .alias list <nick>lists existing aliases for nick
* .u — Search for a unicode character
 
* .weatherGet the weather for a city
+
* .u <char>Search for a unicode character
  +
* .weather <city> — Get the weather for a city
 
* .yi — Shows whether it is currently yi or not
 
* .yi — Shows whether it is currently yi or not
   
Line 74: Line 73:
 
* .isodb update — update the local database of ISO 639 codes
 
* .isodb update — update the local database of ISO 639 codes
 
* .greeting — Manage Greetings
 
* .greeting — Manage Greetings
** .greeting add ''name'' ''message'' — Add a greeting
+
** .greeting add <name> <message> — Add a greeting
** .greeting del ''name'' - Delete 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.
 
* .gitserver [status|start|stop] — get the githook-server's status/start it/stop it. See [[Begiak's git plugin]] for more info.
 
* .tzdb — Manage database
 
* .tzdb — Manage database
Line 98: Line 97:
 
* .py — Evaluate an expression in python (This runs as a sandboxed web service, not on your computer)
 
* .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.
 
* .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.
   
 
== Wishlist ==
 
== Wishlist ==

Revision as of 20:29, 21 January 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 and to facilitate communication when users are offline.

Background

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

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
  • .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)
      • Wikitionary (.w)
      • DuckDuckGo Search ( .search )
    • 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 point nick India
  • .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

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 database
    • .tzdb update — Updates a timezones database (admin only)
    • .tzdb status — Returns a status of updating a timezones database

??

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.

Wishlist

You can see the old wishlist here

  • mediawiki plugins
    • have better logic for text that's displayed for a page/section (need examples where it fails!)
      • where the first thing is [[…|En français]] (though really, we should have a real template on the wiki for translations)
      • where there's immediately a subsection? (cf. Talk:Begiak)
    • generalise mediawiki plugin?
  • Pollers (svn, git, etc.)
    • show short links to new apertium-stuff posts (poll like with commits?) ☭
      • alternatively: begiak lacks a filter or two, sometimes fills up channels making S/N high. begiak should detect quiet channels and not output there.
    • svnpoller and gitpoller's lookup functions (i.e., repeat information on specific revision)
  • timezones
    • better mapping of city names to timezones

Help!

Begiak is controlled by an init script (/etc/init.d/begiak.sh) on bytemark, and can be started, stopped, and restarted by anyone with sudo access.