Skip to content

Instantly share code, notes, and snippets.

@faried
Last active June 30, 2016 21:27
Show Gist options
  • Save faried/d669930f3adb92905435a10a27cab8af to your computer and use it in GitHub Desktop.
Save faried/d669930f3adb92905435a10a27cab8af to your computer and use it in GitHub Desktop.
python-rtmbot/plugins/figlet/figlet.py
from __future__ import unicode_literals
from json import loads
from optparse import OptionParser
from shlex import split
from pyfiglet import Figlet
crontable = []
outputs = []
def parse(lineparts):
parser = OptionParser()
parser.add_option("-f", dest="font", default="standard")
parser.add_option("-r", dest="reverse", default=False, action="store_true")
parser.add_option("-F", dest="flip", default=False, action="store_true")
return parser.parse_args(lineparts)
def process_message(data):
if data.get("user", "") == "U1MRZ396F":
return
try:
ls = split(data["text"])
except ValueError as exc:
print("failed to handle %s, ignoring" % data["text"])
# outputs.append([data["channel"], "what?"])
return
# can this happen?
if not ls:
return
maybename = ls.pop(0)
maybename = maybename.replace("@", "").replace(":", "")
if maybename.lower() != "figlet" and maybename != "<U1MRZ396F>":
return
opts, args = parse(ls)
msg = " ".join(args)
if not msg:
outputs.append([data["channel"], "what?"])
return
figlet = Figlet()
if opts.font not in figlet.getFonts():
outputs.append([data["channel"], "i don't know that font"])
return
figlet.setFont(font=opts.font)
r = figlet.renderText(msg)
if opts.reverse:
r = r.reverse()
if opts.flip:
r = r.flip()
outputs.append([data["channel"], "```%s```\n" % r])
# eof
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment