#!/usr/bin/env python3 from __future__ import unicode_literals, with_statement VERSION=(0, 1, 0) from chat_iface import ChatInterface from irc_iface import IRCInterface try: from configparser import SafeConfigParser except ImportError: from ConfigParser import SafeConfigParser import logging import os import select import sys import time logger = logging.getLogger('rschat') logger.setLevel(logging.DEBUG) ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) formatter = logging.Formatter('<%(levelno)s>[%(asctime)s] %(name)s:%(funcName)s: %(message)s') ch.setFormatter(formatter) logger.addHandler(ch) logger.debug("Starting rschat version %d.%d.%d" % VERSION) try: xdg_config_home = os.environ['XDG_CONFIG_HOME'] except KeyError: xdg_config_home = os.path.expanduser('~/.config') try: xdg_config_dirs = os.environ['XDG_CONFIG_DIRS'].split(':') except KeyError: xdg_config_dirs = ['/etc/xdg'] cfg = SafeConfigParser({ 'server': 'chat.freenode.net', 'port': 6667, 'nick': 'RSWBot', 'channel': '#rswiki-cc', 'chat': 'clan', }) cfg.read([fldr + '/rschat.ini' for fldr in [xdg_config_home] + xdg_config_dirs + ['.']]) with IRCInterface(cfg.get('IRC', 'server'), cfg.get('IRC', 'port', raw=True), cfg.get('IRC', 'nick'), cfg.get('IRC', 'channel')) as irc, \ ChatInterface(cfg.get('Chat', 'Chat'), cfg.get('Chat', 'user'), cfg.get('Chat', 'pass')) as chat: logger.debug('Primary initialization complete, processing IRC input') irc.poll() # poll for new messages logger.info('Initialization seems complete, starting main loop') def poll(recv, send): msgs = recv.poll() if msgs: list(map(send.send, ['%s: %s' % msg for msg in msgs])) while True: time.sleep(0.1) # raw IRC commands if select.select([sys.stdin], [], [], 0)[0]: irc.send_raw(sys.stdin.readline()) poll(irc, chat) poll(chat, irc)