Example #1
0
class Campy(object):
    def __init__(self):
        self.client = Campfire(settings.CAMPFIRE_SUBDOMAIN,
                                settings.CAMPFIRE_API_KEY, ssl=True)

        self.rooms = []
        self.since_message_id = None

        self.plugins = []
        for plugin in settings.REGISTERED_PLUGINS:
            path = plugin.split('.')
            klass = path.pop()
            plugin_obj = getattr(__import__('.'.join(path), globals(), locals(), [klass], -1), klass)
            self.plugins.append(plugin_obj())

        for room in settings.CAMPFIRE_ROOMS:
            print "Joining %s" % room
            room = self.client.find_room_by_name(room)
            if room:
                self.rooms.append(room)
                room.join()


    def listen(self):
        def callback(message):
            for plugin in self.plugins:
                try:
                    speaker = self.client.user(message['user_id'])
                    if not message['body']:
                        return

                    if re.match('%s: help' % settings.CAMPFIRE_BOT_NAME, message['body']):
                        try:
                            plugin.send_help(self.client, self.client.room(message['room_id']),
                                        message, speaker)
                        except NotImplementedError:
                            pass
                    else:
                        plugin.handle_message(self.client, self.client.room(message['room_id']),
                                          message, speaker)
                except HTTPNotFoundException:
                    pass

        def errback(message):
            print message

        # Setup all rooms first
        for room in self.rooms:
            room.listen(callback, errback, False)

        # Then start listening to those rooms
        reactor.run()

    def die(self):
        for room in self.rooms:
            if settings.SAY_GOODBYE:
                room.speak("Goodbye!")
            if settings.LEAVE_ON_EXIT:
                room.leave()
Example #2
0
class Bot:
    def __init__(self):
        self.client = Campfire(settings.CAMPFIRE_SUBDOMAIN,
                               settings.CAMPFIRE_API_KEY,
                               ssl=True)
        self.rooms = []
        self.plugins = []
        for p in settings.INSTALLED_PLUGINS:
            klass = get_callable(p)
            if klass:
                print 'Loading plugin: %s' % klass
                self.plugins.append(klass())

    def join_rooms(self):
        self.rooms = []
        for r in settings.CAMPFIRE_ROOMS:
            print 'Joining room: %s' % r
            room = self.client.find_room_by_name(r)
            if room:
                self.rooms.append(room)
                room.join()

    def listen(self):
        def callback(message):
            room = self.client.room(message['room_id'])
            for p in self.plugins:
                if isinstance(p, ListenerPlugin):
                    p.recieve_message(self.client, room, message)

        def errback(message):
            print message

        for r in self.rooms:
            r.listen(callback, errback)

    def find_room_by_name(self, room_name):
        return self.client.find_room_by_name(room_name)
Example #3
0
class Bot:
    def __init__(self):
        self.client = Campfire(settings.CAMPFIRE_SUBDOMAIN,
                               settings.CAMPFIRE_API_KEY, ssl=True)
        self.rooms = []
        self.plugins = []
        for p in settings.INSTALLED_PLUGINS:
            klass = get_callable(p)
            if klass:
                print 'Loading plugin: %s' % klass
                self.plugins.append(klass())

    def join_rooms(self):
        self.rooms = []
        for r in settings.CAMPFIRE_ROOMS:
            print 'Joining room: %s' % r
            room = self.client.find_room_by_name(r)
            if room:
                self.rooms.append(room)
                room.join()

    def listen(self):
        def callback(message):
            room = self.client.room(message['room_id'])
            for p in self.plugins:
                if isinstance(p, ListenerPlugin):
                    p.recieve_message(self.client, room, message)

        def errback(message):
            print message

        for r in self.rooms:
            r.listen(callback, errback)

    def find_room_by_name(self, room_name):
        return self.client.find_room_by_name(room_name)
def notify_camp(todo):
    c = Campfire(subdomain,campfire_key)
    room = c.room(room_id)
    room.speak(todo)