<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://www.otfbot.org/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://www.otfbot.org/feed.php">
        <title>OTFBot - The friendly Bot</title>
        <description></description>
        <link>http://www.otfbot.org/</link>
        <image rdf:resource="http://www.otfbot.org/lib/tpl/simple/images/favicon.ico" />
       <dc:date>2012-05-20T13:45:03+02:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://www.otfbot.org/bugs?rev=1259506637&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.otfbot.org/callbacks?rev=1283765251&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.otfbot.org/dev?rev=1283769062&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.otfbot.org/docs?rev=1263512305&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.otfbot.org/download?rev=1303476955&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.otfbot.org/non-blocking?rev=1283728851&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.otfbot.org/start?rev=1303500312&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.otfbot.org/synced-join?rev=1283764752&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.otfbot.org/tests?rev=1288347255&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.otfbot.org/topbar?rev=1283728885&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.otfbot.org/unicode?rev=1283782257&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://www.otfbot.org/lib/tpl/simple/images/favicon.ico">
        <title>OTFBot - The friendly Bot</title>
        <link>http://www.otfbot.org/</link>
        <url>http://www.otfbot.org/lib/tpl/simple/images/favicon.ico</url>
    </image>
    <item rdf:about="http://www.otfbot.org/bugs?rev=1259506637&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-11-29T15:57:17+02:00</dc:date>
        <title>bugs</title>
        <link>http://www.otfbot.org/bugs?rev=1259506637&amp;do=diff</link>
        <description>Our bug tracker is located at &lt;http://www.otfbot.org/bugs/&gt;</description>
    </item>
    <item rdf:about="http://www.otfbot.org/callbacks?rev=1283765251&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-06T11:27:31+02:00</dc:date>
        <title>callbacks</title>
        <link>http://www.otfbot.org/callbacks?rev=1283765251&amp;do=diff</link>
        <description>twisted invoces callbacks just by invocing the function of the class implementing the Protocol (i.e. IRCClient). we need to run a lot of plugins, so our structure is a bit more complicated.

we implement the twisted-callbacks, and run _apirunner(“callback”, {'argument': argument}).</description>
    </item>
    <item rdf:about="http://www.otfbot.org/dev?rev=1283769062&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-06T12:31:02+02:00</dc:date>
        <title>dev</title>
        <link>http://www.otfbot.org/dev?rev=1283769062&amp;do=diff</link>
        <description>For API-Documentation See API Documentation

Tech

we try to use consequently:

	*  unicode
	*  non-blocking I/O

please read about the why and how.

some interesting topics explained

	*  callbacks
	*  synced-join

How to create a (ircClient) plugin?

Have a look at our example plugin to see which callbacks exist. you can react on each of those as you like using python code.</description>
    </item>
    <item rdf:about="http://www.otfbot.org/docs?rev=1263512305&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-01-15T00:38:25+02:00</dc:date>
        <title>docs</title>
        <link>http://www.otfbot.org/docs?rev=1263512305&amp;do=diff</link>
        <description>*  FAQ
	*  plugins
	*   Generated code documentatio
	*  quick-start</description>
    </item>
    <item rdf:about="http://www.otfbot.org/download?rev=1303476955&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2011-04-22T14:55:55+02:00</dc:date>
        <title>download</title>
        <link>http://www.otfbot.org/download?rev=1303476955&amp;do=diff</link>
        <description>Development Versions

Use Git to get the most current version of the bot. Please use Git if you want to develop plugins, because 0.9 is outdated and will soon be replaced by 1.0.

Grab your copy with the following command:

git clone http://git.otfbot.org/otfbot.git</description>
    </item>
    <item rdf:about="http://www.otfbot.org/non-blocking?rev=1283728851&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-06T01:20:51+02:00</dc:date>
        <title>non-blocking</title>
        <link>http://www.otfbot.org/non-blocking?rev=1283728851&amp;do=diff</link>
        <description>Some Input-Output blocks the program until its finished. this is a problem in the IRC-Bot, because everything needs to wait until the operation is finished. Despite from blocking the bot from interacting with the user, even the network connection can get a timeout, because the bot cannot answer PING requests from the server.</description>
    </item>
    <item rdf:about="http://www.otfbot.org/start?rev=1303500312&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2011-04-22T21:25:12+02:00</dc:date>
        <title>start</title>
        <link>http://www.otfbot.org/start?rev=1303500312&amp;do=diff</link>
        <description>OtfBot is a modular IRC bot. It has modules to respond to !commands, answer to keywords, post RDF headlines in the channel, kick users because of bad words, interact with the user with an A.I. (megahal, others), display 8-ball quotes, and much more. New plugins can be created in minutes.</description>
    </item>
    <item rdf:about="http://www.otfbot.org/synced-join?rev=1283764752&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-06T11:19:12+02:00</dc:date>
        <title>synced-join</title>
        <link>http://www.otfbot.org/synced-join?rev=1283764752&amp;do=diff</link>
        <description>If a IRC-User joins a channel, this happens:

	*  JOIN channel
	*  server acknowledges the JOIN
	*  ???
	*  WHO channel
	*  ???
	*  list of people in the channel, ENDOFWHO

if a plugin would react on .joined(channel), it cannot use the userlist, because the userlist is only filled after ENDOFWHO. even worse, events like userQuit, userLeft, etc. cannot update the userlist until ENDOFWHO. so after ENDOFWHO the userlist may be even too long without synchronisation.</description>
    </item>
    <item rdf:about="http://www.otfbot.org/tests?rev=1288347255&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-10-29T12:14:15+02:00</dc:date>
        <title>tests</title>
        <link>http://www.otfbot.org/tests?rev=1288347255&amp;do=diff</link>
        <description>Here should be documented which plugins where (successfully) tested and what was tested / what was not tested (if appliable)

ircClient</description>
    </item>
    <item rdf:about="http://www.otfbot.org/topbar?rev=1283728885&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-06T01:21:25+02:00</dc:date>
        <title>topbar</title>
        <link>http://www.otfbot.org/topbar?rev=1283728885&amp;do=diff</link>
        <description>*  Home
	*  Download
	*  Documentation
		*  Plugins
		*  Jabber
		*  FAQ
		*  Git apidocs

	*  Development
		*  Tests 
		*  unicode
		*  Non-blocking IO
		*  cgit

	*  Bugs</description>
    </item>
    <item rdf:about="http://www.otfbot.org/unicode?rev=1283782257&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-09-06T16:10:57+02:00</dc:date>
        <title>unicode</title>
        <link>http://www.otfbot.org/unicode?rev=1283782257&amp;do=diff</link>
        <description>Internally everything SHOULD be unicode-objects.
The big advantage of an unicode object is, that it knows its encoding, and can be converted to any wanted encoding) a str-instance does not know what its chars represent.

the relevant Callbacks (mostly msg, query, command, noticed) get the input string as unicode object, and they SHOULD use sendmsg and sendme with unicode messages.</description>
    </item>
</rdf:RDF>

