async def membersadvanced(self, ctx, *, settings): settings = settings.split(" ") if len(settings) % 2 != 0: return await ctx.send(embed=badEmbed( "Looks like you entered the settings incorrectly.")) people = [] for i in range(len(settings)): if i % 2 != 0: continue role = None for r in ctx.guild.roles: if r.name.lower().startswith(settings[i + 1]): role = r if role is None: return await ctx.send(embed=badEmbed( f"{settings[i + 1]} doesn't look like a valid role.")) if settings[i] == "-r": for m in ctx.guild.members: if role in m.roles: if m in people: people.remove(m) elif settings[i] == "-a": for m in ctx.guild.members: if role in m.roles: people.append(m) msg = "" for p in people: msg = msg + f"{str(p)}\n" await ctx.send(embed=discord.Embed( colour=discord.Colour.orange(), description=msg, title="Members:"))
async def blacklist_check(self, ctx, tag: str): """ Check whether a person is blacklisted """ await ctx.trigger_typing() if ctx.guild.id == 724202847822151680 and ctx.author.top_role < ctx.guild.get_role(822458522322599956): return await ctx.send("You can't use this command.") if ctx.guild.id != 724202847822151680 and not ctx.author.guild_permissions.kick_members: return await ctx.send("You can't use this command.") tag = tag.lower().replace('o', '0') if tag.startswith("#"): tag = tag.strip('#') blacklisted = False guild = "" name = "" reason = "" servers = await self.config.all_guilds() for server in servers: serverobj = self.bot.get_guild(server) if serverobj is not None: try: name = await self.config.guild(serverobj).blacklisted.get_raw(tag, "ign") reason = await self.config.guild(serverobj).blacklisted.get_raw(tag, "reason") guild = serverobj.name blacklisted = True except KeyError: continue if blacklisted: await ctx.send(embed=goodEmbed(f"{name} is blacklisted in {guild} ({reason})!")) else: await ctx.send(embed=badEmbed(f"Looks like this tag isn't blacklisted anywhere!"))
async def blacklist_remove(self, ctx, tag: str): """ Remove a person from blacklist """ await ctx.trigger_typing() if ctx.guild.id == 724202847822151680 and not ctx.author.guild_permissions.administrator: return await ctx.send("You can't use this command.") if ctx.guild.id != 724202847822151680 and not ctx.author.guild_permissions.kick_members: return await ctx.send("You can't use this command.") tag = tag.lower().replace('o', '0') if tag.startswith("#"): tag = tag.strip('#') try: ign = await self.config.guild(ctx.guild ).blacklisted.get_raw(tag, "ign") await self.config.guild(ctx.guild).blacklisted.clear_raw(tag) await ctx.send(embed=goodEmbed( f"{ign} was successfully removed from this server's blacklist!" )) except KeyError: await ctx.send( embed=badEmbed(f"#{tag} isn't blacklisted in this server!"))
async def blacklist_add(self, ctx, tag: str, *, reason: str = ""): """ Add a player to blacklist """ await ctx.trigger_typing() if ctx.guild.id == 724202847822151680 and not ctx.author.guild_permissions.administrator: return await ctx.send("You can't use this command.") if ctx.guild.id != 724202847822151680 and not ctx.author.guild_permissions.kick_members: return await ctx.send("You can't use this command.") tag = tag.lower().replace('o', '0') if tag.startswith("#"): tag = tag.strip('#') if tag in (await self.config.guild(ctx.guild).blacklisted()).keys(): return await ctx.send( embed=badEmbed("This person is already blacklisted!")) try: player = await self.ofcbsapi.get_player(tag) player_in_club = "name" in player.raw_data["club"] if player_in_club: clubname = player.club.name else: clubname = "No club" result = {"ign": player.name, "club": clubname, "reason": reason} await self.config.guild(ctx.guild ).blacklisted.set_raw(tag, value=result) await ctx.send( embed=goodEmbed(f"{player.name} was successfully blacklisted!") ) except brawlstats.errors.NotFoundError as e: return await ctx.send( embed=badEmbed("No player with this tag found, try again!")) except brawlstats.errors.RequestError as e: return await ctx.send(embed=badEmbed( f"BS API is offline, please try again later! ({str(e)})")) except Exception as e: return await ctx.send( f"**Something went wrong, please send a personal message to LA Modmail bot or try again!** ({e})" )
async def coc_clan_remove(self, ctx, key: str): await ctx.trigger_typing() key = key.lower() try: name = await self.config.guild(ctx.guild).clans.get_raw(key, "name") await self.config.guild(ctx.guild).clans.clear_raw(key) await ctx.send(embed=goodEmbed(f"{name} was successfully removed from this server!")) except KeyError: await ctx.send(embed=badEmbed(f"{key.title()} isn't saved club!"))
async def setrole(self, ctx, key, role: discord.Role = None): await ctx.trigger_typing() key = key.lower() try: await self.config.guild(ctx.guild).roles.set_raw( key, value=role.id if role is not None else None) name = role.name if role is not None else "None" await ctx.send(embed=goodEmbed(f"Value {key} set to {name}.")) except KeyError: await ctx.send(embed=badEmbed( f"{key.title()} isn't a valid keyword in this server."))
async def coc_clan_add(self, ctx, key: str, tag: str): await ctx.trigger_typing() if key in (await self.config.guild(ctx.guild).clans()).keys(): return await ctx.send(embed=badEmbed("This clan is already saved!")) try: clan = self.apirequest("clans/%23" + tag.replace("#", "")) result = { "name": clan['name'], "nick": key.title(), "tag": clan['tag'].replace("#", ""), "lastMemberCount": clan['members'], "lastRequirement": clan['requiredTrophies'], "lastPoints": clan['clanPoints'], "lastVersusPoints": clan['clanVersusPoints'], "info": "" } key = key.lower() await self.config.guild(ctx.guild).clans.set_raw(key, value=result) await ctx.send(embed=goodEmbed(f"{clan['name']} was successfully saved in this server!")) except Exception as e: return await ctx.send(f"**Something went wrong: {str(e)}.**")
async def newcomer(self, ctx, tag, member: discord.Member = None): staff = ctx.guild.get_role(await self.config.guild(ctx.guild).roles.staff()) language = await self.config.guild(ctx.guild).roles.language() if staff not in ctx.author.roles and not ctx.author.guild_permissions.kick_members and ctx.author.id != 359131399132807178 and ctx.guild.id != 460550486257565697: if language == 'en': return await ctx.send("You can't use this command.") elif language == 'es': return await ctx.send("No puedes usar este comando.") await ctx.trigger_typing() roles_config = await self.config.guild(ctx.guild).roles() family = ctx.guild.get_role(roles_config['family']) guest = ctx.guild.get_role(roles_config['guest']) newcomer = ctx.guild.get_role(roles_config['remove']) brawlstars = ctx.guild.get_role(roles_config['bs']) vp = ctx.guild.get_role(roles_config['vp']) pres = ctx.guild.get_role(roles_config['pres']) otherclubs = ctx.guild.get_role(roles_config['otherclubs']) leader = ctx.guild.get_role(roles_config['leader']) mmber = ctx.guild.get_role(roles_config['member']) memberclub = ctx.guild.get_role(roles_config['memberclub']) senior = ctx.guild.get_role(roles_config['senior']) if member is not None: if newcomer in ctx.author.roles: return elif member is None: member = ctx.author if ctx.guild.id == 460550486257565697 and member == ctx.author: if newcomer not in member.roles: return await ctx.send("No puedes usar este comando.") tag = tag.lower().replace('O', '0') if tag.startswith("#"): tag = tag.strip('#') msg = "" try: player = await self.ofcbsapi.get_player(tag) await self.bsconfig.user(member).tag.set(tag.replace("#", "")) if language == 'en': cl_name = f"<:bsband:600741378497970177> {player.club.name}" if "name" in player.raw_data[ "club"] else "<:noclub:661285120287834122> No club" elif language == 'es': cl_name = f"<:bsband:600741378497970177> {player.club.name}" if "name" in player.raw_data[ "club"] else "<:noclub:661285120287834122> Sin club" msg += f"**{player.name}** <:bstrophy:552558722770141204> {player.trophies} {cl_name}\n" except brawlstats.errors.NotFoundError: if language == 'en': return await ctx.send( embed=badEmbed("No player with this tag found!")) elif language == 'es': return await ctx.send(embed=badEmbed( "¡No se ha encontrado ningún jugador con este tag!")) except brawlstats.errors.RequestError as e: if language == 'en': return await ctx.send(embed=badEmbed( f"BS API is offline, please try again later! ({str(e)})")) elif langauage == 'es': return await ctx.send(embed=badEmbed( f"BS API está fuera de línea, por favor inténtalo de nuevo más tarde! ({str(e)})" )) except Exception as e: if language == 'en': return await ctx.send( "**Something went wrong, please send a personal message to LA Modmail bot or try again!****" ) elif language == 'es': return await ctx.send( "**¡Algo ha ido mal, por favor envía un mensaje personal al bot LA Modmail o inténtalo de nuevo!**" ) nick = f"{player.name}" try: await member.edit(nick=nick[:31]) if language == 'en': msg += f"New nickname: **{nick[:31]}**\n" elif language == 'es': msg += f"Nuevo apodo: **{nick[:31]}**\n" except discord.Forbidden: if language == 'en': msg += f"I dont have permission to change nickname of this user!\n" elif language == 'es': msg += f"¡No tengo permisos para cambiar el apodo de este usuario!\n" except Exception as e: if language == 'en': return await ctx.send(embed=discord.Embed( colour=discord.Colour.blue(), description=f"Something went wrong: {str(e)}")) elif language == 'es': return await ctx.send(embed=discord.Embed( colour=discord.Colour.blue(), description=f"¡Algo ha ido mal: {str(e)}")) player_in_club = "name" in player.raw_data["club"] member_role_expected = None tags = [] localtags = [] if player_in_club: clubs = await self.bsconfig.guild(ctx.guild).clubs() labs = self.bot.get_guild(401883208511389716) officialclubs = await self.bsconfig.guild(labs).clubs() for key in clubs.keys(): if "#" + clubs[key]["tag"] == player.club.tag: member_role_expected = ctx.guild.get_role( clubs[key]["role"]) localtags.append("#" + clubs[key]["tag"]) for ofkey in officialclubs.keys(): tags.append("#" + officialclubs[ofkey]["tag"]) msg += await self.removeroleifpresent(member, newcomer) if not player_in_club: msg += await self.addroleifnotpresent(member, guest, brawlstars) if player_in_club and player.club.tag not in tags: msg += await self.addroleifnotpresent(member, guest, brawlstars) if player_in_club and player.club.tag in tags and player.club.tag not in localtags: if ctx.guild.id == 460550486257565697 or ctx.guild.id == 593732431551660063: msg += await self.addroleifnotpresent(member, otherclubs, family) else: msg += await self.addroleifnotpresent(member, otherclubs, mmber, brawlstars) if player_in_club and player.club.tag in localtags: if member_role_expected is None: msg += await self.addroleifnotpresent(member, guest, brawlstars) if language == 'en': msg += f"Role for the club {player.club.name} not found.\n" elif language == 'es': msg += f"No se ha encontrado un rol para el club {player.club.name}.\n" return await ctx.send(embed=discord.Embed( colour=discord.Colour.blue(), description=msg)) msg += await self.addroleifnotpresent(member, mmber, family, brawlstars, member_role_expected) try: player_club = await self.ofcbsapi.get_club(player.club.tag) for mem in player_club.members: if mem.tag == player.raw_data['tag']: if mem.role.lower() == 'vicepresident': msg += await self.addroleifnotpresent( member, vp, leader) elif mem.role.lower() == 'president': msg += await self.addroleifnotpresent( member, pres, leader) elif mem.role.lower() == 'senior': msg += await self.addroleifnotpresent( member, senior) elif mem.role.lower() == 'member': msg += await self.addroleifnotpresent( member, memberclub) break except brawlstats.errors.RequestError: msg += "<:offline:642094554019004416> Couldn't retrieve player's club role." if msg != "": await ctx.send(embed=discord.Embed(colour=discord.Colour.blue(), description=msg))
async def blacklisted(self, ctx): """View all blacklisted people""" await ctx.trigger_typing() if ctx.guild.id == 724202847822151680 and ctx.author.top_role < ctx.guild.get_role( 822458522322599956): return await ctx.send("You can't use this command.") if ctx.guild.id != 724202847822151680 and not ctx.author.guild_permissions.kick_members: return await ctx.send("You can't use this command.") if len((await self.config.guild(ctx.guild).blacklisted()).keys()) < 1: return await ctx.send( embed=badEmbed(f"This server doesn't have anyone blacklisted!") ) players = [] keys = (await self.config.guild(ctx.guild).blacklisted()).keys() errored = "" for key in keys: try: player = await self.ofcbsapi.get_player(key.replace("o", "0")) players.append(player) await asyncio.sleep(0.04) except brawlstats.errors.RequestError: errored += f"{key}\n" if errored != "": await ctx.send(embed=badEmbed( f"BS API Error - some players aren't displayed!\nErrors in following tags:\n{errored}" )) msg = "" alertembed = False messages = [] for plr in players: alert = False key = "" clubname = "" for k in (await self.config.guild(ctx.guild).blacklisted()).keys(): if plr.tag.replace("#", "").lower() == k: key = k player_in_club = "name" in plr.raw_data["club"] if player_in_club: clubname = plr.club.name else: clubname = "No club" await self.config.guild(ctx.guild ).blacklisted.set_raw(key, 'ign', value=plr.name) await self.config.guild(ctx.guild ).blacklisted.set_raw(key, 'club', value=clubname) clubs = [] for keey in (await self.get_bs_config().guild(ctx.guild).clubs()).keys(): club = await self.get_bs_config().guild( ctx.guild).clubs.get_raw(keey, "tag") clubs.append(club) if player_in_club: if plr.club.tag.strip("#") in clubs: alert = True alertembed = True keyforembed = "#" + key.upper() if len(msg) > 1800: messages.append(msg) msg = "" reason = await self.config.guild(ctx.guild ).blacklisted.get_raw(key, "reason", default="") if alert: msg += f"--->{plr.name}({keyforembed}) <:bsband:600741378497970177> **{clubname}** Reason: {reason}<---\n" if not alert: msg += f"{plr.name}({keyforembed}) <:bsband:600741378497970177> **{clubname}** Reason: {reason}\n" if len(msg) > 0: messages.append(msg) for m in messages: if m == m[0]: if alertembed: await ctx.send( embed=discord.Embed(color=discord.Colour.red(), description=m, title="Blacklist")) elif not alertembed: await ctx.send( embed=discord.Embed(color=discord.Colour.green(), description=m, title="Blacklist")) else: if alertembed: await ctx.send(embed=discord.Embed( color=discord.Colour.red(), description=m)) elif not alertembed: await ctx.send(embed=discord.Embed( color=discord.Colour.green(), description=m))
async def achievements(self, ctx, *, member: Union[discord.Member, str] = None): """Check yours or other person's achievements""" if ctx.guild.id != 401883208511389716: return await ctx.send(embed=badEmbed("Can't use this here, sorry.") ) await ctx.trigger_typing() member = ctx.author if member is None else member if not isinstance(member, discord.Member): try: member = self.bot.get_user(int(member)) except ValueError: member = discord.utils.get(ctx.guild.members, name=member) roles = await self.checkforroles(member) if roles != "": rembed = discord.Embed(color=discord.Colour.green(), description=f"**{roles}**") await ctx.send(embed=rembed) aembed = discord.Embed(color=discord.Colour.blue()) aembed.set_author(icon_url=member.avatar_url, name=f"{member.display_name}'s achievements") aembed.set_thumbnail( url= "https://cdn.discordapp.com/attachments/472117791604998156/736896897872035960/0a00e865c445d42dfb9f64bedfab8cf8.png" ) gg = "" ggcount = 0 if await self.config.user(member).carrier(): ggcount = ggcount + 1 gg = gg + "Carrier\n" if await self.config.user(member).teamwork(): ggcount = ggcount + 1 gg = gg + "Teamwork\n" if await self.config.user(member).gthief(): ggcount = ggcount + 1 gg = gg + "Gem Thief\n" if gg != "": aembed.add_field( name=f"<:GemGrab:729650153388114002> Gem Grab ({ggcount}/3)", value=gg, inline=False) bounty = "" bountycount = 0 if await self.config.user(member).assassin(): bountycount = bountycount + 1 bounty = bounty + "Assassin\n" if await self.config.user(member).massacre(): bountycount = bountycount + 1 bounty = bounty + "Massacre\n" if await self.config.user(member).bounty(): bountycount = bountycount + 1 bounty = bounty + "Bounty Hunter\n" if bounty != "": aembed.add_field( name=f"<:Bounty:729650154638016532> Bounty ({bountycount}/3)", value=bounty, inline=False) heist = "" heistcount = 0 if await self.config.user(member).thief(): heistcount = heistcount + 1 heist = heist + "Thief\n" if await self.config.user(member).close(): heistcount = heistcount + 1 heist = heist + "Close Call\n" if await self.config.user(member).guardian(): heistcount = heistcount + 1 heist = heist + "Guardian\n" if await self.config.user(member).deadlock(): heistcount = heistcount + 1 heist = heist + "Deadlock\n" if heist != "": aembed.add_field( name=f"<:Heist:729650154139025449> Heist ({heistcount}/4)", value=heist, inline=False) bb = "" bbcount = 0 if await self.config.user(member).turbo(): bbcount = bbcount + 1 bb = bb + "Turbo\n" if await self.config.user(member).pro(): bbcount = bbcount + 1 bb = bb + "Pro Ball\n" if bb != "": aembed.add_field( name= f"<:BrawlBall:729650154919034882> Brawl Ball ({bbcount}/2)", value=bb, inline=False) siege = "" siegecount = 0 if await self.config.user(member).stale(): siegecount = siegecount + 1 siege = siege + "Stalemate\n" if await self.config.user(member).op(): siegecount = siegecount + 1 siege = siege + "OP Bot\n" if await self.config.user(member).clutch(): siegecount = siegecount + 1 siege = siege + "Clutch\n" if siege != "": aembed.add_field( name=f"<:Siege:729650155673878558> Siege ({siegecount}/3)", value=siege, inline=False) hz = "" hzcount = 0 if await self.config.user(member).nailb(): hzcount = hzcount + 1 hz = hz + "Nail Biter\n" if await self.config.user(member).zoned(): hzcount = hzcount + 1 hz = hz + "Zoned Out\n" if await self.config.user(member).domination(): hzcount = hzcount + 1 hz = hz + "Domination\n" if hz != "": aembed.add_field( name=f"<:HotZone:729650153723789413> Hot Zone ({hzcount}/3)", value=hz, inline=False) ss = "" sscount = 0 if await self.config.user(member).trident(): sscount = sscount + 1 ss = ss + "Trident\n" if await self.config.user(member).over(): sscount = sscount + 1 ss = ss + "Overload\n" if await self.config.user(member).survivalist(): sscount = sscount + 1 ss = ss + "Survivalist\n" if await self.config.user(member).after(): sscount = sscount + 1 ss = ss + "Afterlife\n" if ss != "": aembed.add_field( name= f"<:Showdown:729650153669132359> Solo Showdown ({sscount}/4)", value=ss, inline=False) ds = "" dscount = 0 if await self.config.user(member).pinch(): dscount = dscount + 1 ds = ds + "Pinched\n" if await self.config.user(member).dynamic(): dscount = dscount + 1 ds = ds + "Dynamic Duo\n" if ds != "": aembed.add_field( name= f"<:DuoShowdown:729650154092625970> Duo Showdown ({dscount}/2)", value=ds, inline=False) events = "" eventscount = 0 if await self.config.user(member).shut(): eventscount = eventscount + 1 events = events + "Shutdown\n" if await self.config.user(member).robo(): eventscount = eventscount + 1 events = events + "Robo Destroyer\n" if await self.config.user(member).defender(): eventscount = eventscount + 1 events = events + "Defender\n" if await self.config.user(member).city(): eventscount = eventscount + 1 events = events + "City Protector\n" if events != "": aembed.add_field( name= f"<:RoboRumble:729650158106574898> Events ({eventscount}/4)", value=events, inline=False) misc = "" misccount = 0 if await self.config.user(member).draw(): misccount = misccount + 1 misc = misc + "Draw Star\n" if await self.config.user(member).max(): misccount = misccount + 1 misc = misc + "Max Power\n" if await self.config.user(member).brawlm(): misccount = misccount + 1 misc = misc + "Brawl Master\n" if await self.config.user(member).brawll(): misccount = misccount + 1 misc = misc + "Brawl Legend\n" if await self.config.user(member).portrait(): misccount = misccount + 1 misc = misc + "Portrait OG\n" if await self.config.user(member).landscape(): misccount = misccount + 1 misc = misc + "Landscape OG\n" if await self.config.user(member).globalog(): misccount = misccount + 1 misc = misc + "Global OG\n" if await self.config.user(member).bling(): misccount = misccount + 1 misc = misc + "Bling\n" if await self.config.user(member).shiny(): misccount = misccount + 1 misc = misc + "Shiny Looks\n" if await self.config.user(member).celeb(): misccount = misccount + 1 misc = misc + "Celebrity\n" if await self.config.user(member).beast(): misccount = misccount + 1 misc = misc + "Beast Brawler\n" if await self.config.user(member).god(): misccount = misccount + 1 misc = misc + "God Brawler\n" if await self.config.user(member).divine(): misccount = misccount + 1 misc = misc + "Divine Brawler\n" if misc != "": aembed.add_field( name= f"<:LoneStar:729650156491767849> Miscellaneous ({misccount}/13)", value=misc, inline=False) exp = "" if await self.config.user(member).expa(): exp = exp + "Exp Amateur\n" elif await self.config.user(member).expp(): exp = exp + "Exp Pro\n" elif await self.config.user(member).expg(): exp = exp + "Exp God\n" if exp != "": aembed.add_field( name="<:exp:614517287809974405> Experience Levels", value=exp, inline=False) troph = "" if await self.config.user(member).trophya(): troph = troph + "Trophy Amateur\n" elif await self.config.user(member).trophyp(): troph = troph + "Trophy Pro\n" elif await self.config.user(member).trophyg(): troph = troph + "Trophy God\n" if troph != "": aembed.add_field(name="<:bstrophy:552558722770141204> Trophies", value=troph, inline=False) tvt = "" if await self.config.user(member).trioa(): tvt = tvt + "3v3 Amateur\n" elif await self.config.user(member).triop(): tvt = tvt + "3v3 Pro\n" elif await self.config.user(member).triog(): tvt = tvt + "3v3 God\n" if tvt != "": aembed.add_field(name="<:3v3:754367572048216094> 3v3 Wins", value=tvt, inline=False) solo = "" if await self.config.user(member).soloa(): solo = solo + "Solo Amateur\n" elif await self.config.user(member).solop(): solo = solo + "Solo Pro\n" elif await self.config.user(member).solog(): solo = solo + "Solo God\n" if solo != "": aembed.add_field( name="<:Showdown:729650153669132359> Solo Showdown", value=solo, inline=False) duo = "" if await self.config.user(member).duoa(): duo = duo + "Duo Amateur\n" elif await self.config.user(member).duop(): duo = duo + "Duo Pro\n" elif await self.config.user(member).duog(): duo = duo + "Duo God\n" if duo != "": aembed.add_field( name="<:DuoShowdown:729650154092625970> Duo Showdown", value=duo, inline=False) pp = "" if await self.config.user(member).pla(): pp = pp + "Power League Amateur\n" elif await self.config.user(member).plp(): pp = pp + "Power League Pro\n" elif await self.config.user(member).plg(): pp = pp + "Power League God\n" if pp != "": aembed.add_field(name="<:pl:844147379561299988> Power League", value=pp, inline=False) return await ctx.send(embed=aembed)
async def logros(self, ctx, *, member: Union[discord.Member, str] = None): """Check yours or other person's achievements""" if ctx.guild.id != 460550486257565697: return await ctx.send( embed=badEmbed("No puedo usar esto aqui, lo siento.")) await ctx.trigger_typing() member = ctx.author if member is None else member if not isinstance(member, discord.Member): try: member = self.bot.get_user(int(member)) except ValueError: member = discord.utils.get(ctx.guild.members, name=member) aembed = discord.Embed(color=discord.Colour.blue(), title="Achievements", description=f"{str(member)}'s achievements:") aembed.set_thumbnail( url= "https://cdn.discordapp.com/attachments/472117791604998156/736896897872035960/0a00e865c445d42dfb9f64bedfab8cf8.png" ) gg = "" if await self.config.user(member).trabajo(): gg = gg + "Trabajo en equipo\n" if await self.config.user(member).carr(): gg = gg + "Carrito\n" if await self.config.user(member).joy(): gg = gg + "Joyería Exprés\n" if gg != "": aembed.add_field(name="Gem Grab", value=gg, inline=False) bounty = "" if await self.config.user(member).astr(): bounty = bounty + "Astrónomo\n" if await self.config.user(member).mas(): bounty = bounty + "Masacre\n" if await self.config.user(member).caza(): bounty = bounty + "Caza Estrellas\n" if await self.config.user(member).ast(): bounty = bounty + "Astronomía Básica\n" if await self.config.user(member).calc(): bounty = bounty + "Calculado\n" if bounty != "": aembed.add_field(name="Bounty", value=bounty, inline=False) heist = "" if await self.config.user(member).into(): heist = heist + "Intocable\n" if await self.config.user(member).alli(): heist = heist + "Al Límite\n" if await self.config.user(member).conj(): heist = heist + "Conjuro Espejo\n" if await self.config.user(member).lad(): heist = heist + "Ladrón\n" if await self.config.user(member).apa(): heist = heist + "A Palazos\n" if heist != "": aembed.add_field(name="Heist", value=heist, inline=False) bb = "" if await self.config.user(member).goleador(): bb = bb + "Goleador Veloz\n" if await self.config.user(member).partida(): bb = bb + "Partida Veloz\n" if await self.config.user(member).ul(): bb = bb + "Último Empujón\n" if bb != "": aembed.add_field(name="Brawl Ball", value=bb, inline=False) siege = "" if await self.config.user(member).pro(): siege = siege + "Protector\n" if await self.config.user(member).ator(): siege = siege + "Atornillado\n" if await self.config.user(member).muer(): siege = siege + "Muerte súbita\n" if await self.config.user(member).destor(): siege = siege + "Destornillador Veloz\n" if await self.config.user(member).chata(): siege = siege + "Chatarrero\n" if siege != "": aembed.add_field(name="Siege", value=siege, inline=False) hz = "" if await self.config.user(member).control(): hz = hz + "Control Total\n" if await self.config.user(member).igua(): hz = hz + "Igualados\n" if await self.config.user(member).por(): hz = hz + "Por Los Pelos\n" if await self.config.user(member).domi(): hz = hz + "Dominación\n" if hz != "": aembed.add_field(name="Hot Zone", value=hz, inline=False) ss = "" if await self.config.user(member).tri(): ss = ss + "Tridente\n" if await self.config.user(member).dina(): ss = ss + "Dinámico\n" if await self.config.user(member).hum(): ss = ss + "Humildad\n" if await self.config.user(member).vict(): ss = ss + "Victoria Invertida\n" if ss != "": aembed.add_field(name="Solo Showdown", value=ss, inline=False) ds = "" if await self.config.user(member).duoe(): ds = ds + "Dúo estelar\n" if await self.config.user(member).huma(): ds = ds + "Humildad a pares\n" if ds != "": aembed.add_field(name="Duo Showdown", value=ds, inline=False) events = "" if await self.config.user(member).destr(): events = events + "Destructor de Robots\n" if await self.config.user(member).mata(): events = events + "Mata Gigantes\n" if await self.config.user(member).ases(): events = events + "Asesino\n" if await self.config.user(member).cazam(): events = events + "Caza Monstruos\n" if events != "": aembed.add_field(name="Special Events", value=events, inline=False) misc = "" if await self.config.user(member).juga(): misc = misc + "Jugador Vip\n" if await self.config.user(member).estr(): misc = misc + "Estrella\n" if await self.config.user(member).famo(): misc = misc + "Famoso\n" if await self.config.user(member).maxe(): misc = misc + "Maxeado\n" if await self.config.user(member).braw(): misc = misc + "Brawler Dios\n" if await self.config.user(member).aho(): misc = misc + "Ahorrador\n" if await self.config.user(member).empate(): misc = misc + "Empate Estelar\n" if await self.config.user(member).prob(): misc = misc + "Pro Brawler\n" if await self.config.user(member).og(): misc = misc + "OG\n" if await self.config.user(member).derr(): misc = misc + "Derrota Estelar\n" if await self.config.user(member).crack(): misc = misc + "Crack del push\n" if await self.config.user(member).vicia(): misc = misc + "Viciado\n" if misc != "": aembed.add_field(name="Extras", value=misc, inline=False) exp = "" if await self.config.user(member).novxp(): exp = exp + "Novato XP\n" elif await self.config.user(member).prop(): exp = exp + "Pro XP\n" elif await self.config.user(member).diosxp(): exp = exp + "Dios XP\n" if exp != "": aembed.add_field(name="Experience Levels", value=exp, inline=False) troph = "" if await self.config.user(member).novc(): troph = troph + "Novato Copas\n" elif await self.config.user(member).proc(): troph = troph + "Pro Copas\n" elif await self.config.user(member).diosc(): troph = troph + "Dios Copas\n" if troph != "": aembed.add_field(name="Trophies", value=troph, inline=False) tvt = "" if await self.config.user(member).novtr(): tvt = tvt + "Novato 3vs3\n" elif await self.config.user(member).protr(): tvt = tvt + "Pro 3vs3\n" elif await self.config.user(member).diostr(): tvt = tvt + "Dios 3vs3\n" if tvt != "": aembed.add_field(name="3v3 Wins", value=tvt, inline=False) solo = "" if await self.config.user(member).novs(): solo = solo + "Novato Solo\n" elif await self.config.user(member).pros(): solo = solo + "Pro Solo\n" elif await self.config.user(member).dios(): solo = solo + "Dios Solo\n" if solo != "": aembed.add_field(name="Solo Showdown Wins", value=solo, inline=False) duo = "" if await self.config.user(member).novd(): duo = duo + "Novato Dúo\n" elif await self.config.user(member).prod(): duo = duo + "Pro Dúo\n" elif await self.config.user(member).diosd(): duo = duo + "Dios Dúo\n" if duo != "": aembed.add_field(name="Duo Showdown Wins", value=duo, inline=False) pp = "" if await self.config.user(member).novr(): pp = pp + "Novato Rankeds\n" elif await self.config.user(member).pror(): pp = pp + "Pro Rankeds\n" elif await self.config.user(member).diosr(): pp = pp + "Dios Rankeds\n" if pp != "": aembed.add_field(name="Power Play", value=pp, inline=False) return await ctx.send(embed=aembed)
async def achievements(self, ctx, *, member: Union[discord.Member, str] = None): """Check yours or other person's achievements""" if ctx.guild.id != 401883208511389716: return await ctx.send(embed=badEmbed("Can't use this here, sorry.")) await ctx.trigger_typing() member = ctx.author if member is None else member if not isinstance(member, discord.Member): try: member = self.bot.get_user(int(member)) except ValueError: member = discord.utils.get(ctx.guild.members, name=member) aembed = discord.Embed(color=discord.Colour.blue(), title="Achievements", description=f"{str(member)}'s achievements:") aembed.set_thumbnail(url="https://cdn.discordapp.com/attachments/472117791604998156/736896897872035960/0a00e865c445d42dfb9f64bedfab8cf8.png") gg = "" if await self.config.user(member).carrier(): gg = gg + "Carrier\n" if await self.config.user(member).teamwork(): gg = gg + "Teamwork\n" if gg != "": aembed.add_field(name="Gem Grab", value=gg, inline=False) bounty = "" if await self.config.user(member).assassin(): bounty = bounty + "Assassin\n" if await self.config.user(member).massacre(): bounty = bounty + "Massacre\n" if await self.config.user(member).bounty(): bounty = bounty + "Bounty Hunter\n" if bounty != "": aembed.add_field(name="Bounty", value=bounty, inline=False) heist = "" if await self.config.user(member).thief(): heist = heist + "Thief\n" if await self.config.user(member).close(): heist = heist + "Close Call\n" if await self.config.user(member).guardian(): heist = heist + "Guardian\n" if await self.config.user(member).deadlock(): heist = heist + "Deadlock\n" if heist != "": aembed.add_field(name="Heist", value=heist, inline=False) bb = "" if await self.config.user(member).turbo(): bb = bb + "Turbo\n" if await self.config.user(member).pro(): bb = bb + "Pro Ball\n" if bb != "": aembed.add_field(name="Brawl Ball", value=bb, inline=False) siege = "" if await self.config.user(member).stale(): siege = siege + "Stalemate\n" if await self.config.user(member).op(): siege = siege + "OP Bot\n" if await self.config.user(member).clutch(): siege = siege + "Clutch\n" if siege != "": aembed.add_field(name="Siege", value=siege, inline=False) hz = "" if await self.config.user(member).nailb(): hz = hz + "Nail Biter\n" if await self.config.user(member).zoned(): hz = hz + "Zoned Out\n" if await self.config.user(member).domination(): hz = hz + "Domination\n" if hz != "": aembed.add_field(name="Hot Zone", value=hz, inline=False) ss = "" if await self.config.user(member).trident(): ss = ss + "Trident\n" if await self.config.user(member).over(): ss = ss + "Overload\n" if await self.config.user(member).survivalist(): ss = ss + "Survivalist\n" if await self.config.user(member).after(): ss = ss + "Afterlife\n" if ss != "": aembed.add_field(name="Solo Showdown", value=ss, inline=False) ds = "" if await self.config.user(member).pinch(): ds = ds + "Pinched\n" if await self.config.user(member).dynamic(): ds = ds + "Dynamic Duo\n" if ds != "": aembed.add_field(name="Duo Showdown", value=ds, inline=False) events = "" if await self.config.user(member).shut(): events = events + "Shutdown\n" if await self.config.user(member).robo(): events = events + "Robo Destroyer\n" if await self.config.user(member).defender(): events = events + "Defender\n" if await self.config.user(member).city(): events = events + "City Protector\n" if events != "": aembed.add_field(name="Events", value=events, inline=False) misc = "" if await self.config.user(member).draw(): misc = misc + "Draw Star\n" if await self.config.user(member).max(): misc = misc + "Max Power\n" if await self.config.user(member).brawlm(): misc = misc + "Brawl Master\n" if await self.config.user(member).brawll(): misc = misc + "Brawl Legend\n" if await self.config.user(member).portrait(): misc = misc + "Portrait OG\n" if await self.config.user(member).landscape(): misc = misc + "Landscape OG\n" if await self.config.user(member).globalog(): misc = misc + "Global OG\n" if await self.config.user(member).bling(): misc = misc + "Bling\n" if await self.config.user(member).celeb(): misc = misc + "Celebrity\n" if await self.config.user(member).beast(): misc = misc + "Beast Brawler\n" if await self.config.user(member).god(): misc = misc + "God Brawler\n" if misc != "": aembed.add_field(name="Miscellaneous", value=misc, inline=False) exp = "" if await self.config.user(member).expa(): exp = exp + "Exp Amateur\n" elif await self.config.user(member).expp(): exp = exp + "Exp Pro\n" elif await self.config.user(member).expg(): exp = exp + "Exp God\n" if exp != "": aembed.add_field(name="Experience Levels", value=exp, inline=False) troph = "" if await self.config.user(member).trophya(): troph = troph + "Trophy Amateur\n" elif await self.config.user(member).trophyp(): troph = troph + "Trophy Pro\n" elif await self.config.user(member).trophyg(): troph = troph + "Trophy God\n" if troph != "": aembed.add_field(name="Trophies", value=troph, inline=False) tvt = "" if await self.config.user(member).trioa(): tvt = tvt + "3v3 Amateur\n" elif await self.config.user(member).triop(): tvt = tvt + "3v3 Pro\n" elif await self.config.user(member).triog(): tvt = tvt + "3v3 God\n" if tvt != "": aembed.add_field(name="3v3 Wins", value=tvt, inline=False) solo = "" if await self.config.user(member).soloa(): solo = solo + "Solo Amateur\n" elif await self.config.user(member).solop(): solo = solo + "Solo Pro\n" elif await self.config.user(member).solog(): solo = solo + "Solo God\n" if solo != "": aembed.add_field(name="Solo Showdown", value=solo, inline=False) duo = "" if await self.config.user(member).duoa(): duo = duo + "Duo Amateur\n" elif await self.config.user(member).duop(): duo = duo + "Duo Pro\n" elif await self.config.user(member).duog(): duo = duo + "Duo God\n" if duo != "": aembed.add_field(name="Duo Showdown", value=duo, inline=False) pp = "" if await self.config.user(member).ppa(): pp = pp + "PowerPlay Amateur\n" elif await self.config.user(member).ppp(): pp = pp + "PowerPlay Pro\n" elif await self.config.user(member).ppg(): pp = pp + "PowerPlay God\n" if pp != "": aembed.add_field(name="Power Play Points", value=pp, inline=False) return await ctx.send(embed=aembed)
async def coc_clans(self, ctx): """View all clans saved in a server""" if len((await self.config.guild(ctx.guild).clans()).keys()) < 1: return await ctx.send( embed=badEmbed(f"This server has no clans saved. Save a club by using {ctx.prefix}coc_clan add!")) saved_clans = await self.config.guild(ctx.guild).clans() try: clans = [] keys = saved_clans.keys() for k in keys: clan = self.apirequest("clans/%23" + saved_clans[k]['tag']) clans.append(clan) embedFields = [] for i in range(len(clans)): key = "" for k in saved_clans.keys(): if clans[i]['tag'].replace("#", "") == saved_clans[k]['tag']: key = k saved_clans[key]['lastMemberCount'] = clans[i]['members'] saved_clans[key]['lastRequirement'] = clans[i]['requiredTrophies'] saved_clans[key]['lastPoints'] = clans[i]['clanPoints'] saved_clans[key]['lastPosition'] = i saved_clans[key]['lastVersusPoints'] = clans[i]['clanVersusPoints'] info = saved_clans[key]["info"] if "info" in saved_clans[key] else "" e_name = f"<:bsband:600741378497970177> {clans[i]['name']} [{key}] {clans[i]['tag']} {info}" e_value = f"🏆`{clans[i]['clanPoints']}` 🏆`{clans[i]['clanVersusPoints']}`" e_value += f" `{clans[i]['requiredTrophies']}+` <:icon_gameroom:553299647729238016>`{clans[i]['members']}`" embedFields.append([e_name, e_value]) await self.config.guild(ctx.guild).set_raw("clans", value=saved_clans) colour = choice([discord.Colour.green(), discord.Colour.blue(), discord.Colour.purple(), discord.Colour.orange(), discord.Colour.red(), discord.Colour.teal()]) embedsToSend = [] for i in range(0, len(embedFields), 8): embed = discord.Embed(colour=colour) embed.set_author( name=f"{ctx.guild.name} clans", icon_url=ctx.guild.icon_url) page = (i // 8) + 1 footer = f"[{page}/{len(embedFields)//8+1}]" embed.set_footer(text=footer) for e in embedFields[i:i + 8]: embed.add_field(name=e[0], value=e[1], inline=False) embedsToSend.append(embed) if len(embedsToSend) > 1: await menu(ctx, embedsToSend, {"⬅": prev_page, "➡": next_page, }, timeout=2000) elif len(embedsToSend) == 1: await ctx.send(embed=embedsToSend[0]) else: await ctx.send("No clans found!") except ZeroDivisionError as e: return await ctx.send( "**Something went wrong, please send a personal message to LA Modmail bot or try again!**")