예제 #1
0
파일: main.py 프로젝트: fxcqz/gouda3
def main(*args, **kwargs):
    """
    quote stuff

    qsave [tag] quote   save quote
    qsave [tag] ^num    save quote chat backref
    qload [tag]         load random quote from tag
    qfind [pattern]     find a random quote based on a pattern
    """
    # since this module has special syntax we use a main func
    writer = kwargs.pop('writer')
    line = kwargs.pop('line')
    if line[0] == "qsave" and len(line) > 2:
        # saving a new quote
        tag = line[1]
        saved = False
        if line[2].startswith("^") and len(line[2]) > 1:
            last_id = Message.select().order_by(Message.id.desc()).get().id
            try:
                num = int(line[2][1:])
                if num >= 0:
                    try:
                        message = Message.select().where(Message.id==last_id-num).get()
                        Quote.create(tag=tag, user=message.name, message=message.message)
                        saved = True
                    except Message.DoesNotExist:
                        # just in case
                        pass
            except ValueError as e:
                # naughty user input
                print(e)
        else:
            message = ' '.join(line[2:])
            Quote.create(tag=tag, user=kwargs.pop('nick', '~'), message=message)
            saved = True
        if saved:
            writer("Saved your quote, pal")
    elif line[0] == "qload" and len(line) > 1:
        # retrieving a quote
        tag = line[1]
        try:
            quote = Quote.select().where(Quote.tag==tag).order_by(fn.Random()).get()
            writer('<%s> %s' % (quote.user, quote.message))
        except:
            # probably no quotes in this tag
            print("Could not load quote with tag %s" % tag)
    elif line[0] == "qfind" and len(line) > 1:
        # search records
        try:
            quote = Quote.select().where(Quote.message.contains(' '.join(line[1:]))).order_by(fn.Random()).get()
            writer('<%s> %s' % (quote.user, quote.message))
        except:
            # probably no quotes in this tag
            print("Could not find quote with pattern %s" % ' '.join(line[1:]))
    elif line[0] == "qtags":
        try:
            tags = Quote.select(Quote.tag).distinct()
            writer('Tags: %s.' % ', '.join(t.tag for t in tags))
        except:
            print("Cannot load tags")
예제 #2
0
파일: main.py 프로젝트: fxcqz/gouda3
def main(*args, **kwargs):
    """ mainly used for logging chat """
    writer = kwargs.pop('writer')
    if kwargs.pop('log', True):
        # log message
        Message.create(
            name=kwargs.pop('nick', '***'),
            message=' '.join(kwargs.pop('line', ['blank']))
        )
예제 #3
0
파일: main.py 프로젝트: fxcqz/gouda3
def log(*args, **kwargs):
    writer = kwargs.pop('writer')
    user = kwargs.pop('message', ['', 'log'])[1]
    if user == 'log':
        log = Message.select().order_by(fn.Random()).get()
        user = log.name
    else:
        log = Message.select().where(Message.name == user).order_by(fn.Random()).get()
        user = log.name
    writer("<%s> %s" % (user, log.message))
예제 #4
0
파일: main.py 프로젝트: fxcqz/gouda3
def latest(*args, **kwargs):
    """ most recent message from a user """
    writer = kwargs.pop('writer')
    message = kwargs.pop('message')
    if message[-1] == 'latest':
        return
    user = message[1]
    try:
        msg = Message.select().where(Message.name==user).order_by(Message.id.desc()).get()
        writer("<%s> %s" % (msg.name, msg.message))
    except:
        pass
예제 #5
0
파일: main.py 프로젝트: fxcqz/gouda3
def run_schema():
    Message.create_table(True)
예제 #6
0
파일: connection.py 프로젝트: fxcqz/gouda3
 def message(self, text):
     # include gouda messages in db
     Message.create(name=self.nick, message=text)
     self._write('PRIVMSG %s :%s' % (self.channel, text))