Skip to content

mnunberg/yobot

Repository files navigation

Yobot is a multi-protocol multi-user messenger relay with a plugin system.

This is not an IRC bouncer, nor is it a normal instant messaging client -
though this does include the functionality of both. If you are looking for an
IRC bouncer, there are many out there. If you are looking for a normal, full
featured IM client, use Pidgin

The following features have been at least moderately implemented:

(1): The ability to sign in from multiple locations while not being signed
out from other locations. Some protocols (oscar/AIM and jabber) support this
while others (such as yahoo or MSN) do not. The caveat is that you must use
the included client (or any client which speaks the Yobot protocol, which 
as of writing, is only the included client).

(2): Centralized Logging and 'offline' messaging. Using the client, you can
query the server for message history, and also get any messages received 
in a period when no other client was connected

(3): A plugin system: ./py/yobot_interfaces.py has interface definitions for
writing your own plugin. The basic methods include connecting to a server,
joining a chatroom, and receiving/sending messages.

(4): A very comprehensive trivia bot which reads to an SQLite database (see
source), and optionally writes to the database in an attempt to prevent the 
same questions from appearing again. Also implemented is an anagrams feature
which will scramble a list of words (also from a database). -- written in PyQt

(5): A graphical client written in PyQt, supports basic html formatting, smileys,
and buddy icons. Can also set your status for each account separately. The UI 
was designed to be simple.

Yobot does not do any IM protocol handling. If you cannot connect to your 
account, most likely something is wrong with libpurple or the protocol
server.

Also note that this is extremely alpha quality software, many things will still
not work

=============================About the source tree=======================
While ideally, the directory should be restructured, the basic idea is this:
C source files which interface directly with libpurple are in the top level.
the protoclient.c and yobotproto.h are used to implement the yobot protocol.
I have made my attempt to abstract communication between the purple server
and the python clients.

yobot_uiops.c contains miscellaneous UiOps/signal handlers (or in other words,
anything that wasn't big/long/complex enough to warrant its own file).. I have
also tried to follow the pidgin/finch naming pattern for other APIs, hence
yobot_conversation, yobot_requests, yobot_blist (which also contains buddy 
request authorization and such).

the ./py directory contains python source which is the bread and butter of
yobot. 

yobotclass.py contains wrapper classes around the basic message types
used in the yobot protocol - Message, Event, and Account types.

yobotproto.py is an autogenerated file that should be there after the sources
have been build.

yobotnet.py contains the basic logic behind the actual proxy code within yobot.
It is responsible for handling commands, implementing basic access control, and 
tracking of multiple user accounts. The API implemented therein should be 
relatively stable.

msglogger.py logs/retrieves messages to/from an SQLite database.

account.py is the account management and registration code.

client.py is the client-side main entry point. It invokes hooks for plugins and
sets stuff up;

client_support.py "extends" some of the classes in yobotclass.py, as well as adds
some classes for the GUI

yobotops.py has some basic pretty-formatting functions for protocol constants

debuglog.py contains some functions for debugging and pretty-printing to the 
screen. it has saved me much headache.

Colorama and Simplejson are projects i snatched from the python package archive
and 

==================================GUI================================
The Yobot GUI is written in PyQt4, and thus you must have this 
installed in order to run it on a linux system. Distributions for windows 
and Mac OS X will ship with their own versions of (Py)Qt.

./py/gui is where the main gui classes are located: the directory contains
quite a few autogenerated files from qt designer. I will list the files that
are not autogenerated and actually have some logic in them:

qyobot.py contains the main gui code which initializes the gui end of yobot.

gui_util.py contains various functions used throughout the gui applications..
TBC..

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages