Python C Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
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..