minerbot2/plugins/tildebadge.py

42 lines
1.1 KiB
Python

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)