diff --git a/plugins/sevens_cmds.py b/plugins/sevens_cmds.py new file mode 100644 index 0000000..80e321c --- /dev/null +++ b/plugins/sevens_cmds.py @@ -0,0 +1,15 @@ +import plugin, sevens +import importlib +importlib.reload(sevens) + +@plugin.command("sevens") +def sevens_check(bot,channel,nick,*words): + msg = " ".join(words) + out = "Your message satisfies: " + if sevens.word_length(msg): + out+="word count ("+str(len(msg.split()))+"), " + if sevens.letter_count(msg): + out+="letter count ("+str(len("".join(msg.strip().split())))+"), " + if sevens.word_length(msg) or sevens.letter_count(msg): + out = out[:-2] + bot.say(channel,"{}: {}".format(nick,out)) diff --git a/plugins/sevens_game.py b/plugins/sevens_game.py new file mode 100644 index 0000000..8f0771e --- /dev/null +++ b/plugins/sevens_game.py @@ -0,0 +1,14 @@ +import plugin,sevens,dictdata + +gamestate = dictdata.DictData("sevens_game.json") + +CRITERION = [sevens.word_length,sevens.letter_count] + +def message_passes(msg): + return any([f(msg) for f in CRITERION]) + +@plugin.listener("sevens_game") +def sevens_game(bot,channel,nick,msg): + if channel!="#sevens": return # only police #sevens + if not message_passes(msg): + bot._bot.conn.kick(channel,nick,"disturbing the peace of the sanctuary ~minerbot2") diff --git a/sevens.py b/sevens.py new file mode 100644 index 0000000..beb5fca --- /dev/null +++ b/sevens.py @@ -0,0 +1,21 @@ +def digit_sum(n,one=False): + r = sum([int(x) for x in (str(n) if type(n)==int else n)]) + if one: + if len(str(r))>1: + return digit_sum(r,one) + return r + +def sum_to_seven(f): + def wrapper(*args,**kwargs): + res = f(*args,**kwargs) + return digit_sum(res,True)==7 or (res%7)==0 + return wrapper + +@sum_to_seven +def word_length(msg): + words = msg.split(" ") + return len(words) + +@sum_to_seven +def letter_count(msg): + return len("".join(msg.strip().split()))