First pass at boss spawn monitoring

This commit is contained in:
Luke Robles 2024-11-06 10:36:03 -08:00
parent c6e968e8ac
commit 0762d79db3
3 changed files with 40 additions and 9 deletions

View File

@ -1,10 +1,9 @@
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from discord import option from discord import option
from discord.ext import commands, tasks from discord.ext import commands
import discord import discord
import os import os
import requests import requests
import json
import core_utils import core_utils
import star_citizen import star_citizen

View File

@ -1,6 +1,6 @@
from datetime import datetime
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from discord.ext import commands from datetime import datetime
from discord.ext import commands, tasks
import core_utils import core_utils
import discord import discord
import os import os
@ -18,9 +18,44 @@ else:
class Tarkov(commands.Cog): class Tarkov(commands.Cog):
def __init__(self, bot): def __init__(self, bot):
self.bot: commands.Bot = bot self.bot: commands.Bot = bot
self.check_boss_spawns.start()
tarkov = discord.SlashCommandGroup("tarkov", "Tarkov related commands") tarkov = discord.SlashCommandGroup("tarkov", "Tarkov related commands")
@tasks.loop(seconds=10)
async def check_boss_spawns(self):
# Wait until the bot is ready before we actually start executing code
await self.bot.wait_until_ready()
levels = tarkov.tarkov_boss_info()
if os.path.exists("/tmp/boss_spawns.txt"):
current_spawns = eval(open("/tmp/boss_spawns.txt", "r").read())
if levels != current_spawns:
print("Boss spawns have changed")
embed = discord.Embed(
description="-------", color=discord.Color.blue(), type="rich"
)
embed.set_author(name="🎲 Boss Spawns have updated 🎲")
for key, value in current_spawns.items():
embed.add_field(
name=key,
value="\n".join(
f"{k}: {v['spawnChance']}" for k, v in value.items()
),
inline=False,
)
open("/tmp/boss_spawns.txt", "w").write(str(levels))
await self.bot.get_channel(channel_id).send(embed=embed)
else:
open("/tmp/boss_spawns.txt", "w").write(str(levels))
async def get_all_bosses(ctx: discord.AutocompleteContext): async def get_all_bosses(ctx: discord.AutocompleteContext):
""" """
Returns a list of boss names to be used in auto complete Returns a list of boss names to be used in auto complete
@ -53,8 +88,6 @@ class Tarkov(commands.Cog):
} }
} }
""" """
headers = {"Content-Type": "application/json"}
response = tarkov.query_tarkov_api(query)["traders"] response = tarkov.query_tarkov_api(query)["traders"]
# Loop through the dataset # Loop through the dataset
@ -167,7 +200,7 @@ class Tarkov(commands.Cog):
description="-------", color=discord.Color.blue(), type="rich" description="-------", color=discord.Color.blue(), type="rich"
) )
embed.set_author(name="Boss Spawn chances by map") embed.set_author(name="🎲 Boss Spawn chances by map 🎲")
embed.set_thumbnail(url="https://i.ytimg.com/vi/Yis5rmgo_bM/maxresdefault.jpg") embed.set_thumbnail(url="https://i.ytimg.com/vi/Yis5rmgo_bM/maxresdefault.jpg")
levels = tarkov.tarkov_boss_info() levels = tarkov.tarkov_boss_info()
@ -178,7 +211,7 @@ class Tarkov(commands.Cog):
value="\n".join(f"{k}: {v['spawnChance']}" for k, v in value.items()), value="\n".join(f"{k}: {v['spawnChance']}" for k, v in value.items()),
inline=False, inline=False,
) )
embed.set_footer(text=f"Pulled from the api") embed.set_footer(text="Pulled from the api")
await ctx.send_followup(embed=embed) await ctx.send_followup(embed=embed)

View File

@ -64,7 +64,6 @@ def tarkov_boss_info():
"USEC", "USEC",
"Rogue", "Rogue",
] ]
headers = {"Content-Type": "application/json"}
response = query_tarkov_api(query)["maps"] response = query_tarkov_api(query)["maps"]
# Wasteful, but make a new dict to hold the info we care about # Wasteful, but make a new dict to hold the info we care about