diff options
Diffstat (limited to 'bot')
| -rw-r--r-- | bot/seasons/evergreen/game.py | 65 |
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 |