| Index: decisionbot.py |
| diff --git a/decisionbot.py b/decisionbot.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..fbbac501f5b4ddbd3ef080c460bbdd2607e19847 |
| --- /dev/null |
| +++ b/decisionbot.py |
| @@ -0,0 +1,37 @@ |
| +""" |
| + Decisionbot - A simple IRC bot to help make "coin flip" decisions. |
| + |
| + botname: x or y? |
| + => x |
| + |
| + botname: a or b or c? |
| + => b |
| +""" |
| +import random |
|
Sebastian Noack
2016/02/25 20:47:53
Nit: Please add an empty line between the docstrin
kzar
2016/02/25 20:52:40
Done.
|
| +import re |
| + |
| +from irclib import nm_to_n |
| + |
| + |
| +class Decisionbot(): |
| + def __init__(self, config, queue): |
| + self.queue = queue |
| + |
| + nickname = config.get("main", "nickname") |
| + self.question_regexp = re.compile("^%s:?(.+\s+or\s+.+)\?+\s*$" % |
|
Sebastian Noack
2016/02/25 20:47:53
I just realized that you don't use r"" strings. Bu
kzar
2016/02/25 20:52:40
Done.
|
| + re.escape(nickname), re.IGNORECASE) |
| + self.question_delim_regexp = re.compile("\s+or\s+", re.IGNORECASE) |
| + |
| + def on_pubmsg(self, connection, event): |
| + channel = event.target() |
| + message = event.arguments()[0] |
| + sender = nm_to_n(event.source()) |
| + |
| + match = self.question_regexp.search(message) |
| + if (match): |
| + choices = self.question_delim_regexp.split(match.group(1).strip("? \t")) |
| + if len(choices) > 1: |
| + self.say_public(channel, "%s: %s" % (sender, random.choice(choices))) |
| + |
| + def say_public(self, channel, text): |
| + self.queue.send(text, channel) |