def onRaw(e): if not e.quiet: if e.msg[1].isdigit(): if e.msg[1] == '332': window = windows.get(windows.ChannelWindow, e.network, e.msg[3]) or e.window f = log_file(e.network, window.id) f.write('topic on %s is: %s' % (e.msg[3], e.text)) elif e.msg[1] == '333': window = windows.get(windows.ChannelWindow, e.network, e.msg[3]) or e.window f = log_file(e.network, window.id) f.write('topic on %s set by %s at time %s' % (e.msg[3], e.msg[4], time.ctime(int(e.msg[5])))) elif e.msg[1] == '329': #RPL_CREATIONTIME pass else: f = log_file(e.network, e.window.id) f.write('* %s' % ' '.join(e.msg[3:])) elif e.msg[1] == 'ERROR': f = log_file(e.network, e.window.id) f.write('Error: %s' % e.text)
def setupText(e): if e.target == e.network.me: e.window = windows.new(windows.QueryWindow, e.network, e.source, core) else: e.window = \ windows.get(windows.ChannelWindow, e.network, e.target, core) or \ windows.get(windows.QueryWindow, e.network, e.source, core) or \ e.window
def setupText(e): if e.target == e.network.me: e.window = windows.new(windows.QueryWindow, e.network, e.source) else: e.window = \ windows.get(windows.ChannelWindow, e.network, e.target) or \ windows.get(windows.QueryWindow, e.network, e.source) or \ e.window
def onRaw(e): if not e.quiet: if e.msg[1].isdigit(): if e.msg[1] == '332': window = windows.get(windows.ChannelWindow, e.network, e.msg[3], core) or e.window window.write("%sTopic on %s is: %s" % (prefix(e), e.msg[3], e.text)) elif e.msg[1] == '333': window = windows.get(windows.ChannelWindow, e.network, e.msg[3], core) or e.window window.write( "%sTopic on %s set by %s at time %s" % (prefix(e), e.msg[3], e.msg[4], time.ctime(int(e.msg[5])))) elif e.msg[1] == '329': #RPL_CREATIONTIME pass elif e.msg[1] == '311': #RPL_WHOISUSER e.window.write("* %s is %s@%s * %s" % (e.msg[3], e.msg[4], e.msg[5], e.msg[7])) elif e.msg[1] == '312': #RPL_WHOISSERVER e.window.write("* %s on %s (%s)" % (e.msg[3], e.msg[4], e.msg[5])) elif e.msg[1] == '317': #RPL_WHOISIDLE e.window.write("* %s has been idle for %s" % (e.msg[3], pretty_time(int(e.msg[4])))) if e.msg[5].isdigit(): e.window.write("* %s signed on %s" % (e.msg[3], time.ctime(int(e.msg[5])))) elif e.msg[1] == '319': #RPL_WHOISCHANNELS e.window.write("* %s on channels: %s" % (e.msg[3], e.msg[4])) elif e.msg[1] == '330': #RPL_WHOISACCOUNT #this appears to conflict with another raw, so if there's anything weird about it, # we fall back on the default if len( e.msg ) == 6 and not e.msg[4].isdigit() and not e.msg[5].isdigit(): e.window.write("* %s %s %s" % (e.msg[3], e.msg[5], e.msg[4])) else: e.window.write("* %s" % ' '.join(e.msg[3:])) else: e.window.write("* %s" % ' '.join(e.msg[3:])) elif e.msg[1] == 'ERROR': e.window.write("Error: %s" % e.text)
def setupJoin(e): if e.source == e.network.me: window = windows.get(windows.StatusWindow, e.network, 'status') if window and not conf.get('status'): window.mutate(windows.ChannelWindow, e.network, e.target) else: window = windows.new(windows.ChannelWindow, e.network, e.target) if e.requested: window.activate() e.window = windows.get(windows.ChannelWindow, e.network, e.target) or e.window
def setupNotice(e): if e.target != e.network.me: e.window = windows.get( windows.ChannelWindow, e.network, e.target, core) or e.window
def setupRaw(e): if e.msg[1] == '353': #names reply channel = getchan(e.network,e.msg[4]) if channel: if not channel.getting_names: channel.nicks.clear() channel.normal_nicks.clear() channel.getting_names = True if not channel.got_names: e.quiet = True for nickname in e.msg[5].split(' '): if nickname: if not nickname[0].isalpha() and nickname[0] in e.network.prefixes: n = nickname[1:] channel.nicks[n] = e.network.prefixes[nickname[0]] channel.normal_nicks[e.network.norm_case(n)] = n else: channel.nicks[nickname] = '' channel.normal_nicks[e.network.norm_case(nickname)] = nickname elif e.msg[1] == '366': #end of names reply channel = getchan(e.network,e.msg[3]) if channel: if not channel.got_names: e.quiet = True channel.got_names = True channel.getting_names = False window = windows.get(windows.ChannelWindow, e.network, e.msg[3], core) if window: window.nicklist.replace( (nick, escape(prefix(e.network, channel.name, nick)), sortkey(e.network, channel.name, nick)) for nick in channel.nicks ) elif e.msg[1] == '324': #channel mode is channel = getchan(e.network,e.msg[3]) if channel: if not channel.got_mode: e.quiet = True channel.got_mode = True mode = e.msg[4] params = e.msg[:4:-1] list_modes, always_parm_modes, set_parm_modes, normal_modes = \ e.network.isupport['CHANMODES'].split(',') parm_modes = always_parm_modes + set_parm_modes channel.mode = e.msg[4] channel.special_mode.clear() for char in channel.mode: if char in parm_modes: channel.special_mode[char] = params.pop() elif e.msg[1] == '331': #no topic channel = getchan(e.network,e.msg[3]) if channel: channel.topic = '' elif e.msg[1] == '332': #channel topic is channel = getchan(e.network,e.msg[3]) if channel: channel.topic = e.text
def nicklist_add(network, channel, nick): window = windows.get(windows.ChannelWindow, network, channel.name, core) #window = core.window if window: window.nicklist.append(nick, escape(prefix(network, channel.name, nick)), sortkey(network, channel.name, nick))
def nicklist_del(network, channel, nick): window = windows.get(windows.ChannelWindow, network, channel.name, core) #window = core.window if window: try: window.nicklist.remove(nick) except ValueError: pass
def onRaw(e): if not e.quiet: if e.msg[1].isdigit(): if e.msg[1] == '332': window = windows.get(windows.ChannelWindow, e.network, e.msg[3]) or e.window window.write( "%sTopic on %s is: %s" % (prefix(e), e.msg[3], e.text) ) elif e.msg[1] == '333': window = windows.get(windows.ChannelWindow, e.network, e.msg[3]) or e.window window.write( "%sTopic on %s set by %s at time %s" % (prefix(e), e.msg[3], e.msg[4], time.ctime(int(e.msg[5]))) ) elif e.msg[1] == '329': #RPL_CREATIONTIME pass elif e.msg[1] == '311': #RPL_WHOISUSER e.window.write("* %s is %s@%s * %s" % (e.msg[3], e.msg[4], e.msg[5], e.msg[7])) elif e.msg[1] == '312': #RPL_WHOISSERVER e.window.write("* %s on %s (%s)" % (e.msg[3], e.msg[4], e.msg[5])) elif e.msg[1] == '317': #RPL_WHOISIDLE e.window.write("* %s has been idle for %s" % (e.msg[3], pretty_time(int(e.msg[4])))) if e.msg[5].isdigit(): e.window.write("* %s signed on %s" % (e.msg[3], time.ctime(int(e.msg[5])))) elif e.msg[1] == '319': #RPL_WHOISCHANNELS e.window.write("* %s on channels: %s" % (e.msg[3], e.msg[4])) elif e.msg[1] == '330': #RPL_WHOISACCOUNT #this appears to conflict with another raw, so if there's anything weird about it, # we fall back on the default if len(e.msg) == 6 and not e.msg[4].isdigit() and not e.msg[5].isdigit(): e.window.write("* %s %s %s" % (e.msg[3], e.msg[5], e.msg[4])) else: e.window.write("* %s" % ' '.join(e.msg[3:])) else: e.window.write("* %s" % ' '.join(e.msg[3:])) elif e.msg[1] == 'ERROR': e.window.write("Error: %s" % e.text)
def nicklist_del(network, channel, nick): window = windows.get(windows.ChannelWindow, network, channel.name, core) #window = core.window if window: try: window.nicklist.remove(nick) except ValueError: pass
def onQuit(e): to_write = "%s%s leaves%s" % (prefix(e), format_info_source(e), text(e)) for channame in chaninfo.channels(e.network): if chaninfo.ison(e.network, channame, e.source): window = windows.get(windows.ChannelWindow, e.network, channame) if window: window.write(to_write)
def setupJoin(e): if e.source == e.network.me: window = windows.new(windows.ChannelWindow, e.network, e.target, core) if e.requested: window.activate() e.window = windows.get(windows.ChannelWindow, e.network, e.target, core) or e.window
def onQuit(e): to_write = "%s%s leaves%s" % (prefix(e), format_info_source(e), text(e)) for channame in chaninfo.channels(e.network): if chaninfo.ison(e.network, channame, e.source): window = windows.get(windows.ChannelWindow, e.network, channame, core) if window: window.write(to_write)
def nicklist_add(network, channel, nick): window = windows.get(windows.ChannelWindow, network, channel.name, core) #window = core.window if window: window.nicklist.append( nick, escape( prefix( network, channel.name, nick)), sortkey( network, channel.name, nick))
def onQuit(e): to_write = "%s quit (%s)" % (e.source, e.text) for channame in chaninfo.channels(e.network): if chaninfo.ison(e.network, channame, e.source): window = windows.get(windows.ChannelWindow, e.network, channame) if window: f = log_file(e.network, window.id) f.write(to_write)
def setupJoin(e): if e.source == e.network.me: window = windows.new(windows.ChannelWindow, e.network, e.target, core) if e.requested: window.activate() e.window = windows.get( windows.ChannelWindow, e.network, e.target, core) or e.window
def onNotice(e): check_hilight(e,e.text) reps = { 'nick':e.source, 'text':e.text, 'timestamp':time.strftime(theme.get('TimeStamp',default.get('TimeStamp'))), 'pre':theme.get('Prefix',default.get('Prefix')) } if chaninfo.ischan(e.network,e.target): reps['chan'] = e.target reps['pnick'] = pnick(e.network,e.target,e.source) window = windows.get(windows.ChannelWindow, e.network, e.msg[3]) or e.window output('ChanNotice',e.hilight,window,reps,widgets.TEXT) else: output('Notice',e.hilight,e.window,reps,widgets.TEXT)
def setdownPart(e): if e.source == e.network.me: window = windows.get(windows.ChannelWindow, e.network, e.target) if window: cwindows = list(windows.get_with( network=window.network, wclass=windows.ChannelWindow )) if len(cwindows) == 1 and not list(windows.get_with(network=window.network, wclass=windows.StatusWindow)): window.mutate(windows.StatusWindow, e.network, 'status') if e.requested: window.activate() elif e.requested: window.close()
def onNick(e): color = getsourcecolor(e) if e.source == e.network.me: to_write = "%s%sYou are now known as %s" % (prefix(e), color, e.target) else: to_write = "%s%s%s is now known as %s" % (prefix(e), color, e.source, e.target) if e.source == e.network.me: for window in windows.get_with(network=e.network): window.write(to_write) else: for channame in chaninfo.channels(e.network): if chaninfo.ison(e.network,channame,e.source): window = windows.get(windows.ChannelWindow, e.network, channame) if window: window.write(to_write)
def setdownPart(e): if e.source == e.network.me: window = windows.get(windows.ChannelWindow, e.network, e.target, core) if window: cwindows = list( windows.get_with(network=window.network, wclass=windows.ChannelWindow)) if len(cwindows) == 1 and not list( windows.get_with(network=window.network, wclass=windows.StatusWindow)): window.mutate(windows.StatusWindow, e.network, 'status') if e.requested: window.activate() elif e.requested: window.close()
def onNick(e): if e.source == e.network.me: to_write = 'You are now known as %s' % e.target for window in windows.get_with(network=e.network): f = log_file(e.network, window.id) f.write(to_write) else: to_write = '%s is now known as %s' % (e.source, e.target) for channame in chaninfo.channels(e.network): if chaninfo.ison(e.network,channame,e.source): window = windows.get(windows.ChannelWindow, e.network, channame) if window: f = log_file(e.network, window.id) f.write(to_write)
def onNick(e): color = getsourcecolor(e) if e.source == e.network.me: to_write = "%s%sYou are now known as %s" % (prefix(e), color, e.target) else: to_write = "%s%s%s is now known as %s" % (prefix(e), color, e.source, e.target) if e.source == e.network.me: for window in windows.get_with(core.manager, network=e.network): window.write(to_write) else: for channame in chaninfo.channels(e.network): if chaninfo.ison(e.network, channame, e.source): window = windows.get(windows.ChannelWindow, e.network, channame) if window: window.write(to_write)
def onClick(e): set_target(e) if is_nick(e): events.run('query %s' % e._target, e.window, e.window.network) # url of the form http://xxx.xxx or www.xxx.xxx elif is_url(e): if e._target.startswith('www'): e._target = 'http://%s' % e._target ui.open_file(e._target) # click on a #channel elif is_chan(e): if not chaninfo.ischan(e.window.network, e._target): e.window.network.join(e._target) window = windows.get(windows.ChannelWindow, e.window.network, e._target) if window: window.activate()
def onClick(e): set_target(e) if is_nick(e): core.events.run('query %s' % e._target, e.window, e.window.network) # url of the form http://xxx.xxx or www.xxx.xxx elif is_url(e): if e._target.startswith('www'): e._target = 'http://%s' % e._target ui.open_file(e._target) # click on a #channel elif is_chan(e): if not chaninfo.ischan(e.window.network, e._target): e.window.network.join(e._target) window = windows.get(windows.ChannelWindow, e.window.network, e._target) if window: window.activate()
def setupJoin(e): print e if e.source == e.network.me: e.network.channels[e.network.norm_case(e.target)] = Channel(e.target) e.network.raw('MODE ' + e.target) # if we wanted to be paranoid, we'd account for not being on the channel channel = getchan(e.network, e.target) channel.nicks[e.source] = '' channel.normal_nicks[e.network.norm_case(e.source)] = e.source if e.source == e.network.me: # If the channel window already existed, and we're joining, then we # didn't clear out the nicklist when we left. That means we have to clear # it out now. window = windows.get(windows.ChannelWindow, e.network, e.target, core) #window = core.window # print core if window: window.nicklist.clear() nicklist_add(e.network, channel, e.source)
def setupJoin(e): print e if e.source == e.network.me: e.network.channels[e.network.norm_case(e.target)] = Channel(e.target) e.network.raw('MODE ' + e.target) # if we wanted to be paranoid, we'd account for not being on the channel channel = getchan(e.network, e.target) channel.nicks[e.source] = '' channel.normal_nicks[e.network.norm_case(e.source)] = e.source if e.source == e.network.me: # If the channel window already existed, and we're joining, then we # didn't clear out the nicklist when we left. That means we have to clear # it out now. window = windows.get(windows.ChannelWindow, e.network, e.target, core) #window = core.window # print core if window: window.nicklist.clear() nicklist_add(e.network, channel, e.source)
def setupPart(e): e.window = windows.get(windows.ChannelWindow, e.network, e.target) or e.window
def setdownNick(e): if e.source != e.network.me: window = windows.get(windows.QueryWindow, e.network, e.source) if window: window.id = e.target
def onRaw(e): if not e.quiet: if e.msg[1].isdigit(): if e.msg[1] == '311': reps = { 'nick':e.msg[3], 'timestamp':time.strftime(theme.get('TimeStamp',default.get('TimeStamp'))), 'pre':theme.get('Prefix',default.get('Prefix')) } output('WhoisStart',None,e.window,reps,widgets.EVENT) reps = { 'nick':e.msg[3], 'address':e.msg[4]+'@'+e.msg[5], 'text':e.msg[7], 'timestamp':time.strftime(theme.get('TimeStamp',default.get('TimeStamp'))), 'pre':theme.get('Prefix',default.get('Prefix')) } output('WhoisUser',None,e.window,reps,widgets.EVENT) elif e.msg[1] == '312': reps = { 'nick':e.msg[3], 'network':e.msg[4], 'text':e.msg[5], 'timestamp':time.strftime(theme.get('TimeStamp',default.get('TimeStamp'))), 'pre':theme.get('Prefix',default.get('Prefix')) } output('WhoisServer',None,e.window,reps,widgets.EVENT) elif e.msg[1] == '313': reps = { 'nick':e.msg[3], 'timestamp':time.strftime(theme.get('TimeStamp',default.get('TimeStamp'))), 'pre':theme.get('Prefix',default.get('Prefix')) } output('WhoisIrcop',None,e.window,reps,widgets.EVENT) elif e.msg[1] == '317': reps = { 'nick':e.msg[3], 'text':duration(int(e.msg[4])), 'timestamp':time.strftime(theme.get('TimeStamp',default.get('TimeStamp'))), 'pre':theme.get('Prefix',default.get('Prefix')) } output('WhoisIdle',None,e.window,reps,widgets.EVENT) if e.msg[5].isdigit(): reps['text'] = duration(int(e.msg[5])) output('WhoisSignon',None,e.window,reps) elif e.msg[1] == '318': reps = { 'nick':e.msg[3], 'timestamp':time.strftime(theme.get('TimeStamp',default.get('TimeStamp'))), 'pre':theme.get('Prefix',default.get('Prefix')) } output('WhoisEnd',None,e.window,reps,widgets.EVENT) elif e.msg[1] == '319': reps = { 'nick':e.msg[3], 'text':e.msg[4], 'timestamp':time.strftime(theme.get('TimeStamp',default.get('TimeStamp'))), 'pre':theme.get('Prefix',default.get('Prefix')) } output('WhoisChannels',None,e.window,reps,widgets.EVENT) elif e.msg[1] == '329': reps = { 'chan':e.msg[3], 'text':time.ctime(int(e.msg[4])), 'timestamp':time.strftime(theme.get('TimeStamp',default.get('TimeStamp'))), 'pre':theme.get('Prefix',default.get('Prefix')) } window = windows.get(windows.ChannelWindow, e.network, e.msg[3]) or e.window output('CreationTime',None,window,reps,widgets.EVENT) elif e.msg[1] == '330': if len(e.msg) == 6 and not e.msg[4].isdigit() and not e.msg[5].isdigit(): reps = { 'nick':e.msg[3], 'text':e.msg[4], 'timestamp':time.strftime(theme.get('TimeStamp',default.get('TimeStamp'))), 'pre':theme.get('Prefix',default.get('Prefix')) } output('WhoisAccount',None,e.window,reps,widgets.EVENT) else: e.window.write(theme.get('Prefix',default.get('Prefix'))+" %s" % ' '.join(e.msg[3:])) elif e.msg[1] == '332': reps = { 'chan':e.msg[3], 'text':e.text, 'timestamp':time.strftime(theme.get('TimeStamp',default.get('TimeStamp'))), 'pre':theme.get('Prefix',default.get('Prefix')) } window = windows.get(windows.ChannelWindow, e.network, e.msg[3]) or e.window output('Topic',None,e.window,reps,widgets.EVENT) elif e.msg[1] == '333': reps = { 'nick':e.msg[4], 'chan':e.msg[3], 'text':time.ctime(int(e.msg[5])), 'timestamp':time.strftime(theme.get('TimeStamp',default.get('TimeStamp'))), 'pre':theme.get('Prefix',default.get('Prefix')) } window = windows.get(windows.ChannelWindow, e.network, e.msg[3]) or e.window output('TopicSetBy',None,e.window,reps,widgets.EVENT) elif e.msg[1] == '338': reps = { 'nick':e.msg[3], 'address':e.msg[4], 'timestamp':time.strftime(theme.get('TimeStamp',default.get('TimeStamp'))), 'pre':theme.get('Prefix',default.get('Prefix')) } output('WhoisActually',None,e.window,reps,widgets.EVENT) else: e.window.write(theme.get('Prefix',default.get('Prefix'))+" %s" % ' '.join(e.msg[3:])) elif e.msg[1] == '366': color_nicklist(e.network,e.window) elif e.msg[1] == 'ERROR': reps = { 'text':e.msg[4], 'timestamp':time.strftime(theme.get('TimeStamp',default.get('TimeStamp'))), 'pre':theme.get('Prefix',default.get('Prefix')) } output('Error',None,e.window,reps,widgets.EVENT)
def setupOwnText(e): e.window = \ windows.get(windows.ChannelWindow, e.network, e.target, core) or \ windows.get(windows.QueryWindow, e.network, e.target, core) or \ e.window
def setupNotice(e): if e.target != e.network.me: e.window = \ windows.get(windows.ChannelWindow, e.network, e.target, core) or e.window
def setupRaw(e): if e.msg[1] == '353': # names reply channel = getchan(e.network, e.msg[4]) if channel: if not channel.getting_names: channel.nicks.clear() channel.normal_nicks.clear() channel.getting_names = True if not channel.got_names: e.quiet = True for nickname in e.msg[5].split(' '): if nickname: if not nickname[ 0].isalpha() and nickname[0] in e.network.prefixes: n = nickname[1:] channel.nicks[n] = e.network.prefixes[nickname[0]] channel.normal_nicks[e.network.norm_case(n)] = n else: channel.nicks[nickname] = '' channel.normal_nicks[ e.network.norm_case(nickname)] = nickname elif e.msg[1] == '366': # end of names reply channel = getchan(e.network, e.msg[3]) if channel: if not channel.got_names: e.quiet = True channel.got_names = True channel.getting_names = False window = windows.get( windows.ChannelWindow, e.network, e.msg[3], core) if window: window.nicklist.replace( (nick, escape( prefix( e.network, channel.name, nick)), sortkey( e.network, channel.name, nick)) for nick in channel.nicks) elif e.msg[1] == '324': # channel mode is channel = getchan(e.network, e.msg[3]) if channel: if not channel.got_mode: e.quiet = True channel.got_mode = True mode = e.msg[4] params = e.msg[:4:-1] list_modes, always_parm_modes, set_parm_modes, normal_modes = \ e.network.isupport['CHANMODES'].split(',') parm_modes = always_parm_modes + set_parm_modes channel.mode = e.msg[4] channel.special_mode.clear() for char in channel.mode: if char in parm_modes: channel.special_mode[char] = params.pop() elif e.msg[1] == '331': # no topic channel = getchan(e.network, e.msg[3]) if channel: channel.topic = '' elif e.msg[1] == '332': # channel topic is channel = getchan(e.network, e.msg[3]) if channel: channel.topic = e.text
def setupKick(e): e.window = windows.get(windows.ChannelWindow, e.network, e.channel, core) or e.window
def setupPart(e): e.window = windows.get(windows.ChannelWindow, e.network, e.target, core) or e.window
def setupKick(e): e.window = windows.get(windows.ChannelWindow, e.network, e.channel) or e.window
def setupMode(e): if e.target != e.network.me: e.window = windows.get(windows.ChannelWindow, e.network, e.target) or e.window
def setupOwnText(e): e.window = \ windows.get(windows.ChannelWindow, e.network, e.target) or \ windows.get(windows.QueryWindow, e.network, e.target) or \ e.window