BOTLIB #31 released - https://pypi.python.org/pypi/botlib

Bart Thate thatebart at gmail.com
Sat Oct 14 09:43:53 EDT 2017


BOTLIB #31 released - https://pypi.python.org/pypi/botlib 

BOTLIB is a python3 framework to use if you want to program CLI, IRC or XMPP bots.

features
========

BOTLIB provides the following features:

::

 object class           save/load to/from a json file.
 rest server            serve saved object’s over http.
 rss fetcher            echo rss feeds to irc channels.
 udp server             udp to bot to irc channel.
 watcher server         run tail -f and have output send to IRC channel.
 email scanning         scan mbox format to searchable botlib objects.
 json backend           objects are stored as json string in files on the fs.
 db                     iteration over stored objects.
 timestamp              time based filenames gives logging capabilities
 future                 future sensors should provide entry to the logger.

install
=======

Clone the source:

:: 

 bart at okdan:~$ hg clone https://bitbucket.org/bthate/botlib

 You might need to do one of the following if the bot doesn't work:

 bart at okdan:~/botlib$ export PYTHONPATH="."
 bart at okdan:~/botlib$ export PYTHONIOENCODING="utf-8"

Another option is to download with pip3 and install globally:

::

 bart at okdan:~$ pip3 install botlib --upgrade

irc
===

Use -n <nick>, -s <server>, -c <channel> options to make the bot join the network:

::

 bart at okdan:~$ bot -i irc -n botlib -s irc.freenode.net -c \#botlib

You can use the -w option to write config values to ~/.bot/config/irc

xmpp
====

For the xmpp server use a ~/.sleekpass file with the password in it:

::

 bart at okdan:~$ cat "password" > ~/.sleekpass
 bart at okdan:~$ bot -i xmpp,rss --room=test at conference.localhost

users
=====

One needs to add a users origin to be able to give the bot commands. One can add a user with the meet command:

::

 bart at okdan:~$ bot meet user at server
 user user at server created

To give the user a permission you can use the perm command:

::

 bart at okdan:~$ bot perm user at server ps
 ok user at server

The u command show the json dump of a user object:

::

 bart at okdan:~$ bot u user at server 
 {
     "_container": {
         "default": "",
         "path": "/home/bart/.bot/user/2017-10-12/21:05:52.095737",
         "prefix": "object",
         "saved": "Thu Oct 12 21:07:03 2017",
         "signature": "c113c4125f8c2a88d5b312e283792ae019c61a52"
     },
     "_type": "<class 'botlib.object.Object'>",
     "origin": "user at server",
     "perms": [
         "USER",
         "PS"
     ],
     "user": "user at server"
 }

The default shell user is root at shell and give all the commands that are available.

commands
========

The following commands are available:

::

 alias                 key, value alias. 
 announce              announce text on all channels in fleet. 
 begin                 begin stopwatch. 
 cfg                   edit config files. 
 cmnds                 show list of commands. 
 deleted               show deleted records. 
 delperm               delete permissions of an user. 
 dump                  dump objects matching the given criteria. 
 edit                  edit and save objects. 
 end                   stop stopwatch. 
 exit                  stop the bot. 
 fetcher               fetch all rss feeds. 
 find                  present a list of objects based on prompt input. 
 first                 show the first record matching the given criteria. 
 fix                   fix a object by loading and saving it. 
 idle                  see how long a channel/nick has been idle. 
 last                  show last objectect matching the criteria. 
 license               display BOTLIB license. 
 load                  force a plugin reload. 
 log                   log some text. 
 loglevel              set loglevel. 
 loud                  disable silent mode of a bot. 
 ls                    show subdirs in working directory. 
 man                   show descriptions of the available commands. 
 mbox                  convert emails to botlib objects. 
 meet                  create an user record. 
 nick                  change bot nick on IRC. 
 perm                  add/change permissions of an user. 
 permissions           show permissions granted to a user. 
 perms                 show permission of user. 
 pid                   show pid of the BOTLIB bot. 
 ps                    show running threads. 
 reboot                reboot the bot, allowing statefull reboot (keeping connections alive). 
 reload                reload a plugin. 
 restore               set deleted=False in selected records. 
 rm                    set deleted flag on objects. 
 rss                   add a rss url. 
 save                  make a kernel dump. 
 shop                  add a shopitem to the shopping list. 
 show                  show dumps of basic objects. 
 silent                put a bot into silent mode. 
 start                 start a plugin. 
 stop                  stop a plugin. 
 synchronize           synchronize rss feeds (fetch but don't show). 
 test                  echo origin. 
 timer                 timer command to schedule a text to be printed on a given time. stopwatch to measure elapsed time. 
 today                 show last week's logged objects. 
 todo                  log a todo item. 
 tomorrow              show todo items for tomorrow. 
 u                     show user selected by userhost. 
 uptime                show uptime. 
 version               show version. 
 w                     show user data. 
 watch                 add a file to watch (monitor and relay to channel). 
 week                  show last week's logged objects. 
 whoami                show origin. 
 yesterday             show last week's logged objects. 

modules
=======

The following modules are available:

::

 botlib.bot             bot base class.
 botlib.cli             command line interfacce bot, gives a shell prompt to issue bot commands.
 botlib.clock           timer, repeater and other clock based classes.
 botlib.cmnds           botlib basic commands.
 botlib.compose         construct a object into it’s type.
 botlib.decorator       method decorators
 botlib.db              JSON file db.
 botlib.engine          select.epoll event loop, easily interrup_table esp. versus a blocking event loop.
 botlib.error           botlib exceptions.
 botlib.event           event handling classes.
 botlib.fleet           fleet is a list of bots.
 botlib.handler         schedule events.
 botlib.irc             IRC bot class.
 botlib.kernel          program boot and module loading.
 botlib.launcher        a launcher launches threads (or tasks in this case).
 botlib.log             log module to set standard format of logging.
 botlib.object          JSON file backed object with dotted access.
 botlib.raw             raw output using print.
 botlib.rss             rss module.
 botlib.selector        functions used in code to select what objects to use.
 botlib.task            adapted thread to add extra functionality to threads.
 botlib.trace           functions concering stack trace.
 botlib.users           class to access user records.
 botlib.xmpp            XMPP bot class.
 botlib.register        object with list for multiple values.
 botlib.rest            rest interface.
 botlib.runner          threaded loop to run tasks on.
 botlib.space           central module to store objects in.
 botlib.static          static definitions.
 botlib.template        cfg objects containing default values for various services and plugins.
 botlib.test            plugin containing test commands and classes.
 botlib.udp             relay txt through a udp port listener.
 botlib.utils           lib local helper functions.
 botlib.url             functions that fetch data from url.
 botlib.watcher         watch files.
 botlib.worker          worker thread that handles submitted jobs through Worker.put(func, args, kwargs).
 botlib.wisdom          wijsheid, wijs !

contact
=======

| Bart Thate
| botfather on #dunkbot irc.freenode.net
| bthate at dds.nl, thatebart at gmail.com

BOTLIB has a MIT license`




More information about the Python-list mailing list