Rand Stats

IRC::Client::Plugin::Factoid

github:raku-community-modules

Build Status

NAME

IRC::Client::Plugin::Factoid - factoid bot

SYNOPSIS

    use IRC::Client;
    use IRC::Client::Plugin::Factoid;

    IRC::Client.new(
        :nick<huggable>
        :host<irc.freenode.net>
        :channels<#perl6>
        :plugins( IRC::Client::Plugin::Factoid.new )
    ).run;
<Zoffix> huggable, Int
<huggable> Zoffix, class Int [Integer (arbitrary-precision)]: http://doc.perl6.org/type/type/Int
<Zoffix> huggable, Zoffix :is: awesome!
<huggable> Added Zoffix as awesome!
<Zoffix> huggable, Zoffix
<huggable> Zoffix, awesome!
<Zoffix> huggable, ^delete Zoffix
<huggable> Marked factoid `Zoffix` as deleted
<Zoffix> huggable, ^purge Zoffix
<huggable> Purged factoid `Zoffix` and its 2 edits

EARLY RELEASE


NOTE: this is an early release that is currently untested and incomplete. Database format may change. Not all of the interface is implemented yet. See DESIGN docs for complete feature list planned.


DESCRIPTION

This plugin allows to store "factoids": shorts bits of information tagged with a name and retrieved by asking the plugin for that name. Edit history is preserved to allow modification access to be given to a wider audience of users.

The factoids are stored in an SQLite database and you'll need SQLite development library installed (sudo apt-get install libsqlite3-dev on Debian).

METHODS

.new

Creates and returns a new IRC::Client::Plugin::Factoid object. See ATTRIBUTES section for valid arguments you can specify.

ATTRIBUTES

    IRC::Client::Plugin::Factoid.new:
        :trigger(/^ '!'/)
        :!say-not-found
        :db-filename<my-factoids.db>;

trigger

Optional. Takes a Regex as a value that specifies the trigger to watch for in the messages to use plugin features. The trigger will be stripped from the messages, so ensure it does not match any factoid values By default not specified, which causes all messages to be interpreted as commands or factoid lookup.

say-not-found

Optional. Takes a Bool as a value that specifies whether the plugin should respond with 'Factoid not found' message during look ups. If set to False, the plugin will let the message percolate further down the plugin chain. Defaults to True.

db-filename

Optional. Takes an Str that specifies the filename of the SQLite database file to use. Defaults to factoids.db.

IRC COMMANDS

The plugin enables the following IRC commands the IRC Client will respond to. The responses will be generated when the client is addressed in the channel or talked to via /notice or /msg. If trigger is specified, it must be used for all commands.

Factoid look up

<Zoffix> huggable, Int
<huggable> Zoffix, class Int [Integer (arbitrary-precision)]: http://doc.perl6.org/type/type/Int

Factoid look up is done by simply specifying the name of the factoid to fetch.

Adding/Modifying factoids

<Zoffix> huggable, Zoffix :is: awesome!
<huggable> Added Zoffix as awesome!

To add a factoid, separate the name of the factoid from its definition with keyword :is:. Currently, factoid names are case-insensitive.

Modifying a factoid is done the same way.

Deleting factoids

<Zoffix> huggable, ^delete Zoffix
<huggable> Marked factoid `Zoffix` as deleted

To delete a factoid, use the ^delete command, followed by the name of the factoid to delete. Note that this step does not purge the factoid from the database and all the edit history remains.

Purging factoids

<Zoffix> huggable, ^purge Zoffix
<huggable> Purged factoid `Zoffix` and its 2 edits

Purging factoids is done with the ^purge command, followed by the name of the factoid to purge. Purging is similar to deleting a factoid, except it completely removes it from the database, including all of the edit history.

REPOSITORY

Fork this module on GitHub: https://github.com/raku-community-modules/IRC-Client-Plugin-Factoid

BUGS

To report bugs or request features, please use https://github.com/raku-community-modules/IRC-Client-Plugin-Factoid/issues

AUTHOR

Zoffix Znet (http://zoffix.com/)

LICENSE

You can use and distribute this module under the terms of the The Artistic License 2.0. See the LICENSE file included in this distribution for complete details.