# Skype to IRC bridge

import sys
import Skype4Py
import irclib
import threading

# stubs

def SendToIrc(skypeChat, user, message):
    ircserver = skype2irc.get(skypeChat.Name)
    if ircserver is not None:
        server = ircservers[ircserver[0]]
        server.connection.privmsg(ircserver[1], "< %s> %s" % (user, message))
    else:
        print "Unroutable message from %s" % skypeChat

def SendToSkype(ircserver, ircchannel, user, message):
    skypechat = irc2skype.get((ircserver, ircchannel))
    if skypechat is not None:
        skype.Chat(skypechat).SendMessage("< %s> %s" % (user, message))
    else:
        print "Unroutable message from %s/%s" % (ircserver, ircchannel)

# skype

def OnAttach(status):
    print 'API attachment status: ' + skype.Convert.AttachmentStatusToText(status)
    if status == Skype4Py.apiAttachAvailable:
        skype.Attach()

def OnMessageStatus(Message, Status):
    if Status == 'RECEIVED': # or Status == 'SENT':
        SendToIrc(Message.Chat, Message.FromDisplayName, Message.Body)
    else:
        print "Ignoring from skype: %s/%s" % (Message.FromDisplayName, Message.Body)

skype = Skype4Py.Skype()
skype.OnAttachmentStatus = OnAttach
skype.OnMessageStatus = OnMessageStatus

print 'Connecting to Skype..'
skype.Attach()

# irc

class DumbIrcClient(irclib.SimpleIRCClient):
    def __init__(self):
        irclib.SimpleIRCClient.__init__(self)

    def on_welcome(self,c,e):
        print "Welcomed!"
        c.join("#flood")
    def on_pubmsg(self,c,e):
        user = e.source()
        user = user[0:user.index('!')]
        SendToSkype(c.server,e.target(), user, e.arguments()[0])

    def run(self):
        self.ircobj.process_forever()

chatmaps = [("#chris.andreae/$c301b64f21991556", ("irc.sitharus.com", "#flood"))]
skype2irc = {}
irc2skype = {}

ircservers = {}

def setupChatmaps(): # WTB: (let (( ... )) )
    for (skype,irc) in chatmaps:
        skype2irc[skype] = irc
        irc2skype[irc] = skype

setupChatmaps()

sitharus = DumbIrcClient()
sitharus.connect("irc.sitharus.com", 6667, "skype")
threading.Thread(None,lambda: sitharus.run()).start()
ircservers["irc.sitharus.com"] = sitharus


print "Unblocked, manual loop"
Cmd = ''
while not Cmd == 'exit':
    Cmd = raw_input('')

@@ -292,21 +292,21 @@
 er%5B1%5D, %22
-%3C %25s%3E
+%02%25s%0F:
  %25s%22 %25 (
@@ -494,16 +494,24 @@
 cchannel
+.lower()
 ))%0A    i
@@ -582,13 +582,11 @@
 ge(%22
-%3C 
 %25s
-%3E
+:
  %25s%22
@@ -1152,16 +1152,31 @@
 y.Skype(
+Transport='x11'
 )%0Askype.
@@ -1290,16 +1290,43 @@
 Attach()
+%0Aprint 'connected to skype'
 %0A%0A# irc%0A
@@ -1515,21 +1515,35 @@
 .join(%22#
-flood
+WellingtonLunchChat
 %22)%0A    d
@@ -1755,16 +1755,30 @@
 ever()%0A%0A
+chatmaps = %5B%5D%0A
 chatmaps
@@ -1803,56 +1803,91 @@
 ae/$
-c301b64f21991556%22, (%22irc.sitharus.com%22, %22#flood%22
+b81041707fc653fb%22,%0A             (%22irc.sitharus.com%22, %22#WellingtonLunchChat%22.lower()
 ))%5D%0A

Use more reliable X11 transport. Configure wellington lunch chat example. Format IRC names as bold.