diff options
Diffstat (limited to 'bot/exts/evergreen/stackoverflow.py')
-rw-r--r-- | bot/exts/evergreen/stackoverflow.py | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/bot/exts/evergreen/stackoverflow.py b/bot/exts/evergreen/stackoverflow.py index 0a1c339b..e97e0318 100644 --- a/bot/exts/evergreen/stackoverflow.py +++ b/bot/exts/evergreen/stackoverflow.py @@ -2,10 +2,10 @@ import logging from html import unescape from urllib.parse import quote_plus -from discord import Embed -from discord.errors import HTTPException +from discord import Embed, HTTPException from discord.ext import commands +from bot import bot from bot.constants import Colours, Emojis logger = logging.getLogger(__name__) @@ -16,16 +16,16 @@ ERR_EMBED = Embed( title="Error in fetching results from Stackoverflow", description=( "Sorry, there was en error while trying to fetch data from the Stackoverflow website. Please try again in some " - "time. If this issue persists, please contact the mods or send a message in #dev-contrib." + "time. If this issue persists, please contact the staff or send a message in #dev-contrib." ), color=Colours.soft_red ) class Stackoverflow(commands.Cog): - """A cog which returns the top 5 results of a query from stackoverflow.""" + """Contains command to interact with stackoverflow from discord.""" - def __init__(self, bot: commands.Bot): + def __init__(self, bot: bot.Bot): self.bot = bot @commands.command(aliases=["so"]) @@ -54,25 +54,24 @@ class Stackoverflow(commands.Cog): return top5 = data["items"][:5] - embed = Embed(title=f"Search results for {search_query!r} - Stackoverflow", - url=SEARCH_URL.format(query=encoded_search_query), - description=f"Here are the top {len(top5)} results:", - color=Colours.orange) - try: - for item in top5: - embed.add_field( - name=f"{unescape(item['title'])}", - value=(f"[{Emojis.stackoverflow_upvote} {item['score']} " - f"{Emojis.stackoverflow_views} {item['view_count']} " - f"{Emojis.stackoverflow_ans} {item['answer_count']} " - f"{Emojis.stackoverflow_tag} {', '.join(item['tags'][:3])}]" - f"({item['link']})"), - inline=False) - embed.set_footer(text="View the original link for more results.") - except KeyError: - logger.error(f'Data not found for stack overflow question "{search_query}" ') - await ctx.send(embed=ERR_EMBED) - return + embed = Embed( + title=f"Search results for {search_query!r} - Stackoverflow", + url=SEARCH_URL.format(query=encoded_search_query), + description=f"Here are the top {len(top5)} results:", + color=Colours.orange + ) + for item in top5: + embed.add_field( + name=unescape(item['title']), + value=( + f"[{Emojis.stackoverflow_upvote} {item['score']} " + f"{Emojis.stackoverflow_views} {item['view_count']} " + f"{Emojis.stackoverflow_ans} {item['answer_count']} " + f"{Emojis.stackoverflow_tag} {', '.join(item['tags'][:3])}]" + f"({item['link']})" + ), + inline=False) + embed.set_footer(text="View the original link for more results.") try: await ctx.send(embed=embed) except HTTPException: @@ -83,7 +82,7 @@ class Stackoverflow(commands.Cog): await ctx.send(embed=search_query_too_long) -def setup(bot: commands.Bot) -> None: +def setup(bot: bot.Bot) -> None: """Loads Stackoverflow Cog.""" bot.add_cog(Stackoverflow(bot)) |