from bot import IRCLine import subprocess, csv, io BOT = None def read_csv_from_string(s): f = io.StringIO() f.write(s) f.seek(0) try: ret = list(csv.reader(f)) except: ret = [] f.close() return ret def get_leaderboard(): res = subprocess.run(["/home/khuxkm/bin/python","/home/khuxkm/code/ircv3bot/tildebadge_leaderboard.py"],stdout=subprocess.PIPE) return read_csv_from_string(res.stdout.decode("ascii")) def on_cmd_tildebadges(event): # boilerplate if not BOT: return target = event.target if event.target.startswith("#") else event.hostmask.nick prefix = event.hostmask.nick+": " if not event.target.startswith("#") else "" # begin command leaderboard = get_leaderboard() if not leaderboard: BOT.socket.send(IRCLine("PRIVMSG",target,prefix+"Error loading leaderboard.")) return top_10 = leaderboard[:10] s = "Top 10 Tildebadge owners: " for user in top_10: escaped = user[1][0]+"\u200b"+user[1][1:] s+=f"{escaped} ({user[2]}, {user[3]} natural), " s = s[:-2] BOT.socket.send(IRCLine("PRIVMSG",target,prefix+s)) def register(bot): global BOT BOT=bot bot.event_manager.on("command_tildebadges",on_cmd_tildebadges)