aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/exts/evergreen/stackoverflow.py49
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))