minerbot-phoenix/plugins/mbtilde.py

78 lines
2.3 KiB
Python

import requests,plugin,subprocess
from math import floor
@plugin.group("mbtilde","<operation> [args]")
def mbtilde(bot,channel,nick,subcmd,*args):
for arg in args:
if (arg.isdigit() and int(arg)>100 and subcmd not in ("factor","parrot")):
bot.say(channel,"no u")
return True
if subcmd in "add sub mult div mod pow".split() and len(args)!=2:
return True
elif subcmd in "unscramble factor".split() and len(args)!=1:
return True
return False
@mbtilde.command("help")
def help(bot,channel,nick,subcmd,*args):
bot.say(channel,"{}: Usage: !{} <{}>".format(nick,bot.cmd,"|".join(sorted(list(mbtilde.subcmds.keys())))))
@mbtilde.command("ask")
def ask(bot,channel,nick,subcmd,*args):
bot.say(channel,"!tilde")
@mbtilde.command("parrot")
def parrot(bot,channel,nick,subcmd,*args):
bot.say(channel," ".join(args))
@mbtilde.command("add")
def add(bot,channel,nick,subcmd,*args):
bot.say(channel,str(int(args[0])+int(args[1])))
@mbtilde.command("sub")
def sub(bot,channel,nick,subcmd,*args):
bot.say(channel,str(int(args[0])-int(args[1])))
@mbtilde.command("mult")
def mult(bot,channel,nick,subcmd,*args):
bot.say(channel,str(int(args[0])*int(args[1])))
@mbtilde.command("div")
def div(bot,channel,nick,subcmd,*args):
bot.say(channel,str(floor(int(args[0])/int(args[1]))))
@mbtilde.command("mod")
def mod(bot,channel,nick,subcmd,*args):
bot.say(channel,str(int(args[0])%int(args[1])))
@mbtilde.command("pow")
def pow(bot,channel,nick,subcmd,*args):
bot.say(channel,str(int(args[0])**int(args[1])))
@mbtilde.command("alphabetize")
def alphabetize(bot,channel,nick,subcmd,*args):
num = int(args[0])-1
texts = [args[x] for x in range(1,4)]
texts.sort()
bot.say(channel,texts[num])
@mbtilde.command("unscramble")
def unscramble(bot,channel,nick,subcmd,*args):
r = requests.get("http://anagramica.com/best/{}".format(args[0]))
r.raise_for_status()
r = r.json()
if len(r["best"])==0:
bot.say(channel,args[0])
# elif len(r["best"])==1:
# bot.say(channel,r["best"][0])
else:
bot.say(channel,r["best"][0])
@mbtilde.command("factor")
def factor(bot,channel,nick,subcmd,*args):
bot.say(channel,subprocess.check_output(["/usr/bin/factor",str(args[0])]).decode("ascii").split(": ")[1].replace(" ",",").strip())
@mbtilde.command("score")
def score(bot,channel,nick,subcmd,*args):
bot.say(channel,"!tildescore")