Example #1
0
    def handle(self, *args, **options):
        self.session_key = options['session_key'][0]

        # get django session using session_key from commandline
        try:
            session = Session.objects.get(session_key=self.session_key)
        except Session.DoesNotExist:
            print("Session with session_key %s not found" % self.session_key)
            sys.exit(1)

        # connect to IRC
        config = {
            'nick': session.get_decoded()['nickname'],
            'autojoins': ['#alveos'],
            'host': 'ircd.tyknet.dk',
            'port': 6697,
            'ssl': True,
            'timeout': 30,
            'includes': [
                'irc3.plugins.core',
                'irc3.plugins.human',
                'alveos.irc',
            ],
            'django_session_key': self.session_key,
            'reply_channel': session.get_decoded()['reply_channel'],
        }
        irc3.IrcBot(**config).run(forever=True)
Example #2
0
def do_work():
    """
    Run irc3 module code, wait for events on IRC and wait for messages in OutgoingIrcMessage
    """
    if hasattr(settings, "IRCBOT_CHANNELS"):
        logger.error(
            "settings.IRCBOT_CHANNELS is deprecated. Please define settings.IRCBOT_PUBLIC_CHANNEL and use team channels for the rest.",
        )
        return False

    config = {
        "nick": settings.IRCBOT_NICK,
        "autojoins": [],
        "host": settings.IRCBOT_SERVER_HOSTNAME,
        "port": settings.IRCBOT_SERVER_PORT,
        "ssl": settings.IRCBOT_SERVER_USETLS,
        "timeout": 30,
        "flood_burst": 2,
        "flood_rate": 1,
        "flood_rate_delay": 2,
        "includes": ["ircbot.irc3module"],
    }
    logger.debug("Connecting to IRC with the following config: %s" % config)
    try:
        irc3.IrcBot(**config).run(forever=True)
    except Exception as E:
        logger.exception("Got exception inside irc3.IrcBot.run()")
        raise E
def do_work():
    """
        Run irc3 module code, wait for events on IRC and wait for messages in OutgoingIrcMessage
    """
    if hasattr(settings, 'IRCBOT_CHANNELS'):
        logger.error(
            "settings.IRCBOT_CHANNELS is deprecated. Please define settings.IRCBOT_PUBLIC_CHANNEL and use team channels for the rest."
        )
        return False

    config = {
        'nick': settings.IRCBOT_NICK,
        'autojoins': [],
        'host': settings.IRCBOT_SERVER_HOSTNAME,
        'port': settings.IRCBOT_SERVER_PORT,
        'ssl': settings.IRCBOT_SERVER_USETLS,
        'timeout': 30,
        'flood_burst': 2,
        'flood_rate': 1,
        'flood_rate_delay': 2,
        'includes': [
            'ircbot.irc3module',
        ],
    }
    logger.debug("Connecting to IRC with the following config: %s" % config)
    try:
        irc3.IrcBot(**config).run(forever=True)
    except Exception as E:
        logger.exception("Got exception inside do_work for %s" %
                         self.workermodule)
        raise E
Example #4
0
    def activate(self):
        super().activate()
        self.connection = MockConnection(self)
        self.dispatcher = self.plugins.command_dispatcher
        self.prefix = self.config.get_plugin_config(
            "command_dispatcher")["command_prefix"]
        self.server = self.config.get_plugin_config(self.name)["server"]
        self.channel = self.config.get_plugin_config(self.name)["channel"]
        self.username = self.config.get_plugin_config(self.name)["username"]
        self.sc = self.config.get_plugin_config(self.name)["strip_colors"]

        self.bot = irc3.IrcBot(nick=self.username,
                               autojoins=[self.channel],
                               host=self.server)
        self.bot.log = self.logger

        self.bot.include("irc3.plugins.core")
        self.bot.include("irc3.plugins.userlist")

        x = irc3.event(irc3.rfc.PRIVMSG, self.forward)
        x.compile(None)
        y = irc3.event(r"^:\S+ 353 [^&#]+(?P<channel>\S+) :(?P<nicknames>.*)",
                       self.name_check)
        y.compile(None)
        self.bot.attach_events(x)
        self.bot.attach_events(y)
        self.bot.create_connection()

        self.ops = set()
        asyncio.ensure_future(self.update_ops())
        def __init__(self, irc_server):
            self.irc_server = irc_server
            self.irc_server.irc_connection_thread = self
            threading.Thread.__init__(self)

            self._bot = None

            config = dict(
                nick=vectron_config.irc_bot_nickname,
                host=irc_server.host,
                port=irc_server.port,
                ssl=irc_server.ssl,
                async=False,
                ssl_verify='CERT_NONE',
                includes=[
                    'irc3.plugins.core',
                    'irc3.plugins.command',
                    'irc3.plugins.userlist',
                    'vectronbot_irc_plugin',
                ],
                username=
                ('Telegram IRC bridge based on irc3 http://irc3.readthedocs.io '
                 'and https://github.com/python-telegram-bot/python-telegram-bot'
                 ),
                url='https://localhost/',
                ctcp=dict(
                    version='TGIRC 0.1',
                    userinfo='{realname}',
                    time='{now:%c}',
                ))

            self._bot = irc3.IrcBot(**config)
            self._bot.set_t_callback(self.t_callback)
            self._bot.set_token_callback(self.token_callback)
            self._bot.irc_connection = self
Example #6
0
def main():
    loop = asyncio.get_event_loop()

    config = dict(
        autojoins=['#irc3'],
        host='irc.freenode.net', port=7000, ssl=True,
        timeout=30,
        includes=[
            'irc3.plugins.core',
            'irc3.plugins.human',
            __name__,  # this register this module
        ],
        loop=loop)

    # instanciate two bot
    irc3.IrcBot(nick='bobirc', **config).run(forever=False)
    irc3.IrcBot(nick='jackyrc', **config).run(forever=False)

    loop.run_forever()
Example #7
0
File: mybot.py Project: jpcw/irc3
def main():
    # logging configuration
    logging.config.dictConfig(irc3.config.LOGGING)

    # instanciate a bot
    irc3.IrcBot(
        nick='irc3', autojoins=['#irc3'],
        host='irc.undernet.org', port=6667, ssl=False,
        includes=[
            'irc3.plugins.core',
            'irc3.plugins.command',
            'irc3.plugins.human',
            __name__,  # this register MyPlugin
        ]).run()
Example #8
0
 def handle(self, *args, **options):
     self.output('IRC bot worker running...')
     # connect to IRC
     config = {
         'nick': settings.IRCBOT_NICK,
         'autojoins': [settings.IRCBOT_SCHEDULE_ANNOUNCE_CHANNEL],
         'host': settings.IRCBOT_SERVER_HOSTNAME,
         'port': settings.IRCBOT_SERVER_PORT,
         'ssl': settings.IRCBOT_SERVER_USETLS,
         'timeout': 30,
         'includes': [
             'ircbot.irc3module',
         ],
     }
     irc3.IrcBot(**config).run(forever=True)
Example #9
0
 def run(self):
     self.loop = asyncio.new_event_loop()
     self.setup = dict(autojoins=[],
                       host='irc.twitch.tv',
                       port=6667,
                       username=cfg["Username"],
                       password=cfg["OauthPass"],
                       nick=cfg["Username"],
                       ssl=False,
                       includes=[__name__, 'irc3.plugins.userlist'],
                       loop=self.loop)
     self.bot = irc3.IrcBot(**self.setup)
     rec = {"BOT": self.bot, "LOOP": self.loop, "CLI-ID": cfg["Client-ID"]}
     pluginmanager.addresource("TWITCH", rec)
     self.initlock.release()
     self.bot.run(forever=True)
Example #10
0
    def activate(self):
        self.enabled = self.config.get_plugin_config(self.name)["enabled"]
        if not self.enabled:
            return
        super().activate()
        self.dispatcher = self.plugins.command_dispatcher
        self.prefix = self.config.get_plugin_config("command_dispatcher")[
            "command_prefix"]
        self.command_prefix = self.config.get_plugin_config(self.name)[
            "command_prefix"]
        self.server = self.config.get_plugin_config(self.name)["server"]
        self.channel = self.config.get_plugin_config(self.name)["channel"]
        self.username = self.config.get_plugin_config(self.name)["username"]
        self.sc = self.config.get_plugin_config(self.name)["strip_colors"]

        self.bot = irc3.IrcBot(nick=self.username,
                               autojoins=[self.channel],
                               host=self.server)
        self.bot.log = self.logger

        self.bot.include("irc3.plugins.core")
        self.bot.include("irc3.plugins.userlist")

        x = irc3.event(irc3.rfc.PRIVMSG, self.forward)
        x.compile(None)
        y = irc3.event(r"^:\S+ 353 [^&#]+(?P<channel>\S+) :(?P<nicknames>.*)",
                       self.name_check)
        y.compile(None)
        z = irc3.event(irc3.rfc.JOIN_PART_QUIT, self.announce_irc_join)
        z.compile(None)
        self.bot.attach_events(x)
        self.bot.attach_events(y)
        self.bot.attach_events(z)
        self.bot.create_connection()

        self.discord_active = link_plugin_if_available(self, 'discord_bot')
        if self.discord_active:
            self.discord = self.plugins['discord_bot']
        if link_plugin_if_available(self, "chat_manager"):
            self.chat_manager = self.plugins['chat_manager']

        self.ops = set()
        self.connection = MockConnection(self)
        asyncio.ensure_future(self.update_ops())
Example #11
0
 def activate(self):
     super().activate()
     self.protocol = MockProtocol(self)
     self.bot = irc3.IrcBot(nick=temp_username,
                            autojoins=[temp_channel],
                            host=temp_server)
     self.bot.log = self.logger
     self.bot.include('irc3.plugins.core')
     self.bot.include('irc3.plugins.userlist')
     x = irc3.event(irc3.rfc.PRIVMSG, self.forward)
     x.compile(None)
     y = irc3.event(r'^:\S+ 353 [^&#]+(?P<channel>\S+) :(?P<nicknames>.*)',
                    self.name_check)
     y.compile(None)
     self.bot.add_event(x)
     self.bot.add_event(y)
     self.bot.create_connection()
     self.ops = set()
     asyncio.Task(self.update_ops())
Example #12
0
    def on_load(self):
        config = self.server.config
        self.config = irc = config.irc

        self.command_modes = unpack_modes(irc.command_modes)
        self.chat_modes = unpack_modes(irc.chat_modes)

        self.channel = irc.channel.lower()
        if not self.channel.startswith('#'):
            self.channel = '#' + self.channel

        plugins = ['irc3.plugins.core', 'irc3.plugins.autojoins', __name__]

        bot = irc3.IrcBot(nick=irc.nickname,
                          autojoins=[self.channel],
                          host=irc.server,
                          port=irc.port,
                          ssl=irc.ssl,
                          ssl_verify=irc.ssl_verify,
                          includes=plugins,
                          script=self)
        bot.create_connection()
Example #13
0
def do_work():
    """
        Run irc3 module code, wait for events on IRC and wait for messages in OutgoingIrcMessage
    """
    config = {
        'nick': settings.IRCBOT_NICK,
        'autojoins': list(set(settings.IRCBOT_CHANNELS.values())),
        'host': settings.IRCBOT_SERVER_HOSTNAME,
        'port': settings.IRCBOT_SERVER_PORT,
        'ssl': settings.IRCBOT_SERVER_USETLS,
        'timeout': 30,
        'includes': [
            'ircbot.irc3module',
        ],
    }
    logger.debug("Connecting to IRC with the following config: %s" % config)
    try:
        irc3.IrcBot(**config).run(forever=True)
    except Exception as E:
        logger.exception("Got exception inside do_work for %s" %
                         self.workermodule)
        raise
Example #14
0
        def __init__(self, irc_server, vectronconfig):
            self._vectronconfig = vectronconfig
            self.irc_server = irc_server
            self.irc_server.irc_connection_thread = self
            threading.Thread.__init__(self)

            self._bot = None
            self.irc_bot_nickname = vectronconfig['irc_bot_nickname']

            config = dict(
                nick=self.irc_bot_nickname,
                host=irc_server.host,
                port=irc_server.port,
                ssl=irc_server.ssl,
                conf_async=False,
                ssl_verify='CERT_NONE',
                includes=['irc3.plugins.core', 'irc3.plugins.command', 'irc3.plugins.userlist', 'vectronbot_irc_plugin']
            )

            self._bot = irc3.IrcBot(**config)
            self._bot.set_t_callback(self.t_callback)
            self._bot.set_token_callback(self.token_callback)
            self._bot.irc_connection = self
Example #15
0
def run(config_file='config.ini', debug=False):
    config = configparser.ConfigParser()
    config.read(config_file)
    if 'gumiya' not in config:
        sys.exit('Error: Invalid config, missing [gumiya] section')
    gumiya_config = config['gumiya']

    loop = asyncio.get_event_loop()
    bancho_queue = asyncio.Queue(loop=loop)

    config_common = {
        'irc3.plugins.command': {
            'hash': '#',
            'cmd': '!',
            'guard': 'irc3.plugins.command.mask_based_policy',
        },
        'irc3.plugins.command.masks': {
            'hash': '#',
            '*': 'view',
        },
    }
    if debug:
        config_common['debug'] = True

    twitch_config = dict(
        host='irc.chat.twitch.tv',
        port=6667,
        includes=[
            'irc3.plugins.core',
            'irc3.plugins.autocommand',
            'irc3.plugins.command',
            'irc3.plugins.log',
            'gumiyabot.twitch',
        ],
        autocommands=[
            'CAP REQ :twitch.tv/membership',
            'CAP REQ :twitch.tv/commands',
            'CAP REQ :twitch.tv/tags',
        ],
        nick=gumiya_config['twitch_username'],
        password=gumiya_config['twitch_password'],
        osu_api_key=gumiya_config['osu_api_key'],
        tillerino_api_key=gumiya_config.get('tillerino_api_key', fallback=''),
        bancho_nick=gumiya_config['bancho_username'],
        twitch_channel=gumiya_config['twitch_channel'],
    )
    twitch_config.update(config_common)

    bancho_config = dict(
        host='irc.ppy.sh',
        port=6667,
        includes=[
            'irc3.plugins.core',
            'irc3.plugins.command',
            'irc3.plugins.log',
            'gumiyabot.bancho',
        ],
        nick=gumiya_config['bancho_username'],
        password=gumiya_config['bancho_password'],
    )
    bancho_config.update(config_common)
    twitch_bot = irc3.IrcBot(loop=loop,
                             bancho_queue=bancho_queue,
                             **twitch_config)
    twitch_bot.run(forever=False)

    bancho_bot = irc3.IrcBot(loop=loop,
                             bancho_queue=bancho_queue,
                             connection=BanchoConnection,
                             **bancho_config)
    bancho_bot.run(forever=False)

    loop.run_forever()
Example #16
0
if __name__ == '__main__':
    # logging configuration
    logdict = irc3.config.LOGGING.copy()
    for k,v in logdict['formatters'].items():
        v['format'] = '%(asctime)s ' + v['format']
    logging.config.dictConfig(logdict)

    # instanciate a bot
    bot = irc3.IrcBot(
        nick='wikibugs', autojoins=list(channels.keys()),
        host='irc.freenode.net', port=7000, ssl=True,
        password=irc_password,
        realname="pywikibugs2",
        userinfo="Wikibugs v2.0, https://tools.wmflabs.org/wikibugs/",
        url="https://tools.wmflabs.org/wikibugs/",
        includes=[
            'irc3.plugins.core',
            'irc3.plugins.ctcp',
            __name__,  # this register MyPlugin
        ],
        verbose=True,
        ctcp={'version': 'pywikibugs %s running on irc3 {version}. See {url} for more details.' % __version__,
              'userinfo': '{userinfo}',
              'ping': 'PONG'}
    )

    asyncio.Task(redisrunner(bot))
    bot.run()
    
Example #17
0
        except Exception as e:
            import traceback
            bot.log.critical(traceback.format_exc())
            yield from asyncio.sleep(1)
            

if __name__ == '__main__':
    # logging configuration
    logdict = irc3.config.LOGGING.copy()
    for k,v in logdict['formatters'].items():
        v['format'] = '%(asctime)s ' + v['format']
    logging.config.dictConfig(logdict)

    # instanciate a bot
    bot = irc3.IrcBot(
        nick='wikibugs', autojoins=list(channels.keys()),
        host='irc.freenode.net', port=7000, ssl=True,
        password=irc_password,
        realname="pywikibugs2",
        userinfo="Wikibugs v2.0, https://tools.wmflabs.org/wikibugs/",
        url="https://tools.wmflabs.org/wikibugs/",
        includes=[
            'irc3.plugins.core',
            __name__,  # this register MyPlugin
        ],
        verbose=True)

    asyncio.Task(redisrunner(bot))
    bot.run()
    
Example #18
0
    args = parser.parse_args()

    config = irc3.utils.parse_config('bot', 'bot.ini')
    plugins = [
        'harvester.harvester',
        'irc3.plugins.logger',
    ]

    if args.debug:
        config['nick'] = "harvester_debug"
        config['autojoins'] = ['#brotherBot']
        config['harvested_channels'] = ['#brotherBot']
        plugins.pop()  # remove logging from debugging

    bot = irc3.IrcBot(**config)
    for p in plugins:
        bot.include(p)
    bot.run()

urls = [
    'https://bpaste.net/show/426fe62985e3',
    'https://bpaste.net/raw/426fe62985e3',
    'http://cubeupload.com/im/YhUxlj.jpg',
    'http://i.cubeupload.com/YhUxlj.jpg',
    'http://dpaste.com/2E0H71M',
    'http://dpaste.com/2E0H71M.txt',
    'https://github.com/iIIustrious/3301code/blob/master/xor.c',
    'https://github.com/iIIustrious/3301code/blob/master/xor.c',
    'https://github.com/iIIustrious/3301code',
    'https://gyazo.com/fc12a9bb2a4b92d1debef49b8279371f',