First pass at boss spawn monitoring
Some checks failed
Build and push / sync-argocd-app (push) Blocked by required conditions
Build and push / changes (push) Successful in 21s
Build and push / Lint-Python (push) Successful in 7s
Build and push / Build-and-Push-Docker (push) Has been cancelled

This commit is contained in:
Luke R 2024-11-06 10:36:03 -08:00
parent 7fe15d4a8a
commit 74729a101f
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