Add sevens game

This commit is contained in:
Robert Miles 2019-09-25 11:15:09 -04:00
parent 9feb3b9d92
commit cf01d1cf12
3 changed files with 50 additions and 0 deletions

15
plugins/sevens_cmds.py Normal file
View File

@ -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))

14
plugins/sevens_game.py Normal file
View File

@ -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")

21
sevens.py Normal file
View File

@ -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()))