Add verbose option and logging system, as well as making preferences prettier

This commit is contained in:
Robert Miles 2018-07-20 15:48:06 -04:00
parent 6925bd419c
commit 25eb076c50
3 changed files with 34 additions and 6 deletions

27
bot.py
View File

@ -1,24 +1,43 @@
import teambot,network,prefer,time
import teambot,network,prefer,time,sys
from colorama import init, Fore, Style
ENDF = Style.RESET_ALL
ROOT = "/home/khuxkm/code/auditbot/"
opts = prefer.Preferences(ROOT+"prefs.json")
VERBOSE = opts.get("verbose")
COLORS = {"*":"cyan","!":"yellow","X":"red"}
def say_log(s,p="*",c=None):
if c is None:
c = COLORS.get(p,None)
c = getattr(Fore,c.upper())
print(c+"[{}] {}".format(p,s)+ENDF)
bbj = network.BBJ(port=opts.get("port",7099))
say_log("Logging in with username {} and password {}...".format(opts.get("username"),opts.get("password")))
if not bbj.set_credentials(opts.get("username"),opts.get("password")):
raise Exception("Incorrect details provided")
say_log("Incorrect details provided","X")
sys.exit(1)
if not opts.get("thread_id"):
say_log("Creating thread...")
thread = bbj.thread_create(opts.get("title"),opts.get("text"))
opts.set("thread_id",thread["thread_id"])
say_log("...and BBJ is all set up!")
trigger = lambda x: "{}: ".format(x)
log = lambda x,e: e[len(trigger(x)):]
class AuditBot(teambot.Handler,teambot.CommandHandlerMixin):
def handle_command(self,target,nick,text):
if nick.split("|")[0] in opts.get("sudoers") and text.startswith(trigger(self.bot.bot_nick)):
bbj.thread_reply(opts.get("thread_id"),opts.get("format").format(time.strftime("%Y-%m-%d %H:%M:%S"),nick,log(self.bot.bot_nick,text)))
nick = nick.split("|")[0]
if nick in opts.get("sudoers") and text.startswith(trigger(self.bot.bot_nick)):
say_log("{} is auditing \"{}\"".format(nick,log(self.bot.bot_nick,text)))
r = bbj.thread_reply(opts.get("thread_id"),opts.get("format").format(time.strftime("%Y-%m-%d %H:%M:%S"),nick,log(self.bot.bot_nick,text)))
say_log(repr(r))
if __name__=="__main__":
channels = "#sudoers".split()
bot = teambot.TeamBot(channels,"auditor","localhost",chandler=AuditBot)
say_log("Starting IRC bot...")
bot.start()

View File

@ -2,7 +2,7 @@ import json
def toJSONFile(obj,filename):
with open(filename,"w") as f:
json.dump(obj,f)
json.dump(obj,f,indent="\t")
def fromJSONFile(filename):
with open(filename) as f:

View File

@ -1 +1,10 @@
{"username": "", "sudoers": [], "password": "","trigger":"{}: ","title":"audit log","text":"Accountability and whatever are our main principles. We'll try to post here if we do something important.","format":"log date {}:\n{} - \"{}\""}
{
"username": "",
"sudoers": [],
"password": "",
"trigger": "{}: ",
"title": "audit log",
"text": "Accountability and whatever are our main principles. We'll try to post here if we do something important.",
"format": "log date {}:\n{} - \"{}\"",
"verbose": false
}