def test_listen_base_filter(self): ''' Test the basic listening filter The ``listen`` filter should match exact strings by default. ''' self.bot.listen("test trigger")(self.trigger) base_message = {"type": "message"} with self.assertDoesNotTrigger(): self.bot.recv_event(merge(base_message, text="no trigger")) with self.assertTriggers(): self.bot.recv_event(merge(base_message, text="test trigger"))
def test_listen_channel(self): ''' Test the channel scoping on a listen filter The ``listen`` filter should not trigger listeners if the source channel is out of scope. ''' self.bot.listen("test", channel="#test")(self.trigger) base_message = {"type": "message", "text": "test"} with self.assertDoesNotTrigger(): self.bot.recv_event(merge(base_message, channel="bad")) with self.assertTriggers(): self.bot.recv_event(merge(base_message, channel="1234"))
def test_listen_regex(self): ''' Test the regex listening filter The ``listen`` filter can take complex regex strings and match against those. ''' self.bot.listen("<[int]:nums>", regex=True)(self.trigger) base_message = {"type": "message"} with self.assertDoesNotTrigger(): self.bot.recv_event(merge(base_message, text="asdf")) with self.assertTriggers(): self.bot.recv_event(merge(base_message, text="123 456")) self.assertEquals(self.triggered_values["nums"], [123, 456])
def setup(self, config=None): import os from lazbot.utils import merge from lazbot import logger if config: self.config = merge(self.config, **config) if not os.path.exists(self.config["dir"]): os.mkdir(self.config["dir"]) logger.info("Creating data directory: %s", self.config["dir"])
def setUp(self): TestBase.setUp(self) self.bot.login_data = merge(self.bot.login_data, users=TEST_USERS) self.ext = reload(ext)
from app import bot, config from lazbot import db from lazbot import utils from lazbot import logger from collections import Counter from lazbot.models import Message import parsedatetime from datetime import datetime, timedelta DT_FORMAT = "%Y-%m-%d %H:%M:%S" EMOJI = utils.merge({ "yes": "+1", "no": "-1", "neutral": "thumbsright" }, config.get("emoji", {})) polls = [] @bot.setup def load(): global polls polls = [Poll.from_json(json) for json in db.get("polls", [])] logger.info("Loaded %s polls", len(polls)) logger.info("Loaded %s active polls", len([True for p in polls if p.state != Poll.CLOSED])) @bot.teardown(priority=True) def save(): db["polls"] = [poll.__json__() for poll in polls