#!/usr/bin/env python

import dbus, gobject, time, threading, dbus.glib
from dbus.mainloop.glib import DBusGMainLoop


def sendmessage(text, acct, conversation):
#  	conv2 = purple.PurpleGetConversations()
#  	if conv2.count(conversation) != 1:
#  		acct, conversation = createconv(acct, )
	ims = purple.PurpleConversationGetImData(conversation)
	purple.PurpleConvImSend(ims, text)
	return

def createconv(acct, name):
	conv = purple.PurpleConversationNew(1,acct,name)
	trans = purple.PurpleConvIm(conv)
	return trans, conv

def stripper(message):
	mode = 0
	out = ''
	for letter in message:
		if mode == 0:
			if letter == '<':
				mode = 1
			else:
				out+=letter
		else:
			if letter == '>':
				mode = 0
	return out
			
def catcher(account, sender, message, conversation, flags):
	thread1 = threading.Thread(target=immsg, args=(account, sender, message, conversation, flags))
	thread1.start()
	return

def immsg(account, sender, message, conversation, flags):
	status = purple.PurpleSavedstatusGetCurrent()
	bud = purple.PurpleFindBuddy(account, sender)
	name2 = purple.PurpleBuddyGetAlias(bud)
	name = purple.PurpleBuddyGetName(bud)
	if conversation == 0:
		yout = purple.PurpleGetConversations()
		for pigs in yout:
			if name == purple.PurpleConversationGetName(pigs): conversation = pigs
	message = stripper(message)
	message = message.lower()
	if message=='scissors':
		sendmessage('rock', account, conversation)
	if message=='rock':
		sendmessage('paper', account, conversation)
	if message=='paper':
		sendmessage('scissors', account, conversation)

	return

DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")

# pig = purple.PurpleGetConversations()
# ims = purple.PurpleConvIm(pig[0])
# acct = purple.PurpleConversationGetAccount(pig[0]) 
# while True:
# 	r = raw_input('> ')
# 	sendmessage(r, ims, acct)
bus.add_signal_receiver(catcher,
		dbus_interface="im.pidgin.purple.PurpleInterface",
		signal_name="ReceivedImMsg")

gobject.threads_init()
dbus.glib.init_threads()

loop = gobject.MainLoop()
loop.run()






