Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: decisionbot.py

Issue 29337738: Issue 3703 - Add "coin flip" feature to abpbot (Closed)
Patch Set: Fixed a couple more nits Created Feb. 25, 2016, 8:50 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « abpbot.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: decisionbot.py
diff --git a/decisionbot.py b/decisionbot.py
new file mode 100644
index 0000000000000000000000000000000000000000..cc966c6641f1b1121c7a41c0bf3f5fb1023b3907
--- /dev/null
+++ b/decisionbot.py
@@ -0,0 +1,38 @@
+"""
+ 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
+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(r"^%s:?(.+\s+or\s+.+)\?+\s*$" %
+ re.escape(nickname), re.IGNORECASE)
+ self.question_delim_regexp = re.compile(r"\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)
« no previous file with comments | « abpbot.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld