mirror of https://github.com/nealey/firebot
services and protocols commands in firebot
This commit is contained in:
parent
08802c0c55
commit
8e04909685
42
firebot.py
42
firebot.py
|
@ -212,6 +212,27 @@ class FireBot(infobot.InfoBot, procbot.ProcBot):
|
||||||
bindings.append((re.compile(r"^\008[:, ]+in (?P<delay>[0-9]+) ?(?P<unit>[a-z]*) say (?P<what>.*)"),
|
bindings.append((re.compile(r"^\008[:, ]+in (?P<delay>[0-9]+) ?(?P<unit>[a-z]*) say (?P<what>.*)"),
|
||||||
delayed_say))
|
delayed_say))
|
||||||
|
|
||||||
|
def _svc(self, forum, fd, what):
|
||||||
|
what = what.lower()
|
||||||
|
for line in fd:
|
||||||
|
for part in line.split():
|
||||||
|
subparts = part.split('/')
|
||||||
|
if what == subparts[0].lower():
|
||||||
|
forum.msg(line)
|
||||||
|
continue
|
||||||
|
|
||||||
|
def services(self, sender, forum, addl, match):
|
||||||
|
what = match.group('what')
|
||||||
|
self._svc(forum, file('/etc/services'), what)
|
||||||
|
bindings.append((re.compile(r"^services (?P<what>\w+)$"),
|
||||||
|
services))
|
||||||
|
|
||||||
|
def protocols(self, sender, forum, addl, match):
|
||||||
|
what = match.group('what')
|
||||||
|
self._svc(forum, file('/etc/protocols'), what)
|
||||||
|
bindings.append((re.compile(r"^protocols (?P<what>\w+)$"),
|
||||||
|
protocols))
|
||||||
|
|
||||||
msg_cat['nodict'] = ("Sorry, boss, dict returns no lines for %(jibberish)s",)
|
msg_cat['nodict'] = ("Sorry, boss, dict returns no lines for %(jibberish)s",)
|
||||||
def dict(self, sender, forum, addl, match):
|
def dict(self, sender, forum, addl, match):
|
||||||
jibberish = match.group('jibberish')
|
jibberish = match.group('jibberish')
|
||||||
|
@ -302,6 +323,25 @@ class FireBot(infobot.InfoBot, procbot.ProcBot):
|
||||||
bindings.append((re.compile('weather (?P<zip>[0-9]{5})'),
|
bindings.append((re.compile('weather (?P<zip>[0-9]{5})'),
|
||||||
weather))
|
weather))
|
||||||
|
|
||||||
|
def rollthebones(self, sender, forum, addl, match):
|
||||||
|
what = match.group(0)
|
||||||
|
howmany = int(match.group(1))
|
||||||
|
sides = int(match.group(2))
|
||||||
|
mult = int(match.group(4) or 1)
|
||||||
|
dice = []
|
||||||
|
acc = 0
|
||||||
|
for i in range(howmany):
|
||||||
|
j = random.randint(1, sides)
|
||||||
|
dice.append(j)
|
||||||
|
acc += j
|
||||||
|
acc *= mult
|
||||||
|
if howmany > 1:
|
||||||
|
forum.msg('%s: %d %r' % (what, acc, dice))
|
||||||
|
else:
|
||||||
|
forum.msg('%s: %d' % (what, acc))
|
||||||
|
bindings.append((re.compile(r'\b([1-9][0-9]*)d([1-9][0-9]*)(x([1-9][0-9]*))?\b'),
|
||||||
|
rollthebones))
|
||||||
|
|
||||||
def quote(self, sender, forum, addl, match):
|
def quote(self, sender, forum, addl, match):
|
||||||
def cb(lines):
|
def cb(lines):
|
||||||
if not lines:
|
if not lines:
|
||||||
|
@ -329,7 +369,7 @@ class FireBot(infobot.InfoBot, procbot.ProcBot):
|
||||||
symbol = match.group('symbol')
|
symbol = match.group('symbol')
|
||||||
WebRetriever('http://download.finance.yahoo.com/d/quotes.csv?s=%s&f=sl1d1t1c1ohgvj1pp2owern&e=.csv' % symbol,
|
WebRetriever('http://download.finance.yahoo.com/d/quotes.csv?s=%s&f=sl1d1t1c1ohgvj1pp2owern&e=.csv' % symbol,
|
||||||
cb)
|
cb)
|
||||||
bindings.append((re.compile(r"^quote +(?P<symbol>[-.a-zA-Z]+)$"),
|
bindings.append((re.compile(r"^quote +(?P<symbol>[-^.a-zA-Z]+)$"),
|
||||||
quote))
|
quote))
|
||||||
|
|
||||||
def currency(self, sender, forum, addl, match):
|
def currency(self, sender, forum, addl, match):
|
||||||
|
|
Loading…
Reference in New Issue