42 lines
1.1 KiB
Python
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)
|