From b13207f7ecee816cb9a0b73c1b853e39515cf381 Mon Sep 17 00:00:00 2001 From: Giuseppe Guerra Date: Sun, 31 Mar 2019 18:01:37 +0200 Subject: [PATCH] Selective update main menu icon redis handler --- objects/tokenList.py | 1 + pep.py | 3 ++- pubSubHandlers/setMainMenuIconHandler.py | 34 ++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 pubSubHandlers/setMainMenuIconHandler.py diff --git a/objects/tokenList.py b/objects/tokenList.py index c258f763..629d9e55 100644 --- a/objects/tokenList.py +++ b/objects/tokenList.py @@ -80,6 +80,7 @@ def getTokenFromUserID(self, userID, ignoreIRC=False, _all=False): """ # Make sure the token exists ret = [] + userID = int(userID) for _, value in self.tokens.items(): if value.userID == userID: if ignoreIRC and value.irc: diff --git a/pep.py b/pep.py index b4c18d85..2f932e94 100644 --- a/pep.py +++ b/pep.py @@ -32,7 +32,7 @@ from objects import chatFilters from objects import fokabot from objects import glob -from pubSubHandlers import changeUsernameHandler +from pubSubHandlers import changeUsernameHandler, setMainMenuIconHandler from pubSubHandlers import disconnectHandler from pubSubHandlers import banHandler @@ -293,6 +293,7 @@ def make_app(): "peppy:silence": updateSilenceHandler.handler(), "peppy:ban": banHandler.handler(), "peppy:notification": notificationHandler.handler(), + "peppy:set_main_menu_icon": setMainMenuIconHandler.handler(), }).start() # Start tornado diff --git a/pubSubHandlers/setMainMenuIconHandler.py b/pubSubHandlers/setMainMenuIconHandler.py new file mode 100644 index 00000000..cd3afc60 --- /dev/null +++ b/pubSubHandlers/setMainMenuIconHandler.py @@ -0,0 +1,34 @@ +from common.log import logUtils as log +from common.redis import generalPubSubHandler +from objects import glob +from constants import serverPackets + + +class handler(generalPubSubHandler.generalPubSubHandler): + def __init__(self): + super().__init__() + self.structure = { + "userID": 0, + "mainMenuIconID": 0 + } + + def handle(self, data): + data = super().parseData(data) + if data is None: + return + targetTokens = glob.tokens.getTokenFromUserID(data["userID"], ignoreIRC=True, _all=True) + if targetTokens: + icon = glob.db.fetch( + "SELECT file_id, url FROM main_menu_icons WHERE id = %s LIMIT 1", + (data["mainMenuIconID"],) + ) + if icon is None: + log.warning("Tried to test an unknown main menu icon") + return + for x in targetTokens: + x.enqueue( + serverPackets.mainMenuIcon("{}|{}".format( + "https://i.ppy.sh/{}.png".format(icon["file_id"]), + icon["url"] + )) + )