changing dicts in a threaded environment ?

2012-11-27 Thread Bart Thate
Hello All ;]

i wondered if somebody could bring me up to date on the following subject:

i use python3 now and i need to be able to remove elements from a dict in a
thread safe manner.

kinda like a Queue.Queue thing but then in a dict, so i can pass arond  my
dict based objects as parameters arond without having to wonder if it gets
properly locked.

So not only do i need to get this solved:

Issue #14417 : Mutating a dict during lookup
now restarts the lookup instead of raising a RuntimeError (undoes issue
#14205 ).

i also need to lock all the actual modifying underlying "real" stuff as
well not just the iterator or view or whatever i don't know yet ;]

So my question is kinda like, is a dict possible in the same way the
Queue.Queue is now made truely thread safe ?

Also is there something like a select.select for queues ?

I want to pass a dict to a thead and then have a watcher on the dicts state
if result have arrived.

For what i am making dicts are the basis of everything, json dumpable so
the state op the object can be saved or send over the wire as well.

Thnx for your time and energy ;]

Grtx,

Bart
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: changing dicts in a threaded environment ?

2012-11-29 Thread Bart Thate
Terry !

thnx for replying, feedback is the thing i need ;] sorry for the late
reply, after your mail i have been coding like hurt (so many hours nonstop
hacking hurts in the chair). As i started with all the code in 1 file (what
i get when i think something is cool), i splitted the stuff up into proper
modules, so i can show that to explain what i am up to.

I come to this code a long time ago, during the programming of my previous
bots, where co coder maze introduced me to what he called a LazyDict. Dict
with dotted access for attributes instead of __getitem__, i like how the
code looks when dotted acces is used. While this contruct found its way
into my code, i had to deal with something different and this is "how to
adapt my data - storage - to changes in the code" problem.

All the databases i tried used some sort of schema to define the data and
onces that needs to change, reflection needed to take place to update the
storage of data. I need to be able to add attributes to objects without no
need to change or reflect anything. So i took the LazyDict and added json
dump and load functionality to it. This worked great in terms of
flexibility in the code, but load on it is very low, so not to be compared
with the scale etc that normal databases have to deal with. Soon i want to
add a .send(JID) to it so i can send a object via JSON to the other side
and have it reconstruct there. Kinda like Pyro based on JSON, been
experimenting with that with Aim during our endless "let's code a new
collective" attempts, where the "send the pickle over the wire" stuff was
not secure, the use of XML to make it secure made it a true bandwidth hog,
and parsing JSON is still considered secure, because no eval gets used when
deconstructing.

In first i am not interested in deconstructing objects from the JSON yet,
my first intention is to make a JSON dict replication system, where i can
put data in a dict, put JSON of that dict over the wire to various other
pieces of my software and have it possible to authenticate the correctness
of the data. This is because i want - eventually - to have my code run in a
device where the data it generates can be used as proof in a court of law.
This is to make some modern version of a diary, where one can register all
things happening during a period of time.

So i have to make this  1 LazyDict, JSON saveable and sendable etc, objects
thats is going to be the core of what i doing and i need to properly design
it and todo that properly i need feedback on it ;]

Thank for your feedback Terry, it is clear to me now that i need to do the
locking myself, thing is i need to have this object behave excactly as
normal standard object (dict in this case) so i want to know if there are
any pointers to docs that discuss the semantics of dicts esp. what needs to
be locked properly to ensure that there is only one accessor at the time.

Question to all of you is something like "if you want 1 basic type added to
python 4, what would it's semantics be ?"

See https://github.com/feedbackflow/life for the code i am working on now ;]

https://github.com/feedbackflow/life/blob/master/life/__init__.py - for the
big O class that is to become the core of it all, pun intended ;]

Looking forward to hear what you and all the others reading this are
thinking.

Bart, thinking of "what if i stored the JSON in git ?" and "would mercurial
then not be better" haha


p.s. code is not in a "good shape" yet, it is just that i would take too
long for me to respond and 20 hours work days are killing me to get this
right "the first time" ;]
p.s.s trbs your code is in the moment plugs are going to be added, need the
core solid first ;]


On Tue, Nov 27, 2012 at 8:18 PM, Terry Reedy  wrote:

> On 11/27/2012 7:53 AM, Bart Thate wrote:
>
> [Answers based on reading without thread experience.]
>
>
>  i use python3 now and i need to be able to remove elements from a dict
>> in a thread safe manner.
>>
>
> Essentially no change from py2.
>
>
>  kinda like a Queue.Queue thing but then in a dict, so i can pass arond
>>   my dict based objects as parameters arond without having to wonder if
>> it gets properly locked.
>>
>
> As I understand it, dicts do not get locked unless you do it.
>
>  So not only do i need to get this solved:
>>
>> Issue #14417 <http://bugs.python.org/14417>**: Mutating a dict during
>>
>> lookup now restarts the lookup instead of raising a RuntimeError (undoes
>> issue #14205 <http://bugs.python.org/14205>**).
>>
>
> As I understand #14417, you should be explicitly locking dicts. The issue
> in #14205 was that people doing mutations in just one thread and lookups in
> others usually got away without locking becuase of recursive retries, but
> occasionally crashed the interpreter be

JSON logging ?

2012-12-11 Thread Bart Thate
Is it possible to change hooks or something to let the logging SocketServer
stuff handle JSON instead of pickle ?

I am thinking of sending my JSON dict data through the logging system to
remote.

A default standard way to send stuff back and forth would be welcome here.

pickle uses eval still ? or is is considered safe now ? i was told not to
use eval() stuff on data.

Strange thing i never thought of using the logging plugin to send stuff
remote.
-- 
http://mail.python.org/mailman/listinfo/python-list


The Prototype Master

2012-12-12 Thread Bart Thate
*PROTOTYPE MASTER*

they call me the prototype master over here. I dive into the unkown and get
some code working in a problem domain i dont know. As fast as possible i
need to write code that 1) is running 2) does something in that domain

This all so i can learn from all that went wrong. so i can see where my not
knowing the problem domain leads me too.

Thing is i have been prototyping in my domain for more than 10 years now.
Bots are what i have been doing all that time, recycling version after
version, name after name, trying to improving stuff, most of the time
meaning dropping too much code and spending waay to much time to add the
functionality back in.

So no sorry still no unittests yet ;] I promised i test the core first, but
if i don't know  what the core is going to look like, it is no use of
testing - yet -
I do have a ./bin/life-test in the git repo know that can launch unittests,
but i need to go forward to have at least the IRC bot running.

So here is version 3 of the  L I F E ;]

It does run a IRC bot, but only primary functionality is there, connect and
join a channel and do some commands. The console bot seems more stable now,
as is the zero-key stuff. All hopes though can only test stuff here for
myself, looks good so far as in "easy_install3 -U life" works here.

try something like ";start irc #channel"
 in the console. basically the thing is forming into a framework with 1 top
heay base class and in object typeing for easier conversions, ummm yeaah
well ;]

And then there is the issue of colors.. My deep apology to those who have
been using shell and IRC from the earlier days, i just need to have my
colors in my shell ;] For me it makes the output more parsable.

So wrap up, target of one release a week seems to work, still need to start
my massive unittest stuff, but it seems core is progressing well.

Do take note though:

 'Development Status :: 2 - Pre-Alpha',



https://github.com/feedbackflow/life

http://pypi.python.org/pypi/life/3
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: JSON logging ?

2012-12-12 Thread Bart Thate
Thanks for your reply Chris,

good to be updated on the pickle stuff, too bad it is still not safe for
use. But hee i prefer JSON above pickle anyways so ;]

As to using the logging package to send JSON dict over, the logging stuff
should be able to be converted to handle that. Just 2 things that need to
be changes. The logging package basically sends over an dict as well..

makePickle on the SocketHandler in order to send JSON instead of pickled
stuff

def makePickle(self, record):
"""
Pickles the record in binary format with a length prefix, and
returns it ready for transmission across the socket.
"""
ei = record.exc_info
if ei:
# just to get traceback text into record.exc_text ...
dummy = self.format(record)
# See issue #14436: If msg or args are objects, they may not be
# available on the receiving end. So we convert the msg % args
# to a string, save it as msg and zap the args.
d = dict(record.__dict__)
d['msg'] = record.getMessage()
d['args'] = None
d['exc_info'] = None
s = pickle.dumps(d, 1)
slen = struct.pack(">L", len(s))
return slen + s

and this function on the receiving end to convert the JSON stuff back to a
logging record (want to hook more stuff into this function, such that the
send JSON is converted into an events that gets send to my callback
handlers.)

def makeLogRecord(dict):
"""
Make a LogRecord whose attributes are defined by the specified
dictionary,
This function is useful for converting a logging event received over
a socket connection (which is sent as a dictionary) into a LogRecord
instance.
"""
rv = _logRecordFactory(None, None, "", 0, "", (), None, None)
rv.__dict__.update(dict)
return rv

What i don't see though is where the receiving code recides ?
How am i supposed to handle logrecords that are coming from remote, as
better phrased maybe .. where can i hook my (changed) makeLogRecord into ?

Thnx for the reply dude, helps me enormously ;]

Bart



On Wed, Dec 12, 2012 at 6:33 PM, Chris Rebert  wrote:

> On Dec 11, 2012 7:33 AM, "Bart Thate"  wrote:
> 
>
> > pickle uses eval still ? or is is considered safe now ? i was told not
> to use eval() stuff on data.
>
> I don't believe pickle uses eval() per se, but per the red warning box in
> its docs, it's still not safe when given untrusted input. IIRC, among other
> things, in order to unpickle non-built-in classes, it is capable of
> performing imports; this feature is rife for abuse by an adversary.
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: JSON logging ?

2012-12-12 Thread Bart Thate
Ha ! spoke too soon.

Was reading this:
http://docs.python.org/2/howto/logging-cookbook.htm<http://docs.python.org/2/howto/logging-cookbook.html>
which
explains it all ;]

Place to be is the LogRecordStreamHandler ;]

Something to play with, first trying out to get a communication channel
running over DCC CHAT ...



On Wed, Dec 12, 2012 at 8:17 PM, Bart Thate  wrote:

> Thanks for your reply Chris,
>
> good to be updated on the pickle stuff, too bad it is still not safe for
> use. But hee i prefer JSON above pickle anyways so ;]
>
> As to using the logging package to send JSON dict over, the logging stuff
> should be able to be converted to handle that. Just 2 things that need to
> be changes. The logging package basically sends over an dict as well..
>
> makePickle on the SocketHandler in order to send JSON instead of pickled
> stuff
>
> def makePickle(self, record):
> """
> Pickles the record in binary format with a length prefix, and
> returns it ready for transmission across the socket.
> """
> ei = record.exc_info
> if ei:
> # just to get traceback text into record.exc_text ...
> dummy = self.format(record)
> # See issue #14436: If msg or args are objects, they may not be
> # available on the receiving end. So we convert the msg % args
> # to a string, save it as msg and zap the args.
> d = dict(record.__dict__)
> d['msg'] = record.getMessage()
> d['args'] = None
> d['exc_info'] = None
> s = pickle.dumps(d, 1)
> slen = struct.pack(">L", len(s))
> return slen + s
>
> and this function on the receiving end to convert the JSON stuff back to a
> logging record (want to hook more stuff into this function, such that the
> send JSON is converted into an events that gets send to my callback
> handlers.)
>
> def makeLogRecord(dict):
> """
> Make a LogRecord whose attributes are defined by the specified
> dictionary,
> This function is useful for converting a logging event received over
> a socket connection (which is sent as a dictionary) into a LogRecord
> instance.
> """
> rv = _logRecordFactory(None, None, "", 0, "", (), None, None)
> rv.__dict__.update(dict)
> return rv
>
> What i don't see though is where the receiving code recides ?
> How am i supposed to handle logrecords that are coming from remote, as
> better phrased maybe .. where can i hook my (changed) makeLogRecord into ?
>
> Thnx for the reply dude, helps me enormously ;]
>
> Bart
>
>
>
> On Wed, Dec 12, 2012 at 6:33 PM, Chris Rebert  wrote:
>
>> On Dec 11, 2012 7:33 AM, "Bart Thate"  wrote:
>> 
>>
>> > pickle uses eval still ? or is is considered safe now ? i was told not
>> to use eval() stuff on data.
>>
>> I don't believe pickle uses eval() per se, but per the red warning box in
>> its docs, it's still not safe when given untrusted input. IIRC, among other
>> things, in order to unpickle non-built-in classes, it is capable of
>> performing imports; this feature is rife for abuse by an adversary.
>>
>
>
-- 
http://mail.python.org/mailman/listinfo/python-list


context aware execution

2012-12-19 Thread Bart Thate
Hi All !

Is is possible and if yes, is it more easily possible (i am thinking f_back
maybe) to get the context of the caller when in a function ?

Like to which variable name is this object assigned ?

Or whatever of the callers context that might be of interest.

I want in a function or method determine the context of my caller and adapt
the functionality accordingly.

thnx,

Bart
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: context aware execution

2012-12-19 Thread Bart Thate
Thanks for your response Chris !

Ha ! the job of the mad man is todo the things the are not "advisable" and
see what gives. Like why it is not advisable and,  if possible, their are
ways to achieve things that are previously overseen.

i already do a lot of travelling of the callstack to see from where a
function is called. mostely for logging purposes, like what plugin
registered this callback etc.

lately i also had the need to log the variable name of a object, and the
thought of be able to "break out of the namespace" concept got me thinking

what i am thinking of is code that can examine the context it is run in.
The object, when called can figure out in what kind of space it is living
in and discover what kind of API other objects in the space offer.

This is a pre function that gets called before the actual function/method
and can thus determine if a certain request can be fullfilled.

I bet a decorator could be made, in which i can assign certain caller
context references into variables in the function/method ?

I use 1 generic parameter object, in which i can stuff lots of things, but
i rather have the function be able to see what is around ;]

Think of sending JSON over the wire, reconstruct an object with it and then
let the object figure out what it can and cannot do in this external
environment.

Code i use now is this:

 # life/plugs/context.py
#
#

""" show context. """

## basic import

import sys

## context command

def context(event):
result = []
frame = sys._getframe()
code = frame.f_back.f_code
for i in dir(code): print("%s => %s" % (i, getattr(code, i)))
del frame

context.cmnd = "context"

So much to explore ;]
-- 
http://mail.python.org/mailman/listinfo/python-list


GOZERBOT 1.0.1 FINAL

2012-01-23 Thread Bart Thate
GOZERBOT 1.0.1 FINAL released ;]

last bugs kinked out (i hope) and lots of docs updates (see http://gozerbot.org)

downloadable at http://gozerbot.googlecode.com
or use "easy_install gozerbot"
or run "hg clone http://gozerbot.googlecode.com/hg mybot"

Below a cool animation of the GOZERBOT code repository ;] Thnx maze !

Have fun and as always we are on #dunkbots on irc.freenode.net.
-- 
http://mail.python.org/mailman/listinfo/python-list


JSONBOT 0.84.4 RELEASE available

2012-03-24 Thread Bart Thate
*JSONBOT 0.84.4 RELEASE* available ! 

#IRC  #XMPP  #chatbot  #WWW  #Python  #RSS  #relay 

get it at: http://code.google.com/p/jsonbot/downloads/list
documentation is at http://jsonbot.org

*About JSONBOT:*

JSONBOT is a chatbot that can take commands and react to events on the network 
it is connected to (IRC, XMPP, WEB mostely). Push functionality is also 
provided (think RSS feeds to your IRC channel or XMPP conference). It is 
possible to program your own plugins to create custom functionality.

*In this release:*


default control character for the bot is now ‘;’ .. if you are missing the ‘!’ 
cc just run ‘;cc-add !’.

- experimental features:

* FiSH support on IRC, thanks to Frank Spijkerman (Aim)
* sleekxmpp driver for xmpp bots, use ./bin/jsb-sleek

- further changes:

* new boot code - bot now tries to detect changes in the code and recreates the 
dispatch tables when needed.
* reconnect code should work better, disconnect should now be properly detected
* updated tornado to version 2.2 - needed for websockets new style
* database support for sqlite and mysql is now available, see 
~/.jsb/config/mainconfig to enable it.

- still todo:

* yes .. docs still need to be written
* yes .. bugtracker needs attention


If you find any bugs in this release please let me know at bth...@gmail.com or 
in  #dunkbots on irc.freenode.net.

HF !
-- 
http://mail.python.org/mailman/listinfo/python-list


JSONBOT 0.7.1 released

2011-06-09 Thread Bart Thate
Hello kids and parents !! I just want to announce the release of
JSONBOT 0.7.1.

This release consists of minor bug fixes and new xmpp auth code (SASL)
which support DIGEST-MD5 and PLAIN authing.

JSONBOT should run well again on systems with python2.5 installed.

You can fetch it at http://jsonbot.googlecode.com

Have fun playing with it!

Bart

About JSONBOT:

JSONBOT is a remote event-driven framework for building bots that talk
JSON
to each other over XMPP.

This distribution provides bots built on this framework for console,
IRC,
XMPP and Convore for the shell and WWW and XMPP for the Google
Application engine.

JSONBOT is all of the following:

* a shell console bot
* a shell IRC bot
* a shell XMPP bot
* a shell Convore bot
* a Web bot running on Google Application Engine
* a XMPP bot running on Google Application Engine
* a Google Wave bot running op Google Application Engine
* the XMPP bots are used to communicate between bots
* plugin infrastructure to write your own functionality
* event driven framework by the use of callbacks
-- 
http://mail.python.org/mailman/listinfo/python-list


GOZERBOT 0.9.2 RELEASED

2011-06-23 Thread Bart Thate
Hello new world !

i’m glad to announce the release of version GOZERBOT 0.9.2, a bot that
has been declared dead but has arrived from the pits of hell to serve
our people here well ;] Discovered that SQLAlchemy has been fixed in
such a way that it was easy to resurrect the thing, and release a new
version of it.

It’s not my intention to still maintain GOZERBOT as i prefer users to
switch to JSONBOT but this switch is to be done in such a way that
GOZERBOT users can port their data to JSONBOT in a proper way. Having
GOZERBOT still up and running makes it easier for me to write the
converting software as a GOZERBOT plugin, in which case i have better
access to the data then when i have to access it from the outside.

Ofcourse the conversion plugin is still to be written, but i hope that
current GOZERBOT users can wait a little while before that is in
place ;]

You can get the new version from http://gozerbot.googlecode.com. For
those who want to have a look at the future check http://jsonbot.org

Well thats new from a happy camper that suddenly finds his path ahead.

Grtx,

Bart
-- 
http://mail.python.org/mailman/listinfo/python-list


ANNOUNCING GOZERBOT 0.9.3 BETA1

2011-08-09 Thread Bart Thate
Hi world and every living thing on it !

I just want to give a headsup to the fact that i released the first
beta of GOZERBOT 0.9.3. This release brings in a lot of bug fixes, so
please try it out ;]

Download is at http://gozerbot.googlecode.com, please if you find
problems with the bot file a ticket on 
http://code.google.com/p/gozerbot/issues/list.
Otherwise email me at bth...@gmail.com or check channel #dunkbots on
irc.freenode.net, thnx ! feedback is very much appreciated ;]

I also want to say sorry to my korean brothers and sisters, i have no
evil intend with GOZERBOT even if you might read that into my
announcements, i'll give the reason for the name below .. it is taken
from the dutch language. Peace !


GOZERBOT name origin


23:37 < dunker> !tr nl en 1) Bargoense kerel 2) Bink 3) Gast 4) Goser
5)
Joch 6) Jongen 7) Ker 8) Kerel 9) Kerel (bargoens) 10) Knaap 11)
Knakker 12)
Knul 13) Man 14) Persoonsbenaming 15) Vent

23:37 < jsonbot> 1) Bargoens guy 2) Bink 3) Guest 4) Goser 5) Jochberg
6)
Girl 7) Ker 8) Guy 9) Dude (slang) 10) Knaap 11) bloke 12) Lad 13) F
14)
Name Person 15) Vent


친구
1) Bargoens 사람 2) 빙크 3) 게스트 4) Goser 5) Jochberg 6) 소녀 7) 케르 8)
가이 9) 친구 (속 어) 10) Knaap 11) 던 12) 래드 13) F 14) 이름 인 15) 벤트

About GOZERBOT:

GOZERBOT is a channel bot that aids with conversation in irc channels
and jabber conference rooms. its mainly used to send notifications
(RSS, nagios, etc.) and to have custom commands made for the channel.
More then just a channel bot GOZERBOT aims to provide a platform for
the user to program his own bot and make it into something thats
usefull. This is done with a plugin structure that makes it easy to
program your own plugins. But GOZERBOT comes with some batteries
included, there are now over 100 plugins already written and ready for
use.

-- 
http://mail.python.org/mailman/listinfo/python-list


JSONBOT 0.7 RELEASED

2011-05-01 Thread Bart Thate
0.7 RELEASE NOTES
=

Hello world, greetings to all and everybody on this little planet ;]

Today I am releasing version 0.7 of JSONBOT, hope you like it.

I want to dedicate this release to Annemiek, Kirsten, Danny and
Doscha, i would not have a live without you.

changes in this release
---

* we got jsonbot.org running .. see http://jsonbot.org ;]
* convore support
* refactored core
* reloadable config files
* revamped web console
* resource files (contain commands the bot can execute)
* file change detection for myplugs plugins
* rebooting is fixed
* fixed relaying in jabber conference rooms
* added color.py plugin to color certain words
* added geo.py, googletranslate.py and imdb.py (thnx melmoth)
* chatlog plugin now uses the logging module .. log file rotates every
day
* many other bugfixes

If you have programmed your own plugin see
http://jsonbot.org/handbook/UPGRADE.html for upgrade notes.

Todo


1) fix runtime setting of loglevel
2) add flood control
3) docs docs docs docs docs
4) fix bugs

see http://code.google.com/p/jsonbot/issues/list

Source
--

* tarball - http://jsonbot.googlecode.com
* mercurial - http://jsonbot.googlecode.com/hg
* github - https://github.com/jsonbot

Demo


* webconsole - http://jsonbot.appspot.com
* xmpp - json...@jsonbot.org (shell) and json...@appspot.com (GAE)
* IRC - jsonbot on irc.freenode.net
* Convore - https://convore.com/convore-8/welcome-to-convore/ relaying
with #convore on irc.freenode.net

Docs


* new jsonbot.org site .. http://jsonbot.org
* GAE backup docs .. http://jsonbot.appspot.com/docs

Contact
---

* twitter: https://twitter.com/#!/jsonbot
* facebook: http://tinyurl.com/jsonbot
* email: bth...@gmail.com
* IRC: dunker in channel #dunkbots / irc.freenode.net* xmpp:
bth...@gmail.com and b...@jsonbot.org

About
-

JSONBOT is a remote event-driven framework for building bots that talk
JSON
to each other over XMPP.

This distribution provides bots built on this framework for console,
IRC,
XMPP and Convore for the shell and WWW and XMPP for the Google
Application engine.

JSONBOT is all of the following:

* a shell console bot
* a shell IRC bot
* a shell XMPP bot
* a shell Convore bot
* a Web bot running on Google Application Engine
* a XMPP bot running on Google Application Engine
* a Google Wave bot running op Google Application Engine
* the XMPP bots are used to communicate between bots
* plugin infrastructure to write your own functionality
* event driven framework by the use of callbacks

Install
---

You dont need to run the bot on GAE when you just want to use the
shell bots of JSONBOT. JSONBOT can best be run from the bot dir, the
bot is self contained and has all the dependancies that are needed:

* "hg clone http://jsonbot.googlecode.com/hg mybot" or download and
untar the tarball.
* cd into the bot dir and run "./bin/jsb" .. if the bot is working
correctly you will get the console version of JSONBOT
* same can be done for "./bin/jsb-xmpp", "./bin/jsb-convore" etc. ..
check the bin dir for programs you can start
* try the --help option to a program to see what command line options
are available.
* you DONT need root for this

Ofcourse you can always run "python setup.py install" or "easy_install
-U jsb" when you do want to install the bot globaly.
Debian packages are on their way, but might still take time as the
ftpmeisters need to approve ;]

Thats it ! hope you enjoy this version of JSONBOT ;]

Bart
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2017-10-14 Thread Bart Thate
tput 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. 
 uptimeshow 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. 
 whoamishow 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.launchera 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.selectorfunctions used in code to select what objects to use.
 botlib.taskadapted thread to add extra functionality to threads.
 botlib.trace   functions concering stack trace.
 botlib.users   class to access user records.
 botlib.xmppXMPP bot class.
 botlib.registerobject with list for multiple values.
 botlib.restrest interface.
 botlib.runner  threaded loop to run tasks on.
 botlib.space   central module to store objects in.
 botlib.static  static definitions.
 botlib.templatecfg objects containing default values for various 
services and plugins.
 botlib.testplugin 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
| bth...@dds.nl, thateb...@gmail.com

BOTLIB has a MIT license`

-- 
https://mail.python.org/mailman/listinfo/python-list


ANN: OB - framework to program bots

2018-06-27 Thread Bart Thate
Hello comp.lang.python,

I am Bart Thate, a 50 year old programming schizofrenic.

I like to annouce version 4 of OB, a pure python3 package you can use to 
program bots.

OB has a “no-clause MIT license” that should be the most liberal license you 
can get at the year 2018.

I am looking for feedback on my new bot. https://pypi.org/project/ob/ 
http://ob.readthedocs.io/en/latest/

thnx !

Bart - bth...@dds.nl
-- 
https://mail.python.org/mailman/listinfo/python-list


GOZERBOT 0.99.0 RELEASED

2011-10-04 Thread Bart Thate
Hello world and everybody !

i'm pleased to announce the release of GOZERBOT 0.99.0, the first in a
series of releases that are supposed to lead to a proper 1.0 release
for GOZERBOT. The intention is to get a 1.0 version of GOZERBOT
available for users that still use this bot, got almost 2000 download
of 0.9.2 so its worth to support all those users with a release they
can build on. I dont have the intention to develop GOZERBOT any
further beyond that, that's what JSONBOT is all about, so keep in mind
these are pure maintenance releases.

2 major changes crept into this release, namely:

* no more seperate gozerplugs package, its all wrapped into 1 thing.
The gozerplugs package has find its way under the gplugs directory in
the main distro so no more seperate installing of plugins.
* SQLAlchemy is now optional, so GOZERBOT can run on older versions of
debian etc. Since this leads to less dependancies GOZERBOT is easier
to install.

note: there is not going to be a seperate "all" distro as those
dependancies are already included.

SQLAlchemy is made optional by providing plugins that use direct
queries on the database, this is the default. You can change
operations back to SA by setting db_driver = "alchemy" in gozerdata/
mainconfig.

The intention is to release a new version of GOZERBOT every week or
so, until its stable for a long period of time. When its time i'll cut
of the 1.0 release ;]

urls:

* download tar - http://code.google.com/p/gozerbot/downloads/list
* mercurial clone - "hg clone https://gozerbot.googlecode.com/hg
mybot"
* please report bugs at http://code.google.com/p/gozerbot/issues/entry
especially if you are already running a GOZERBOT and run into
problems.
* path to the futire - http://jsonbot.org

read the provided README for instructions on how to get the bot
running.

About GOZERBOT:

GOZERBOT is a channel bot supporting conversations in irc channels
and jabber conference rooms. It is mainly used to send notifications
(RSS,
nagios, etc.) and to have custom commands made for the channel. More
then
just a channel bot GOZERBOT aims to provide a platform for the user
to
program his own bot and make it into something thats usefull. This is
done
with a plugin structure that makes it easy to program your own
plugins.
GOZERBOT comes with some batteries included.
-- 
http://mail.python.org/mailman/listinfo/python-list


JSONBOT 0.80.3 RELEASED

2011-11-21 Thread Bart Thate
Hello world !! I released JSONBOT 0.80.3 .. the first in the 0.80 series ;]

about
~

JSONBOT is a chatbot that can take commands and react to events on the network 
it is connected to (IRC, XMPP, WEB
mostely). Push functionality is also provided (think RSS feeds to your IRC 
channel or XMPP conference). It is possible to program your own plugins to 
create custom
functionality. 

source/docs
~~~

 see http://jsonbot.org and http://jsonbot.googlecode.com


make backup first
~

I added the jsb-backup program, please run this before starting the 0.80 bot. 
It will make a backup of your datadir into ~/jsb-backups

changes
~~~

* GAE is no longer part of the standard distribution, as that is aimed at shell 
users as of 0.80 - use the mercurial repo if you want to use the GAE part of 
the bot
* web console is now supported on shell - use the jsb-tornado program to launch 
a tornado web server bot on port 10102 
* jsb-xmpp now supports OpenFire - use --openfire option to enable this
* todo now uses per user databases instead of per channel - use the -c option 
to the todo command to show the channel todo
* learn items are not global per default - use !learn-toglobal to copy local 
learn data to the global learndb
* relay plugins has been rewritten to use bot.cfg.name as well - means that 
relays need to be created again  
* jsb-udpstripped program has been added that can be used to send udp data to 
the bot without the need of making config files (copy and edit it)
* add fulljids = 1 to your xmpp bot config (most of the times in 
~/.jsb/config/fleet/default-sxmpp/config) to enable full JID discovery in xmpp 
conference rooms
  (non anonymous)

and:

* lots of new plugins .. see !list ;]
* lots of bug fixes - thnx everybody for reporting them
* still lots of things to fix at 

03:35 < jsonbot> tracker is http://code.google.com/p/jsonbot/issues/list

If you find any problems or have feature request please post that on the 
tracker url above.

Or try @botfather on #dunkbots on irc.freenode.net ;]
-- 
http://mail.python.org/mailman/listinfo/python-list


GOZERBOT 1.0 RELEASED

2012-01-18 Thread Bart Thate
I am proud !

Version 1.0 of GOZERBOT is here in the world.
7 years of evolutionary code development.
The eagle has landed, the egg is layed

See http://gozerbot.org

-

WELCOME TO GOZERBOT — GOZERBOT v1.0.1 FINAL documentation
WELCOME TO GOZERBOT¶. I am pleased to present to you version 1.0 of GOZERBOT, a 
IRC and Jabber(XMPP) bot. This is the final and last release of GOZERBOT, new 
development will continue with the JSONBOT...
-- 
http://mail.python.org/mailman/listinfo/python-list


ANN: GOZERBOT 0.8 released

2008-03-04 Thread Bart Thate
so 0.8 is there and can be downloaded from http://gozerbot.org

new features:

* third party addons for plugins. (needs setup.py  to work)
* reboots without disconnects (irc only for now)
* ipv6 udp support
* queues used all over the place to reduce thread usage
* normal irc log format is now supported (simplelog plugin)
* irc can now be disabled for jabber only usage
* owneruserhost is now a list so multiple userhosts can be used
* jabber reconnect code is improved
* rss error reporting is improved
* udp code is improved especially in the jabber case
* lots of other bug fixes

problems with this release can be reported on http://dev.gozerbot.org
or contact us on #dunkbots on IRCnet or freenode. email is at
[EMAIL PROTECTED]

the gozerbot development team

ABOUT GOZERBOT:

Requirements

* a shell
* python 2.4 or higher
* if you want to remotely install plugins: the gnupg module
* if you want mysql support: the py-MySQLdb module
* if you want jabber support: the xmpppy module

Why gozerbot?

* provide both IRC and Jabber support
* user management by userhost .. bot will not respond if it
doesn't know you (see /docs/USER/)
* fleet .. use more than one bot in a program (list of bots)
(see /
docs/FLEET/)
* use the bot through dcc chat
* fetch rss feeds (see /docs/RSS/)
* remember items
* relaying between bots (see /docs/RELAY/)
* program your own plugins (see /docs/PROGRAMPLUGIN/)
* run the builtin webserver (see /docs/WEBSERVER/)
* query other bots webserver via irc (see /docs/COLLECTIVE/)
* serve as a udp <-> irc or jabber gateway (see /docs/UDP)
* mysql and sqlite support
-- 
http://mail.python.org/mailman/listinfo/python-list


GOZERBOT 0.9 RELEASED

2009-02-06 Thread Bart Thate
Finally gozerbot 0.9 has been released.  This is a huge step forward
to version 1.0 and contains a number of changes:

* use json as the format to save data in instead of pickles
* let config files also use json, this makes them more readable
and human editable
* remove popen usage from the bot core
* remove execfile() calls from the bot core
* rewrite the gozerbot package into several subpackages
* use sqlaclhemy to provide database backend (sqlite3 is default)
* require python2.5
* move most of the plugins into their own package
* restructure the gozerdata layout so its more readable

All these changes makes upgrading from older versions of gozerbot
necessary so a gozerbot-upgrade program is provided (upgrading from
0.7 is not supported yet, will follow soon).

See http://gozerbot.org on how to install gozerbot 0.9

About GOZERBOT:

0.9 Requirements

* a shell
* python 2.5 or higher
* gnupg
* simplejson
* sqlalchemy
* xmpppy

Why gozerbot?

* provide both IRC and Jabber support
* user management by userhost .. bot will not respond if it
doesn't know you (see USER)
* fleet .. use more than one bot in a program (list of bots) (see
FLEET)
* use the bot through dcc chat
* fetch rss feeds (see RSS)
* remember items
* relaying between bots (see RELAY)
* program your own plugins (see PROGRAMPLUGIN)
* query other bots with json REST (see CLOUD)
* serve as a udp <-> irc or jabber notification bot (see UDP
* sqlalchemy support

Bart
--
http://mail.python.org/mailman/listinfo/python-list


Request For (gozerbot) Testers

2009-01-02 Thread Bart Thate
So 0.9 is getting in shape and there is one issue that keeps me from
releasing 0.9 and that is the upgrade path. 0.9 is vastely different
from 0.8 so a special upgrade script has been written to aid with
this. Now i have tested this on some gozerbot users but i need a more
broader audience that wants to test this for me. So if you run a 0.8
gozerbot you could help me out with testing the 0.9 upgrade script,
testing can be done along side your own bot so you dont loose your old
configuration.

To test do the following:

1) hg clone http://core.gozerbot.org/hg/dev/0.9 0.9bot
2) cd 0.9bot
3) hg clone http://core.gozerbot.org/hg/plugs/gozerplugs
4) ./bin/gozerbot-upgrade  .
5) ./bin/gozerbot

Check if the bot has converted your data properly with the !size
command. As a last step you can test the plugins with the !test-plugs
command.
If you have any problems with testing gozerbot 0.9 let me know on
#dunkbots IRCnet or at bth...@gmail.com .. THNX ;]

Bart

see http://gozerbot.org/newsite/0.9/ for more information about the
upcoming 0.9 release
--
http://mail.python.org/mailman/listinfo/python-list


GOZERBOT 0.8.1-BETA released

2008-05-18 Thread Bart Thate

working to a new 0.8.1 release we make a BETA available to be tested
by interested users.

new features:

* ssl connections are now supported
* third party software included into gozerbot:
  o feedparser (used by RSS) .. makes atom feeds possible
  o simplejson (used by COLLECTIVE)
  o BeautifulSoup (used to parse webpages)
* renewed RSS plugin
* renewed collective plugin
* renewed webserver plugin .. new webserver API
* tcp.py notification plugin as well as a totcp.py client program

if you are using one of these features please test this BETA.

the BETA can be downloaded from http://gozerbot.org and problems with
it can be reported on http://dev.gozerbot.org or email me at
[EMAIL PROTECTED]

about gozerbot:

Requirements

* a shell
* python 2.4 or higher
* if you want to remotely install plugins: the gnupg module
* if you want mysql support: the py-MySQLdb module
* if you want jabber support: the xmpppy module

Why gozerbot?

* provide both IRC and Jabber support
* user management by userhost .. bot will not respond if it
doesn't know you (see /docs/USER/)
* fleet .. use more than one bot in a program (list of bots) (see /
docs/FLEET/)
* use the bot through dcc chat
* fetch rss feeds (see /docs/RSS/)
* remember items
* relaying between bots (see /docs/RELAY/)
* program your own plugins (see /docs/PROGRAMPLUGIN/)
* run the builtin webserver (see /docs/WEBSERVER/)
* query other bots webserver via irc (see /docs/COLLECTIVE/)
* serve as a udp <-> irc or jabber gateway (see /docs/UDP)
* mysql and sqlite support

the gozerbot development team
--
http://mail.python.org/mailman/listinfo/python-list


GOZERBOT 0.8.1.0 released

2008-06-02 Thread Bart Thate
0.8.1.0 is here and can be downloaded from http://gozerbot.org

new features:

* ssl connections are now supported
* third party software included into gozerbot:
  o feedparser (used by RSS) .. makes atom feeds possible
  o simplejson (used by COLLECTIVE)
  o BeautifulSoup (used to parse webpages)
* renewed RSS plugin
* renewed collective plugin
* renewed webserver plugin .. new webserver API
* tcp.py notification plugin as well as a totcp.py client program

the following plugins were removed from the main distribition:

* autovoice
* away
* convert
* country
* event
* grab
* jcoll
* probe

if you are using one of these plugins use install-plug  to
install them from the plugin server.

any problems with the bot can be reported on #dunkbots on IRCnet or
email [EMAIL PROTECTED]

debian package and freebsd port will follow

have fun ;]

about gozerbot:

Requirements

* a shell
* python 2.4 or higher
* if you want to remotely install plugins: the gnupg module
* if you want mysql support: the py-MySQLdb module
* if you want jabber support: the xmpppy module

Why gozerbot?

* provide both IRC and Jabber support
* user management by userhost .. bot will not respond if it
doesn't know you
* fleet .. use more than one bot in a program (list of bots)
* use the bot through dcc chat
* fetch rss feeds
* remember items
* relaying between bots
* program your own plugins
* run the builtin webserver
* query other bots webserver via irc
* serve as a udp <-> irc or jabber notification bot
* mysql and sqlite support
--
http://mail.python.org/mailman/listinfo/python-list


cmndbot 0.1 beta 1 released

2009-11-27 Thread Bart Thate
So once again i bite the bullet because i can no longer wait on going
public with this.

I'm pleased to announce CMNDBOT 0.1 BETA1 to the world as this is the
first released of my port of GOZERBOT to the Google Application
Engine, enabling it on wave, web and xmpp.

I'll paste here the README to explain what it does:

CMNDBOT is a port of gozerbot to google wave platform. GOZERBOT needed
to
be completely rewritten as programs running on google application
engine
(GAE) run within a CGI model which means that the bot get loaded on
every
request (unless its cached). Core functionality is available right now
but
most plugins need to be ported still. Besides wave the bot also
supports web
and jabber (XMPP) access.

this is the code that is being run by the cmndbot.appspot.com bot and
is
free code (BSD license). you can clone it to run your own cmndbot or
just to read how things are being done. no fear in reading cmndbot
code !

as the name says cmndbot allows you to execute commands that you can
program
easily through the use of plugins.

example:

from gozerlib.commands import cmnds

def handle_hello(bot, event):
event.reply("hello %s" % event.userhost)

cmnds.add('hello', handle_hello, 'USER')

as of now a few gozerbot plugins are being ported to cmndbot, namely:

* eight ball
* ipcalc
* todo
* wikipedia
* infoitem
* gcalc
* RSS

other plugins will follow but the focus is now mainly on the bots
core.

CMNDBOT is accessible at http://cmndbot.appspot.com (WEB) or
cmnd...@appspot.com (WAVE/XMPP).

A gadget is also in the works at http://cmndbot.appspot.com/cmnd.xml
but it only works with google chrome for now .. my javascript skills
are very *kuch* young ;]

actualy this code is still young as docs are mostely missing and the
bot really needs to be tested, but thats what this release is for,
rememer this is still version 0.1 !

code is at http://cmndbot.googlecode.com/hg

I hope people are interested in developing this bot with me, if you do
you can contact me at bth...@gmail.com or bth...@googlewave.com

Bart
-- 
http://mail.python.org/mailman/listinfo/python-list


CMNDBOT 0.1 BETA2 released

2009-12-06 Thread Bart Thate
Hello world !

a week after BETA1 i'm releasing BETA2, changes go fast ;]

what changed in this version:

* RSS plugin can now push to xmpp clients .. add cmnd...@appspot.com
to your jabber client and do 1) rss-add to add a feed 2) use rss-start
to make the bot start sending you feed updates.

* a gadget plugin that enables you to load gadgets with one command
(well two if you need to add the gadgets url)

* a iframe gadget was made that loads the bots web interface into wave
and other gadget containers

* focus of the command box is now off when loading the gadget

* a plugin dedicated to wave functionality was made. currently it has
commands to get the id of the wave, getting the url redirecting to the
wave and one to get a list of the wave's participants

* lots of other bug fixes .. running from one to the other ;]

Bart

About CMNDBOT:

CMNDBOT is an IRC like command bot for wave, web and xmpp, and has a
plugin structure to allow users to program there own plugins. CMNDBOT
is free code (BSD) so you can clone it and run a CMNDBOT yourself.

Source is available at http://cmndbot.googlecode.com/

For a live example of CMNDBOT see cmnd...@appspot.com for jabber and
wave and http://cmndbot.appspot.com for web. You can also try the new
iframe gadget at http://cmndbot.appspot.com/iframe.xml or ... invite
the bot to your wave and run !load cmndbot ;]

feedback is very much appriciated, i made a wave where we can meet:

https://wave.google.com/wave/#restored:wave:googlewave.com!w%252BV9a2mVSOC
-- 
http://mail.python.org/mailman/listinfo/python-list


GZRBOT 0.1 released

2009-12-23 Thread Bart Thate
Hi world !

First of all happy christmas and a happy new year to all of you.

I want to release GZRBOT to the world. This is a rename of the CMNDBOT
bot, since this name matches the one of GOZERBOT the best and thats
what this bot is best described .. GOZERBOT on the Google Application
Engine.

So this is really CMNDBOT 0.1 after BETA1 and BETA2, but then renamed
to GZRBOT.

Most of all GZRBOT is there for its code and reuse of it is highly
recommended. I made a script which makes it easy to clone gozerbot and
rename it so you can run your own bot off the GZRBOT code. GZRBOT has
a plugin system that lets you program your own plugin and provide you
a way to add custom functionality to your bot. Both writing commands
and reacting on events through callbacks is supported.

A live web demo of GZRBOT can be seen at http://gzrbot.appspot.com.
For wave or jabber (gtalk or any other jabber client) add
gzr...@appspot.com to your contactlist or join me on this wave:

GZRBOT 0.1 released

Source code and documentation (still needs to be written) is available
at http://gzrbot.googlecode.com

If you have any question about GZRBOT you can reach me at
bth...@gmail.com

Have fun with it ! ;]

Bart
-- 
http://mail.python.org/mailman/listinfo/python-list


CMNDBOT 0.1 released

2010-01-02 Thread Bart Thate
new in this release:

* updated the repository to GZRBOT code
* a outputcache and poller gadget is now available to support writing
to waves (right now the poller polls every minute)
* RSS plugin looks stable

todo:

* make gozernet work .. this lets GZRBOT bots communicate with each
other by using json over xmpp
* use this to implement wave <-> IRC relaying
* port monitoring of bot output
* port karma plugin
* port quote plugin

demo:

http://cmndbot.appspot.com

wave/xmpp:

cmnd...@appspot.com

about CMNDBOT:

CMNDBOT is a port of GOZERBOT to the Google Application Engine. It
supports wave, web and xmpp. It supports a plugin structure that lets
you add commands or register callbacks for events. License is BSD
-- 
http://mail.python.org/mailman/listinfo/python-list


GZRBOT 0.2 BETA1 released

2010-03-03 Thread Bart Thate
Hello World !

Welcome to the world of Active API ;]

Google released their new Wave API so i quickly ported GZRBOT to the
new API. Now we can finally push to waves instead of using polling.
This makes pushing feeds to waves possible, and this is one of the
main things GZRBOT can do. We now use pubsubhubbub service provided by
superfeedr.com to fetch our RSS and Atom feeds for us and have them
pushed to the bot, which we then forward to the waves that have been
subscribed ( or jabber clients for that matter)

This release is BETA1 which doesnt mean the code is fixed yet as
BETA2,3,4 and RC1, 2, 3 etc are still ahead before 0.2 is released. So
this is kind of bleeding edge and you might want to wait for 0.2.1 or
so ;]

If you like to play around with wave/jabber bots on GAE then this is
the bot for you.

Code is at the mercurial repo:

hg clone http://gzrbot.googlecode.com/hg

Or download the tarball at http://gzrbot.googlecode.com

Basic documentation is at http://gozerbot.org/gzrdoc and i made a wave
available if you want to try the bot with me or have questions and
such:

https://wave.google.com/wave/#restored:wave:googlewave.com!w%252B51rssVscD

Hope you enjoy it !

Bart


about GZRBOT:

GZRBOT is a general purpose bot for wave, web and xmpp. It uses a
plugin
structure to provide easy programming of commands and callbacks,
allowing
you to implement your own "killer plugin".

GZRBOT comes with some plugins provided, for example:

- Hubbub plugin that uses superfeedr.com to get RSS feed pushed
instead of
pulling them ourselves. This lowers the load on the bot considerably.
A
max of 1000 feeds is for free.

- Watcher plugin that let you watch waves, get notified in jabber when
your
waves updates. (the bots sends the updated txt)

- Wave plugin that provides help with wave management. I'm working
on wave cloning after say x blips, so that larger conversations can be
created in google wave. UNDER DEVELOPMENT

- This is mostly needed for the last plugin i want to mention and that
is
the gozernet plugin. The plugin allows for relaying of events between
GZRBOT (Wave/Web/XMPP) and GOZERBOT (IRC/Jabber). IRC and Wave can be
bridged this way. UNDER DEVELOPMENT

GZRBOT is free code (BSD) and can be cloned as needed ;]

note: as of 0.2 GZRBOT uses the new v2 Wave API and thus needs
registration with google.
-- 
http://mail.python.org/mailman/listinfo/python-list


JSONBOT 0.1 released

2010-04-02 Thread Bart Thate
Introducing JSONBOT

JSONBOT is a bot that stores all its data in json format. It runs on
the Google Application Engine and can thus support wave, web and xmpp.
Standalone programms are provided for IRC and console, the goal is to
let both clientside and GAE side communicate through JSON either over
XMPP or HTTP POST.

this bot needs google_appengine installed in your home dir

JSONBOT provides the following programs:
j
sb - console version of jsonbot
jsb-irc - IRC version of jsonbot
jsb-run - run a release in the GAE dev_appserver
jsb-release - create a new release directory
jsb-upload - upload a release to the GAE

JSONBOT 0.1 contains the following plugins:

8b - eight ball
admin - administator related commands
ask - plugin for asking "experts" a question
choice - choice out of a list .. used in pipelines
core - core bot commands
count - count the numbers in a resutl .. used in pipelines
gadget - wave gadget support
gcalc - use google to calculate
gozernet - connect multiple JSONBOTs through xmpp
grep - grep the result .. used in pipelines
hubbub - pubsubhubbub plugin providing subscribe functionality
ipcalc - ipcalculator
irc - IRC related commands
misc - other commands
more - do a more on buffered output
not - negated grep .. used in pipelines
outputcache - show outputcache data
relay - relay to other waves/xmpp account
reload - reloading of plugins
reverse - reverse the result .. also used in pipelines
sort - sort the result .. used in pipelines
tail - tail the result .. used in pipelines
tinyurl - get a tinyurl
uniq - make the result unique .. used in pipelines
user - user management
userstate - userstate management
watcher - watch waves .. get notified in xmpp
wave - wave related commands
welcome - welcome messages shown in the gadget
wikipedia - query wikipedia

To upload your own bot do the following:

you need an account on the Google Application Engine. see
http://appengine.google.com/

1) run jsb-release yourbotname - this will create a uploadable dir
2) run jsb-upload yourbotname

this enables web and xmpp, for wave you need to do the following:

2) go to https://wave.google.com/wave/robot/register and register
your
bot
3) edit ~/regs/yourbotname/ dir and copy the verification token and
secret to the credentials.py file
4) run jsb-release yourbotname
4) run jsb-upload  yourbotname
5) once its uploaded click the "verify" button
6) copy the consumer key and secret to the credentials.py file en run
jsb-upload again
7) done !

Now you should be able to do the following:

1) visit the website at http://yourbotname.appspot.com
2) add the bot as Jabber buddy at yourbotn...@appspot.com
3) the same as wave bot
4) on joining a wave the bot loads a gadget from 
http://yourbotname.appspot.com/gadget.xml
5) manifest to add your bot to the waves newwave menu use
http://yourbotname.appspot.com/feeder.xml

JSONBOT is open source (MIT license) and free to clone when needed,
patches welcomed though ;]

home: http://jsonbot.googlecode.com/
demo: http://jsonbot.appspot.com/
wave/xmpp: json...@appspot.com
contact: bth...@gmail.com
-- 
http://mail.python.org/mailman/listinfo/python-list


JSONBOT 0.5 RELEASED

2010-12-06 Thread Bart Thate
Hello world ;]

I'm back with another release of JSONBOT, this time it is version 0.5
so we are half way through making this a 1.0 release. Lot of changes
to the core as well as other bug fixes, let me sum it up:

* this version requires an upgrade of your 0.4 JSONBOT if you run
already a JSONBOT see UPGRADE for more details on this.
* code is adapted to use the Channel API, you need google_appengine
version 1.4.0 for this.
* website has gotten a brand new look and feel.
* JSONBOT now uses ~/.jsonbot as its default datadir.
* the RSS plugin was rewritten to work on any feed instead of only
feed that support the pubDate token.
* shell bots now log to ~/.jsonbot/botlogs by default, rotating the
logs every day.
* lots and lots of bug fixes.

pointers:

* source code: http://jsonbot.googlecode.com
* web demo: http://jsonbot.appspot.com
* jabber demo: json...@appspot.com
* documentation: http://jsonbot.appspot.com/docs
* bugs: http://code.google.com/p/jsonbot/issues/list
* twitter: http://twitter.com/#!jsonbot

I consider JSONBOT to be of BETA quality now, i think it has become
quite usable ;] Any feedback would be very much appreciated.

As always ... HF !

Bart

about JSONBOT:

JSONBOT is a remote event-driven framework for building bots that talk
JSON to each other over XMPP.

This distribution provides bots built on this framework for console,
IRC, XMPP for the shell and WWW and XMPP for the Google Application
engine.

JSONBOT is all of the following:

* a shell console bot
* a shell IRC bot
* a shell XMPP bot
* a Web bot running on Google Application Engine
* a XMPP bot running on Google Application Engine
* a Google Wave bot running op Google Application Engine
* the XMPP bots are used to communicate between bots
* plugin infrastructure to write your own functionality
* event driven framework by the use of callbacks
-- 
http://mail.python.org/mailman/listinfo/python-list


JSONBOT 0.6 RELEASED

2011-01-04 Thread Bart Thate
Hello world and the best wishes for 2011 for all of you !

i'm pleased to announce version 0.6 of JSONBOT, a release that saw
it's complete codebase refactored. Things have moved into their own
package, making it easier to distribute JSONBOT to the various OS
around. I even renamed the name of the distribution to "jsb", so use
the jsb-0.6.tar.gz or "easy_install jsb" to get this version of
JSONBOT.

So once again i need to ask existing users to upgrade their JSONBOT
install, see http://jsonbot.appspot.com/docs/html/handbook/UPGRADE.html
for instructions on how to do that.

Functionality of the bot is the same as 0.5.

For more information on JSONBOT, see http://jsonbot.googlecode.com or
join us on #dunkbots Freenode.

Bot documentation and demo is on http://jsonbot.appspot.com

I hope you enjoy this release of JSONBOT, i'm glad i can start working
on 0.7 ;]

About JSONBOT:

JSONBOT is a remote event-driven framework for building bots that talk
JSON
to each other over XMPP.

This distribution provides bots built on this framework for console,
IRC,
XMPP for the shell and WWW and XMPP for the Google Application engine.

JSONBOT is all of the following:

* a shell console bot
* a shell IRC bot
* a shell XMPP bot
* a Web bot running on Google Application Engine
* a XMPP bot running on Google Application Engine
* a Google Wave bot running op Google Application Engine
* the XMPP bots are used to communicate between bots
* plugin infrastructure to write your own functionality
* event driven framework by the use of callbacks

Bart
-- 
http://mail.python.org/mailman/listinfo/python-list


JSONBOT 0.6.1 RELEASED

2011-02-03 Thread Bart Thate
Hello every human out there !

i'm pleased to announce the release of JSONBOT 0.6.1 FINAL, a release
that saw a lot of work into the shell side of things and no changes to
GAE.

0.6.1 has the following changes:

* the ! char is not used instead of | in a pipeline. This is to make
it easier to use a pipeline on mobile phones.

* a new commandline interface has been created. You can now do "jsb
" .. no need to start up the console app when you have a single
command to execute

* ? is now used a query character, so things you learn the bot with !
learn can be queried with ?

* auto_register and guestasuser config options are now disabled by
default

* core xmpp parsing code has been rewritten

* many more bug fixes.

You can grab a copy of the code (tarball or mercurial repo) at
http://jsonbot.googlecode.com

Hope you enjoy this release as much as i enjoyed making it ;]
Have Fun !

Bart

About JOSNBOT:

JSONBOT is a remote event-driven framework for building bots that talk
JSON to each other over XMPP.

This distribution provides bots built on this framework for console,
IRC, XMPP for the shell and WWW and XMPP for the Google Application
engine.

JSONBOT is all of the following:

a shell console bot
a shell IRC bot
a shell XMPP bot
a Web bot running on Google Application Engine
a XMPP bot running on Google Application Engine
a Google Wave bot running op Google Application Engine
the XMPP bots are used to communicate between bots
plugin infrastructure to write your own functionality
event driven framework by the use of callbacks
-- 
http://mail.python.org/mailman/listinfo/python-list


GOZERBOT 0.9.2 BETA1 released

2010-04-26 Thread Bart Thate
I just released the first BETA of GOZERBOT version 0.9.2

Please test this release if you can.

Best is to run of the mercurial repo:

hg clone http://core.gozerbot.org/hg/dev/0.9

or run easy_install -U gozerbot gozerplugs (make sure there is no
gozerbot dir in your working directory.)

docs are at http://gozerbot.org/0.9.2

If you find any bugs you can report them at http://dev,gozerbot.org/

Have fun !

about GOZERBOT:

GOZERBOT is a channel bot that aids with conversation in irc channels
and jabber conference rooms. its mainly used to send notifications
(RSS, nagios, etc.) and to have custom commands made for the channel.
More then just a channel bot GOZERBOT aims to provide a platform for
the user to program his own bot and make it into something thats
usefull. This is done with a plugin structure that makes it easy to
program your own plugins. But GOZERBOT comes with some batteries
included, there are now over 100 plugins already written and ready for
use.


-- 
http://mail.python.org/mailman/listinfo/python-list


GOZERBOT 0.9.1 BETA2 released

2009-07-03 Thread Bart Thate
GOZERBOT has a new website !! check it out at http://gozerbot.org.
This is all in preparation for the 0.9.1 release and the latest
GOZERBOT beta has been released as well. Please try this version and
let me know how goes.

Install is as simple as .. easy_install gozerbot gozerplugs, see
README.

This release will be used to move GOZERBOT 0.9 into the debian
repositories and freebsd ports.

we can be contacted on #dunkbots EFNET/IRCNET or use http://dev.gozerbot.org
for any bugs you might find.

NEW IN THIS RELEASE:

* GOZERBOT is now truely free as it no longer depends on GPL licensed
xmpppy, a own xmpp package has been implemented for this.

* GOZERBOT now depends on setuptools to install the proper packages

* gozerbot-nest script can be used to install all dependacies and bot
code in 1 directory that can be run by the user (no root required)

* morphs are added that allow for encryption of input and output
streams (not used yet)

ABOUT GOZERBOT:

GOZERBOT is a channel bot that aids with conversation in irc channels
and jabber conference rooms. its mainly used to serve rss feeds and to
have custom commands made for the channel. More then just a channel
bot GOZERBOT aims to provide a platform for the user to program his
own bot and make it into something thats usefull. This is done with a
plugin structure that makes it easy to program your own. But GOZERBOT
comes with some batteries included, there are now over 100 plugins
already written and ready for use.

groet,

Bart
-- 
http://mail.python.org/mailman/listinfo/python-list


GOZERBOT 0.9.1 released

2009-08-11 Thread Bart Thate
here it is .. GOZERBOT 0.9.1 !!

Main change this time is the distribution method, we now provide a
tar.gz with all the dependencies included. This means that you can run
the bot locally without any root required. Python 2.5 or higher
needed, see http://gozerbot.org

Enjoy !

about GOZERBOT:

GOZERBOT is a channel bot that aids with conversation in irc channels
and
jabber conference rooms. its mainly used to serve rss feeds and to
have
custom commands made for the channel. More then just a channel bot
GOZERBOT
aims to provide a platform for the user to program his own bot and
make it
into something thats usefull. This is done with a plugin structure
that
makes it easy to program your own. But GOZERBOT comes with some
batteries
included, there are now over 100 plugins already written and ready for
use.
-- 
http://mail.python.org/mailman/listinfo/python-list


JSONBOT 0.3 RELEASE

2010-08-30 Thread Bart Thate
Hello world !

I just released version 0.3 of JSONBOT. JSONBOT is a remote event
driven framework for building bots that talk JSON to each other over
XMPP.

This distribution provides bots built on this framework for console,
IRC, XMPP for the shell and WWW and XMPP for the Google Application
engine.

JSONBOT 0.3 provides the following programs:

jsb - console version of jsonbot
jsb-import - import data from another bot
jsb-installplug - install remote plugins
jsb-irc - IRC version of jsonbot (socket)
jsb-xmpp - XMPP version of jsonbot (socket)
jsb-fleet - mix IRC and XMPP bots
jsb-release - create a new release directory
jsb-rollback - rollback a release
jsb-run - run a release in the GAE dev_appserver
jsb-stop - stop a running bot
jsb-upload - upload a release to the GAE

A plugin infrastructure is in place to program the functionality that
is needed.

JSONBOT 0.3 plugins:

8b - eight ball
admin - administator related commands
alias - keep aliases (per user)
ask - plugin for asking "experts" a question
choice - choice out of a list .. used in pipelines
controlchar - set the control character of a channel
forward - forward events of a channel to another bot
clone - clone waves into new ones
core - core bot commands
count - count the numbers in a result .. used in pipelines
data - provide data dumps of channels, bots, events
fleet - support multiple bots in a running instance (list of bots)
gae - provide GAE commands like flush cache or cache stats
gadget - wave gadget support
gcalc - use google to calculate
grep - grep the result .. used in pipelines
hubbub - pubsubhubbub plugin providing subscribe functionality
ipcalc - ipcalculator
irc - IRC related commands
jsondata - enable/disable sharing of files through the jsonserver (not
enabled right now)
kickban - channel control commands for IRC
misc - other commands
more - do a more on buffered output
nickcapture - retake nick (IRC)
nickserv - nickserver support (IRC)
not - negated grep .. used in pipelines
outputcache - show outputcache data
rss - provide RSS and Atom pollers
relay - relay to other waves/xmpp
restserver - provide REST functionality to the bot
reload - reloading of plugins
reverse - rever see the result .. also used in pipelines
seen - keep track of users
shop - keep shopping lists
sort - sort the result .. used in pipelines
tail - tail the result .. used in pipelines
test - test commands
tinyurl - get a tinyurl
todo - keep a todo list
underauth - undernet auth support (IRC)
uniq - make the result unique .. used in pipelines
user - user management
userstate - userstate management
watcher - watch channels that get forwarded to the bot.
wave - wave related commands
weather - show weather in a city
welcome - welcome messages shown in the gadget
wikipedia - query wikipedia
xmpp - xmpp related functions account

Project home is at http://jsonbot.googlecode.com

Have fun with it!
-- 
http://mail.python.org/mailman/listinfo/python-list


JSONBOT 0.4 RELEASED

2010-09-28 Thread Bart Thate
Yesterday i pushed version 0.4 of JSONBOT to pypi and googlecode. This
version has a rewritten core that makes it easier to develop bots for
and has lots of bugs fixed. A karma plugin was added as well as a
silent mode that forwards bot responses to /msg.

You can grab a copy on http://jsonbot.googlecode.com or use the
mercurial reposistory:

"hg clone http://jsonbot.googlecode.com/hg jsonbot".

please file any bugs reports at http://code.google.com/p/jsonbot/issues/list

we are at #dunkbots on freenode and IRCnet.

Have fun !


about JSONBOT:

JSONBOT is a remote event-driven framework for building bots that talk
JSON to each other over XMPP. IRC/Console/XMPP (shell) Wave/Web/XMPP
(GAE) implementations provided.
-- 
http://mail.python.org/mailman/listinfo/python-list


botlib - framework to program bots

2017-07-12 Thread Bart Thate
BOTLIB - Framework to program bots is released in the Public Domain - 
https://lnkd.in/ginB49K  #publicdomain #python3 #xmpp #irc #bot
Framework to program bots.
-- 
https://mail.python.org/mailman/listinfo/python-list