Merge pull request #25 from ToneAPI/Development
made Map and Gamemode filter for LB
This commit is contained in:
+11
-7
@@ -3,8 +3,8 @@ from PIL import Image, ImageDraw, ImageFont
|
||||
import discord
|
||||
import requests
|
||||
|
||||
def getleaderboard(board:str, weaponid="", weaponname="", server=""):
|
||||
payload = {"weapon": weaponid, "server": server}
|
||||
def getleaderboard(board:str, weaponid="", server="", mapid = "", gamemodeid = ""):
|
||||
payload = {"weapon": weaponid, "server": server, "map": mapid, "gamemode": gamemodeid}
|
||||
response = requests.get('https://tone.sleepycat.date/v2/client/players', params=payload).json()
|
||||
players = response.keys()
|
||||
if(board.lower() == "totald"):
|
||||
@@ -35,8 +35,8 @@ def getleaderboard(board:str, weaponid="", weaponname="", server=""):
|
||||
return message
|
||||
|
||||
|
||||
def create_leaderboard_image(board:str, weaponid="", weaponname="", server=""):
|
||||
message = getleaderboard(board, weaponid, weaponname, server)
|
||||
def create_leaderboard_image(board:str, weaponid="", server=""):
|
||||
message = getleaderboard(board, weaponid, server)
|
||||
image_width = 600
|
||||
image_height = 300
|
||||
background_color = (43, 45, 49)
|
||||
@@ -60,15 +60,19 @@ def create_leaderboard_image(board:str, weaponid="", weaponname="", server=""):
|
||||
|
||||
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)
|
||||
message = getleaderboard(board, weaponid, weaponname, server)
|
||||
message = getleaderboard(board, weaponid, server, mapid, gamemodeid)
|
||||
if(server == ""):
|
||||
server = "all"
|
||||
if(weaponname == ""):
|
||||
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(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")
|
||||
|
||||
@@ -3,7 +3,9 @@ import discord
|
||||
from discord.ext import commands
|
||||
from discord import app_commands
|
||||
import requests
|
||||
from Reuse.getGamemode import getgamemodeid
|
||||
from Reuse.getLeaderboard import create_leaderboard_message, getleaderboard
|
||||
from Reuse.getMap import getmapid
|
||||
|
||||
from Reuse.getServer import getserver
|
||||
from Reuse.getWeapon import getweaponid
|
||||
@@ -17,21 +19,30 @@ class SlashLeaderboard(commands.Cog):
|
||||
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.describe(board = "The filter that decides the stat the leaderboard gets ordered at",weapon = "Ingame Weaponname", servername = "A Tone supported server")
|
||||
@app_commands.rename(board = "filter", servername = "server")
|
||||
async def leaderboard(self, interaction: discord.Interaction, board: str, weapon : str = "", servername : str = ""):
|
||||
@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", givenmap = "map", givengamemode= "gamemode")
|
||||
async def leaderboard(self, interaction: discord.Interaction, board: str, weapon : str = "", servername : str = "", givenmap : str = "", givengamemode : str = ""):
|
||||
boards = ["kd", "avgd", "maxd", "totald","deaths", "kills"]
|
||||
server = ""
|
||||
weaponid = ""
|
||||
weaponname = ""
|
||||
mapname = ""
|
||||
gamemode = ""
|
||||
mapid = ""
|
||||
gamemodeid = ""
|
||||
|
||||
async with aiohttp.ClientSession() as session:
|
||||
if(weapon != ""):
|
||||
weaponid, weaponname = getweaponid(weapon)
|
||||
if(givengamemode != ""):
|
||||
gamemodeid, gamemode = getgamemodeid(givengamemode)
|
||||
if(givenmap != ""):
|
||||
mapid, mapname = getmapid(givenmap)
|
||||
if(servername != ""):
|
||||
server = await getserver(session,servername)
|
||||
|
||||
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:
|
||||
botmessage = "You gave a none existing filter"
|
||||
|
||||
@@ -65,5 +76,23 @@ class SlashLeaderboard(commands.Cog):
|
||||
data.append(app_commands.Choice(name=board_choice, value=board_choice))
|
||||
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):
|
||||
await client.add_cog(SlashLeaderboard(client))
|
||||
|
||||
Reference in New Issue
Block a user