Adding first pass at boss info command
This commit is contained in:
parent
df3ac251d5
commit
d37151e097
@ -246,97 +246,6 @@ class StarCitizen(commands.Cog):
|
|||||||
embed = await star_citizen.calculate_trade_profits(commodity=commodity, scu=scu)
|
embed = await star_citizen.calculate_trade_profits(commodity=commodity, scu=scu)
|
||||||
await ctx.send_followup(embed=embed)
|
await ctx.send_followup(embed=embed)
|
||||||
|
|
||||||
@tasks.loop(seconds=5)
|
|
||||||
async def poll_status_page(self):
|
|
||||||
# Wait until the bot is ready before we actually start executing code
|
|
||||||
await self.bot.wait_until_ready()
|
|
||||||
|
|
||||||
status_url = "https://status.robertsspaceindustries.com"
|
|
||||||
|
|
||||||
rsi_incident_file = "/tmp/rsi_incident"
|
|
||||||
status_json = requests.get(status_url + "/index.json").json()
|
|
||||||
|
|
||||||
if status_json["summaryStatus"] != "operational":
|
|
||||||
# Extract systems with unresolved issues
|
|
||||||
systems_with_issues = [
|
|
||||||
system
|
|
||||||
for system in status_json["systems"]
|
|
||||||
if system["unresolvedIssues"]
|
|
||||||
]
|
|
||||||
print(systems_with_issues)
|
|
||||||
|
|
||||||
unresolved_issue_permalink = systems_with_issues[0]["unresolvedIssues"][0][
|
|
||||||
"permalink"
|
|
||||||
]
|
|
||||||
# Remove any single quote characters from the URL
|
|
||||||
current_incident_url = unresolved_issue_permalink.replace("'", "")
|
|
||||||
|
|
||||||
response = requests.get(current_incident_url).text
|
|
||||||
incident_soup = BeautifulSoup(response, "html.parser")
|
|
||||||
|
|
||||||
details = incident_soup.find("div", class_="article__content").get_text()
|
|
||||||
|
|
||||||
if os.path.exists(rsi_incident_file):
|
|
||||||
file_contents = json.loads(open(rsi_incident_file).read())
|
|
||||||
deets = file_contents["details"]
|
|
||||||
incident_link = file_contents["incident_link"]
|
|
||||||
|
|
||||||
if current_incident_url != incident_link:
|
|
||||||
print(
|
|
||||||
"Current incident url did not match whats in the file, must be a new incident, send alert"
|
|
||||||
)
|
|
||||||
embed = core_utils.build_alert_embed(
|
|
||||||
color=discord.Color.red(),
|
|
||||||
thumbnail="https://media.robertsspaceindustries.com/t0q21kbb3zrpt/source.png",
|
|
||||||
author="🚨 OH NO THERES AN INCIDENT 🚨",
|
|
||||||
image="https://media.giphy.com/media/WWIZJyXHXscn8JC1e0/giphy.gif",
|
|
||||||
details=details,
|
|
||||||
link=current_incident_url,
|
|
||||||
)
|
|
||||||
core_utils.write_incident_file(
|
|
||||||
file_path=rsi_incident_file,
|
|
||||||
url=current_incident_url,
|
|
||||||
details=details,
|
|
||||||
)
|
|
||||||
|
|
||||||
await core_utils.send_alert(self, channel=channel_id, embed=embed)
|
|
||||||
elif deets != details:
|
|
||||||
# The details we have in the json file do not match what was recently posted to the website
|
|
||||||
# Update the json file on disk and then send an update alert to the channel
|
|
||||||
core_utils.write_incident_file(
|
|
||||||
file_path=rsi_incident_file,
|
|
||||||
url=current_incident_url,
|
|
||||||
details=details,
|
|
||||||
)
|
|
||||||
embed = core_utils.build_alert_embed(
|
|
||||||
color=discord.Color.yellow(),
|
|
||||||
thumbnail="https://media.robertsspaceindustries.com/t0q21kbb3zrpt/source.png",
|
|
||||||
author="⚠️ THERE HAS BEEN AN UPDATE TO THE ONGOING INCIDENT ⚠️",
|
|
||||||
image="https://media.giphy.com/media/WWIZJyXHXscn8JC1e0/giphy.gif",
|
|
||||||
details=deets,
|
|
||||||
link=incident_link,
|
|
||||||
)
|
|
||||||
|
|
||||||
await core_utils.send_alert(self, channel=channel_id, embed=embed)
|
|
||||||
else:
|
|
||||||
# Write the incident's body to a json file to read later
|
|
||||||
core_utils.write_incident_file(
|
|
||||||
file_path=rsi_incident_file,
|
|
||||||
url=current_incident_url,
|
|
||||||
details=details,
|
|
||||||
)
|
|
||||||
|
|
||||||
embed = core_utils.build_alert_embed(
|
|
||||||
color=discord.Color.red(),
|
|
||||||
thumbnail="https://media.robertsspaceindustries.com/t0q21kbb3zrpt/source.png",
|
|
||||||
author="🚨 OH NO THERES AN INCIDENT 🚨",
|
|
||||||
image="https://media.giphy.com/media/WWIZJyXHXscn8JC1e0/giphy.gif",
|
|
||||||
details=details,
|
|
||||||
link=current_incident_url,
|
|
||||||
)
|
|
||||||
|
|
||||||
await core_utils.send_alert(self, channel=channel_id, embed=embed)
|
|
||||||
|
|
||||||
@starcitizen.command(
|
@starcitizen.command(
|
||||||
guild_ids=core_utils.my_guilds,
|
guild_ids=core_utils.my_guilds,
|
||||||
name="rsifind",
|
name="rsifind",
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
import core_utils
|
import core_utils
|
||||||
import discord
|
import discord
|
||||||
@ -20,6 +21,14 @@ class Tarkov(commands.Cog):
|
|||||||
|
|
||||||
tarkov = discord.SlashCommandGroup("tarkov", "Tarkov related commands")
|
tarkov = discord.SlashCommandGroup("tarkov", "Tarkov related commands")
|
||||||
|
|
||||||
|
async def get_all_bosses(ctx: discord.AutocompleteContext):
|
||||||
|
"""
|
||||||
|
Returns a list of boss names to be used in auto complete
|
||||||
|
"""
|
||||||
|
|
||||||
|
bosses = tarkov.request_wiki("Bosses", "Bosses")
|
||||||
|
return bosses
|
||||||
|
|
||||||
@tarkov.command(
|
@tarkov.command(
|
||||||
guild_ids=core_utils.my_guilds,
|
guild_ids=core_utils.my_guilds,
|
||||||
name="traders",
|
name="traders",
|
||||||
@ -149,7 +158,7 @@ class Tarkov(commands.Cog):
|
|||||||
|
|
||||||
@tarkov.command(
|
@tarkov.command(
|
||||||
guild_ids=core_utils.my_guilds,
|
guild_ids=core_utils.my_guilds,
|
||||||
name="bosses",
|
name="spawns",
|
||||||
description="Boss spawn chances per map",
|
description="Boss spawn chances per map",
|
||||||
)
|
)
|
||||||
async def boss_spawns(self, ctx: commands.Context):
|
async def boss_spawns(self, ctx: commands.Context):
|
||||||
@ -209,6 +218,46 @@ class Tarkov(commands.Cog):
|
|||||||
|
|
||||||
await ctx.send_followup(embed=embed)
|
await ctx.send_followup(embed=embed)
|
||||||
|
|
||||||
|
@tarkov.command(
|
||||||
|
guild_ids=core_utils.my_guilds,
|
||||||
|
name="boss",
|
||||||
|
description="Boss Info",
|
||||||
|
)
|
||||||
|
async def boss_info(
|
||||||
|
self,
|
||||||
|
ctx: commands.Context,
|
||||||
|
boss_name: discord.Option(
|
||||||
|
str, autocomplete=discord.utils.basic_autocomplete(get_all_bosses)
|
||||||
|
),
|
||||||
|
):
|
||||||
|
await ctx.defer()
|
||||||
|
embed = discord.Embed(
|
||||||
|
description="-------",
|
||||||
|
color=discord.Color.blue(),
|
||||||
|
type="rich",
|
||||||
|
title=f"Boss info for {boss_name}",
|
||||||
|
)
|
||||||
|
|
||||||
|
wiki_url = "https://escapefromtarkov.fandom.com/wiki/"
|
||||||
|
# boss_name = "Tagilla"
|
||||||
|
|
||||||
|
response = requests.get(wiki_url + boss_name).text
|
||||||
|
soup = BeautifulSoup(response, "html.parser")
|
||||||
|
|
||||||
|
embed.set_thumbnail(url=soup.find("a", class_="image").get("href"))
|
||||||
|
|
||||||
|
health = soup.find("table", class_="wikitable").find_next("td").text.rstrip()
|
||||||
|
embed.add_field(name="Health", value=health, inline=False)
|
||||||
|
|
||||||
|
spawn_chance = "%\n".join(
|
||||||
|
soup.find("td", class_="va-infobox-label", string="Spawn chance")
|
||||||
|
.find_next("td", class_="va-infobox-content")
|
||||||
|
.text.split("%")
|
||||||
|
)
|
||||||
|
|
||||||
|
embed.add_field(name="Spawn Chance", value=spawn_chance, inline=False)
|
||||||
|
await ctx.send_followup(embed=embed)
|
||||||
|
|
||||||
|
|
||||||
def setup(bot):
|
def setup(bot):
|
||||||
bot.add_cog(Tarkov(bot))
|
bot.add_cog(Tarkov(bot))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user