made Map and Gamemode filter for LB

This commit is contained in:
2023-06-30 14:00:47 +02:00
parent 1217231a19
commit 36fdb80eeb
2 changed files with 46 additions and 13 deletions
+11 -7
View File
@@ -3,8 +3,8 @@ from PIL import Image, ImageDraw, ImageFont
import discord import discord
import requests import requests
def getleaderboard(board:str, weaponid="", weaponname="", server=""): def getleaderboard(board:str, weaponid="", server="", mapid = "", gamemodeid = ""):
payload = {"weapon": weaponid, "server": server} payload = {"weapon": weaponid, "server": server, "map": mapid, "gamemode": gamemodeid}
response = requests.get('https://tone.sleepycat.date/v2/client/players', params=payload).json() response = requests.get('https://tone.sleepycat.date/v2/client/players', params=payload).json()
players = response.keys() players = response.keys()
if(board.lower() == "totald"): if(board.lower() == "totald"):
@@ -35,8 +35,8 @@ def getleaderboard(board:str, weaponid="", weaponname="", server=""):
return message return message
def create_leaderboard_image(board:str, weaponid="", weaponname="", server=""): def create_leaderboard_image(board:str, weaponid="", server=""):
message = getleaderboard(board, weaponid, weaponname, server) message = getleaderboard(board, weaponid, server)
image_width = 600 image_width = 600
image_height = 300 image_height = 300
background_color = (43, 45, 49) background_color = (43, 45, 49)
@@ -60,15 +60,19 @@ def create_leaderboard_image(board:str, weaponid="", weaponname="", server=""):
image.save('Reuse/images/leaderboard.png') image.save('Reuse/images/leaderboard.png')
def create_leaderboard_message(board:str, weaponid="", weaponname="", server=""): def create_leaderboard_message(board:str, weaponid="", weaponname="", server="", mapid = "" ,mapname = "", gamemodeid = "",gamemode = ""):
#create_leaderboard_image(board, weaponid, weaponname, server) #create_leaderboard_image(board, weaponid, weaponname, server)
message = getleaderboard(board, weaponid, weaponname, server) message = getleaderboard(board, weaponid, server, mapid, gamemodeid)
if(server == ""): if(server == ""):
server = "all" server = "all"
if(weaponname == ""): if(weaponname == ""):
weaponname = "any" weaponname = "any"
if(mapname == ""):
mapname = "All"
if(gamemode == ""):
gamemode = "Any"
botmessage = discord.Embed(title=f"Leaderboard of {board}", description=f"**Server:** {server}\n**Weapon:** {weaponname}", colour=discord.Colour.orange()) botmessage = discord.Embed(title=f"Leaderboard of {board}", description=f"**Server:** {server}\n**Weapon:** {weaponname}\n**Gamemode:** {gamemode}\n**Map:** {mapname}", colour=discord.Colour.orange())
if(weaponname != "any"): if(weaponname != "any"):
if(requests.head(f"https://toneapi.github.io/ToneAPI_webclient/weapons/{weaponid}.png").status_code == 200): if(requests.head(f"https://toneapi.github.io/ToneAPI_webclient/weapons/{weaponid}.png").status_code == 200):
botmessage.set_thumbnail(url=f"https://toneapi.github.io/ToneAPI_webclient/weapons/{weaponid}.png") botmessage.set_thumbnail(url=f"https://toneapi.github.io/ToneAPI_webclient/weapons/{weaponid}.png")
+35 -6
View File
@@ -3,7 +3,9 @@ import discord
from discord.ext import commands from discord.ext import commands
from discord import app_commands from discord import app_commands
import requests import requests
from Reuse.getGamemode import getgamemodeid
from Reuse.getLeaderboard import create_leaderboard_message, getleaderboard from Reuse.getLeaderboard import create_leaderboard_message, getleaderboard
from Reuse.getMap import getmapid
from Reuse.getServer import getserver from Reuse.getServer import getserver
from Reuse.getWeapon import getweaponid from Reuse.getWeapon import getweaponid
@@ -17,21 +19,30 @@ class SlashLeaderboard(commands.Cog):
print("SlashLeaderboard.py is ready") print("SlashLeaderboard.py is ready")
@app_commands.command(name="leaderboard", description="Gives the leaderboard of selected filter, possible to be narrowed down on weapon and server") @app_commands.command(name="leaderboard", description="Gives the leaderboard of selected filter, possible to be narrowed down on weapon and server")
@app_commands.describe(board = "The filter that decides the stat the leaderboard gets ordered at",weapon = "Ingame Weaponname", servername = "A Tone supported server") @app_commands.describe(board = "The filter that decides the stat the leaderboard gets ordered at",weapon = "Ingame Weaponname", servername = "A Tone supported server", givenmap = "Ingame map", givengamemode="ingame gamemode")
@app_commands.rename(board = "filter", servername = "server") @app_commands.rename(board = "filter", servername = "server", givenmap = "map", givengamemode= "gamemode")
async def leaderboard(self, interaction: discord.Interaction, board: str, weapon : str = "", servername : str = ""): async def leaderboard(self, interaction: discord.Interaction, board: str, weapon : str = "", servername : str = "", givenmap : str = "", givengamemode : str = ""):
boards = ["kd", "avgd", "maxd", "totald","deaths", "kills"] boards = ["kd", "avgd", "maxd", "totald","deaths", "kills"]
server = "" server = ""
weaponid= "" weaponid = ""
weaponname= "" weaponname = ""
mapname = ""
gamemode = ""
mapid = ""
gamemodeid = ""
async with aiohttp.ClientSession() as session: async with aiohttp.ClientSession() as session:
if(weapon != ""): if(weapon != ""):
weaponid, weaponname = getweaponid(weapon) weaponid, weaponname = getweaponid(weapon)
if(givengamemode != ""):
gamemodeid, gamemode = getgamemodeid(givengamemode)
if(givenmap != ""):
mapid, mapname = getmapid(givenmap)
if(servername != ""): if(servername != ""):
server = await getserver(session,servername) server = await getserver(session,servername)
if(board in boards): if(board in boards):
botmessage = create_leaderboard_message(weaponid=weaponid, weaponname=weaponname, server=server, board=board) botmessage = create_leaderboard_message(weaponid=weaponid, weaponname=weaponname, server=server, board=board, mapid=mapid, mapname=mapname, gamemode=gamemode, gamemodeid=gamemodeid)
else: else:
botmessage = "You gave a none existing filter" botmessage = "You gave a none existing filter"
@@ -64,6 +75,24 @@ class SlashLeaderboard(commands.Cog):
if(current.lower() in board_choice.lower()): if(current.lower() in board_choice.lower()):
data.append(app_commands.Choice(name=board_choice, value=board_choice)) data.append(app_commands.Choice(name=board_choice, value=board_choice))
return data[:25] return data[:25]
@leaderboard.autocomplete("givenmap")
async def autocomplete_map(self, interaction: discord.Interaction, current: str) -> list[app_commands.Choice[str]]:
data = []
maplist = ['angel city', 'black water canal', 'coliseum', 'pillars', 'colony', 'complex', 'crashsite', 'drydock', 'eden', 'forwardbase kodai', 'glitch', 'boomtown', 'homestead', 'deck', 'meadow', 'stacks', 'township', 'trafic', 'uma', 'relic', 'rise', 'exoplanet', 'wargames']
for map_choice in maplist:
if(current.lower() in map_choice.lower()):
data.append(app_commands.Choice(name=map_choice, value=map_choice))
return data[:25]
@leaderboard.autocomplete("givengamemode")
async def autocomplete_gamemode(self, interaction: discord.Interaction, current: str) -> list[app_commands.Choice[str]]:
data = []
gamemodelist = ['attrition', 'bounty hunt', 'one in the chamber', 'amped hardpoint', 'capture the flag', 'frontier defense', 'free for all', 'frontier war', 'gungame', 'infection', 'last titan standing', 'marked for death', 'pilots vs. pilots', 'sticks and stones', 'skirmish', 'titan brawl']
for gamemode_choice in gamemodelist:
if(current.lower() in gamemode_choice.lower()):
data.append(app_commands.Choice(name=gamemode_choice, value=gamemode_choice))
return data[:25]
async def setup(client): async def setup(client):
await client.add_cog(SlashLeaderboard(client)) await client.add_cog(SlashLeaderboard(client))