Пример #1
0
def handle(who, msg, where):
    res = re.match("^([0-9]+ |)(.*)$", msg)
    if not res:
        return
    num, term = res.groups()
    if num:
        num = int(num.strip())
    else:
        num = 1

    if num < 1:
        num = 1

    val = cache.get(term, None)
    if val is None:
        val = define(term)
        cache[term]=val


    n = len(val)
    num -= 1
    if num >= n:
        api.privmsg(where, "{} has {} definitions. [1-{}]".format(term, n,n))
        return

    definition = val[num]["text"]
    api.privmsg(where, "<{{C3}}Definition{{}} {{B}}{}{{}} (of {}) for {{B}}{}{{}}> {}".format(
        num + 1, n, term, definition))
Пример #2
0
def math(sender, message, target):
  if not message.startswith("%"):
    return
  equ = message[1:].replace(" ","")
  try:
    value = evaluate(equ)
    if value is not None:
        api.privmsg(target, "{GREEN}" + str(round(value,15)))
  except Exception as e:
    api.privmsg(target, str(e))
    raise
Пример #3
0
def search(who, what, where):
    reply_json = urllib.request.urlopen(_API_URL + urllib.parse.quote(what)).read()
    response = json.loads(reply_json.decode("utf-8"))
    data = response['responseData']
    if "results" not in data or len(data['results']) == 0:
        api.privmsg(where, "No results :(")
        return

    result = data['results'][0]
    reply = "<{C3}Google Search{}: {B}%s{} | {LINK}%s{} >" % (
            result['titleNoFormatting'],
            urllib.parse.unquote(result['url']))
    api.privmsg(where, reply)
Пример #4
0
def handle(who, msg, where):
  parts = re.split(url_re, msg, 1) # Only grab the first url. lame i know.
  if len(parts) == 1:
    return

  url = parts[1]

  short = ""
  if len(url) >= 20: # Long enough for a shorten
    short = shorten(url)
    short = "{{LINK}}{}{{}} | ".format(shorten(url))

  title = getTitle(url)

  out = "<{}{{blue}}Title{{}}: {{yellow}}{}{{}}>".format(short, title)
  api.privmsg(where, out)
Пример #5
0
def cron():
    threading.Timer(1, cron).start()
    now = datetime.datetime.now()
    if len(cache) == 0:
        return
    changed = False

    while len(cache) > 0:
        if now >= cache[0][0]:
            changed= True
            when, where, what = cache.pop(0)
            api.privmsg(where, what)
        else:
            break

    if changed:
        store["next"] = cache
def handle(who, msg, where):
  parts = re.split(url_re, msg)
  if len(parts) == 1:
    return

  shortened = False
  for i in range(1,len(parts), 2):
    url = parts[i]
    if len(url) < 20:
      continue
    parts[i] = "{{LINK}}{}{{}}".format(shorten(url))
    shortened = True

  if not shortened:
    return

  api.privmsg(where, "".join(parts))
Пример #7
0
def printDate(sender, args, replyTo):
  if '>' not in args:
    # print usage and leave.
    return api.privmsg(replyTo, "Bad usage")
  timeSpec, note = args.split(">",1)

  msg = "({}) {}: {}".format(
    datetime.datetime.now().strftime("%x %X"),
    sender,
    note)
  when = datetime.datetime(*parse(timeSpec)[0][:6])
  schedule(when, replyTo, msg)
Пример #8
0
def onTell(who, args, where):
    print("Tell:")
    print(store["blocked"])
    print(store["alarms"])
    if args == "off":
        blocked.add(who)
        store["blocked"] = blocked
        api.privmsg(who, "!tell's are disabled for you. Use '!tell on' to turn them back on")
        return

    if args == "on":
        blocked.remove(who)
        store["blocked"] = blocked
        api.privmsg(who, "!tell's are enabled for you. Use '!tell off' to turn them off")
        return

    nick, msg = args.split(" ", 1)
    when = datetime.datetime.now().strftime("%H:%M:%S %m/%d/%y")

    if nick in store["blocked"]:
        api.privmsg(who, "{} has {{RED}}disabled {{}}!tells please use memoserv or a PM instead".format(nick))
        return


    msg = when + " " + nick +": " + msg
    if nick not in messages:
      messages[nick] = []
    messages[nick].append(msg)
    store["alarms"] = messages
Пример #9
0
def onTell(who, args, where):
    if args == "off":
        blocked.add(who)
        store["blocked"] = blocked
        api.privmsg(who, offMessage)
        return

    if args == "on":
        blocked.remove(who)
        store["blocked"] = blocked
        api.privmsg(who, onMessage)
        return

    nick, msg = args.split(" ", 1)
    if nick in store["blocked"]:
        api.privmsg(who,
            disabledMessage.format(nick))
        return

    when = getTime()
    msg = when + " " + who +": " + msg
    if nick not in messages:
      messages[nick] = []
    messages[nick].append(msg)
    store["alarms"] = messages
Пример #10
0
def handle(who, msg, where):
  parts = re.split(url_re, msg, 1) # Only grab the first url. lame i know.
  if len(parts) == 1:
    return

  url = parts[1]

  short = ""
  if len(url) >= 20: # Long enough for a shorten
    short = shorten(url)
    short = shortFmt.format(shorten(url))

  title = getTitle(url)
  if title:
    title = titleFmt.format(title)

  if short or title:
    divider = ""
    if short and title:
      divider = delim
    out = outputFmt.format(short=short, delim=divider, title=title)
    api.privmsg(where, out)
Пример #11
0
def handle(who, msg, where):
    res = re.match("^([0-9]+ |)(.*)$", msg)
    if not res:
        return
    num, term = res.groups()
    if not term:
      return api.privmsg(where, usage)

    if num:
        num = int(num.strip())
    else:
        num = 1

    if num < 1:
        num = 1

    val = cache.get(term, None)
    if val is None:
        val = define(term)
        cache[term]=val

    n = len(val)
    if n == 0:
        api.privmsg(where, noDefinitions.format(term=term))
        return
    num -= 1
    if num >= n:
        api.privmsg(where, invalidArg.format(term = term, tot = n))
        return

    definition = val[num]["text"]
    api.privmsg(where, definitionFmt.format(
      num = num + 1,
      tot = n,
      term = term,
      definition = definition))
Пример #12
0
def heartify(src, msg, dst):
  if "<3" in msg:
    api.privmsg(dst, msg.replace("<3", u'{C5}♥{}'))
Пример #13
0
def say(where, what):
  api.privmsg(where, what)
Пример #14
0
def activity(who, what, where):
    if who in messages:
        for msg in messages[who]:
            api.privmsg(who, msg)
        del messages[who]
        store["alarms"] = messages
Пример #15
0
def onLine(sender, message, target):
  prevLine = lastLines.get(target, "")
  if prevLine == message:
    api.privmsg(target, message)
    message = ""
  lastLines[target] = message
Пример #16
0
def printDate(sender, args, replyTo):
  now = datetime.datetime.now()
  api.privmsg(replyTo, now.strftime("%H:%M:%S %A. %B(%m) %d %Y"))
Пример #17
0
def onLine(sender, message, target):
    if message == "\\o/":
        api.privmsg(target, "YAY")
        api.privmsg(target, "/ \\")
Пример #18
0
def printLoads(sender, args, chan):
  api.privmsg(chan, "I've been restarted %s times!" % loads)
Пример #19
0
def repeatLine(sender, msg, to):
  api.privmsg(to, msg)
Пример #20
0
def donateLine(sender, msg, to):
  api.privmsg(to, "[{C8}Bitcoin {C11}1DtTvCLiUMhs21QcETQzLyiqxoopUjqBSU{}][{C8}Wallet {C11}[email protected]{}][{C8}PayPal {C11}http://goo.gl/aSQWy0{}]")
Пример #21
0
def printLoads(sender, args, chan):
    api.privmsg(chan, "I've been restarted %s times!" % loads)
Пример #22
0
def heartify(src, msg, dst):
    if "<3" in msg:
        api.privmsg(dst, msg.replace("<3", u'{C5}♥{}'))
Пример #23
0
def handle(who, msg, where):
    parts = re.split(url_re, msg)
    for url in parts[1::2]:
        api.privmsg(where,
                "<{blue}Title{}: {yellow}" + getTitle(url) +"{} >")
Пример #24
0
def onName(sender, args, chan):
  api.privmsg(chan, str(getNames(chan)))
Пример #25
0
def doWeather(who, msg, where):
    res = getWeather(msg)

    api.privmsg(where, res)
Пример #26
0
def doWeather(who, msg, where):
    res = getWeather(msg)

    api.privmsg(where, res)
Пример #27
0
def onLine(sender, message, target):
  if message=="\\o/":
    api.privmsg(target, "YAY")
    api.privmsg(target, "/ \\")