async def handle_vote(self, data: dict) -> None: user_id = data["user"] if "user" in data else data["id"] user = User(int(user_id)) user.add_vote() reward = self._get_reward( user, data["isWeekend"] if hasattr(data, "isWeekend") else False) if reward < 100: user.add_lootbox(reward) text = f"Thank you for voting for Killua! This time you get a :sparkles: special :sparkles: reward: the lootbox {LOOTBOXES[reward]['emoji']} {LOOTBOXES[reward]['name']}. Open it with `k!open`" else: text = f"Thank you for voting for Killua! Here take {reward} Jenny as a sign of my gratitude. {5-user.votes%5} vote{'s' if 5-user.votes%5 > 1 else ''} away from a :sparkles: special :sparkles: reward" user.add_jenny(reward) usr = self.client.get_user(user_id) or await self.client.fetch_user( user_id) try: await usr.send(text) except discord.HTTPException: pass
async def gain(self, ctx, t:str, item:str): """An owner restricted command allowing the user to obtain any card or amount of jenny or any lootbox""" user = User(ctx.author.id) if not t.lower() in ["jenny", "card", "lootbox"]: return await ctx.send(f'You need to provide a valid type! `{self.client.command_prefix(self.client, ctx.message)[2]}gain <jenny/card/lootbox> <amount/id>`', allowed_mentions=discord.AllowedMentions.none()) if t.lower() == 'card': try: item = int(item) card = Card(item) except CardNotFound: return await ctx.send('Invalid card id') if card.id == 0: return await ctx.send("No") if len(card.owners) >= card.limit * ALLOWED_AMOUNT_MULTIPLE: return await ctx.send('Sorry! Global card limit reached!') if len(user.fs_cards) >= FREE_SLOTS and (item > 99 or item in [x[0] for x in user.rs_cards]): return await ctx.send('Seems like you have no space left in your free slots!') user.add_card(item) return await ctx.send(f'Added card "{card.name}" to your inventory') if t.lower() == 'jenny': if not item.isdigit(): return await ctx.send('Please provide a valid amount of jenny!') item = int(item) if item < 1: return await ctx.send('Please provide a valid amount of jenny!') if item > 69420: return await ctx.send('Be reasonable.') user.add_jenny(item) return await ctx.send(f'Added {item} Jenny to your account') if t.lower() == "lootbox": if not item.isdigit() or not int(item) in list(LOOTBOXES.keys()): return await ctx.send("Invalid lootbox!") user.add_lootbox(int(item)) return await ctx.send(f"Done! Added lootbox \"{LOOTBOXES[int(item)]['name']}\" to your inventory")