aboutsummaryrefslogtreecommitdiffstats
path: root/bot
diff options
context:
space:
mode:
Diffstat (limited to 'bot')
-rw-r--r--bot/seasons/evergreen/game.py65
1 files changed, 35 insertions, 30 deletions
diff --git a/bot/seasons/evergreen/game.py b/bot/seasons/evergreen/game.py
index a240c69e..d378c34e 100644
--- a/bot/seasons/evergreen/game.py
+++ b/bot/seasons/evergreen/game.py
@@ -73,18 +73,25 @@ class Games(Cog):
async with self.http_session.get(BASE_URL + "genres", data=body, headers=HEADERS) as resp:
result = await resp.json()
- self.genres = {genre['name'].capitalize(): genre['id'] for genre in result}
+ genres = {genre['name'].capitalize(): genre['id'] for genre in result}
+
+ self.genres = {}
# Manual check genres, replace sentences with words
- for genre in self.genres.keys():
+ for genre in genres:
if genre == "Role-playing (rpg)":
- self.genres["Rpg"] = self.genres.pop(genre)
+ self.genres["Role-playing"] = genres[genre]
+ self.genres["Rpg"] = genres[genre]
elif genre == "Turn-based strategy (tbs)":
- self.genres["Tbs"] = self.genres.pop(genre)
+ self.genres["Turn-based-strategy"] = genres[genre]
+ self.genres["Tbs"] = genres[genre]
elif genre == "Real time strategy (rts)":
- self.genres["Rts"] = self.genres.pop(genre)
+ self.genres["Real-time-strategy"] = genres[genre]
+ self.genres["Rts"] = genres[genre]
elif genre == "Hack and slash/beat 'em up":
- self.genres["Hack-and-slash"] = self.genres.pop(genre)
+ self.genres["Hack-and-slash"] = genres[genre]
+ else:
+ self.genres[genre] = genres[genre]
@group(name='games', aliases=['game'], invoke_without_command=True)
async def games(self, ctx: Context, genre: str = "", amount: int = 5) -> None:
@@ -141,7 +148,7 @@ class Games(Cog):
@games.command(name='genres', aliases=['genre', 'g'])
async def genres(self, ctx: Context) -> None:
"""Get all available genres."""
- await ctx.send(f"Currently available genres: {', '.join(f'`{genre}`' for genre in self.genres.keys())}")
+ await ctx.send(f"Currently available genres: {', '.join(f'`{genre}`' for genre in self.genres)}")
@games.command(name='search', aliases=['s'])
async def search(self, ctx: Context, *, search: str) -> None:
@@ -179,13 +186,16 @@ class Games(Cog):
-> List[Dict[str, Any]]:
"""Get Games List from IGDB API."""
# Create body of IGDB API request, define fields, sorting, offset, limit and genre
- body = f"""fields cover.image_id, first_release_date, total_rating, name, storyline, url, platforms.name,
-status, involved_companies.company.name, summary, age_ratings.category, age_ratings.rating, total_rating_count;
-{f'sort {sort};' if sort else ''}
-offset {offset};
-limit {limit};
-{f'where genres = ({genre});' if genre else ''}
-{additional_body}"""
+ body = "fields cover.image_id, first_release_date, total_rating, name, storyline, url, platforms.name, "
+ body += "status, involved_companies.company.name, summary, age_ratings.category, age_ratings.rating, "
+ body += "total_rating_count;\n"
+
+ body += f"sort {sort};\n" if sort else ''
+ body += f"offset {offset};\n"
+ body += f"limit {limit};\n"
+
+ body += f"where genres = ({genre});" if genre else ''
+ body += additional_body
# Do request to IGDB API, create headers, URL, define body, return result
async with client.get(
@@ -198,8 +208,7 @@ limit {limit};
async def get_pages(self, data: List[Dict[str, Any]]) -> List[Tuple[str, str]]:
"""Generate all game pages, do additional requests to IGDB API."""
pages = []
- for game in data:
- pages.append(await self.create_page(game))
+ [pages.append(await self.create_page(game)) for game in data]
return pages
async def create_page(self, data: Dict[str, Any]) -> Tuple[str, str]:
@@ -207,33 +216,30 @@ limit {limit};
# Create page content variable, what will be returned
page = ""
- # Get keys to one variable. Used for code style
- keys = data.keys()
-
# If game have cover, generate URL of Cover, if not, let url empty
- if 'cover' in keys:
+ if 'cover' in data:
url = f"{IMAGE_BASE_URL}t_cover_big/{data['cover']['image_id']}.jpg"
else:
url = ""
# Add title with hyperlink and check for storyline
page += f"**[{data['name']}]({data['url']})**\n"
- page += data['summary'] + "\n\n" if 'summary' in keys else "\n"
+ page += data['summary'] + "\n\n" if 'summary' in data else "\n"
# Add release date if key is in game information
- if 'first_release_date' in keys:
+ if 'first_release_date' in data:
page += f"**Release Date:** {datetime.utcfromtimestamp(data['first_release_date']).date()}\n"
# Add other information
- page += f"**Rating:** {'{0:.2f}'.format(data['total_rating']) if 'total_rating' in keys else '?'}/100 "
- page += f":star: (based on {data['total_rating_count'] if 'total_rating_count' in keys else '?'})\n"
+ page += f"**Rating:** {'{0:.2f}'.format(data['total_rating']) if 'total_rating' in data else '?'}/100 "
+ page += f":star: (based on {data['total_rating_count'] if 'total_rating_count' in data else '?'})\n"
page += f"**Platforms:** "
- page += f"{', '.join(pf['name'] for pf in data['platforms']) if 'platforms' in keys else '?'}\n"
+ page += f"{', '.join(pf['name'] for pf in data['platforms']) if 'platforms' in data else '?'}\n"
- page += f"**Status:** {GameStatus(data['status']).name if 'status' in keys else '?'}\n"
+ page += f"**Status:** {GameStatus(data['status']).name if 'status' in data else '?'}\n"
- if 'age_ratings' in keys:
+ if 'age_ratings' in data:
rating = f"""{', '.join(AgeRatingCategories(age['category']).name + ' ' + AgeRatings(age['rating']).name
for age in data['age_ratings'])}"""
page += f"**Age Ratings:** {rating}\n"
@@ -245,7 +251,7 @@ limit {limit};
page += f"**Made by:** {companies}\n"
page += "\n"
- page += data['storyline'] if 'storyline' in data.keys() else ''
+ page += data['storyline'] if 'storyline' in data else ''
return page, url
@@ -296,8 +302,7 @@ offset {offset};"""
pages = []
# Loop over companies, add them to pages listing and return pages
- for co in data:
- pages.append(await self.create_company_page(co))
+ [pages.append(await self.create_company_page(co)) for co in data]
return pages