aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Shivansh-007 <[email protected]>2021-02-25 10:36:59 +0530
committerGravatar Shivansh-007 <[email protected]>2021-02-25 10:36:59 +0530
commit439873db9749f2df7f0bfe02793aac80d3a708a6 (patch)
tree2182a08f36fda8b6d95667674502a591d0d394b1
parentAdd log.info() statement if the wikipedia api request status code is not 200 (diff)
Don't use enums for wikipedia error messages, use brackets instead of '\' for long variable values, pass in ctx.channel instead of the full ctx
-rw-r--r--bot/exts/evergreen/wikipedia.py49
1 files changed, 22 insertions, 27 deletions
diff --git a/bot/exts/evergreen/wikipedia.py b/bot/exts/evergreen/wikipedia.py
index 0b64136f..068c4f43 100644
--- a/bot/exts/evergreen/wikipedia.py
+++ b/bot/exts/evergreen/wikipedia.py
@@ -1,11 +1,10 @@
import logging
import re
from datetime import datetime
-from enum import Enum
from html import unescape
from typing import List, Optional
-from discord import Color, Embed
+from discord import Color, Embed, TextChannel
from discord.ext import commands
from bot.bot import Bot
@@ -13,10 +12,14 @@ from bot.utils import LinePaginator
log = logging.getLogger(__name__)
-SEARCH_API = "https://en.wikipedia.org/w/api.php?action=query&list=search&prop=info&inprop=url&utf8=& \
- format=json&origin=*&srlimit={number_of_results}&srsearch={string}"
-WIKI_THUMBNAIL = "https://upload.wikimedia.org/wikipedia/en/thumb/8/80/Wikipedia-logo-v2.svg" \
- "/330px-Wikipedia-logo-v2.svg.png"
+SEARCH_API = (
+ "https://en.wikipedia.org/w/api.php?action=query&list=search&prop=info&inprop=url&utf8=&"
+ "format=json&origin=*&srlimit={number_of_results}&srsearch={string}"
+)
+WIKI_THUMBNAIL = (
+ "https://upload.wikimedia.org/wikipedia/en/thumb/8/80/Wikipedia-logo-v2.svg"
+ "/330px-Wikipedia-logo-v2.svg.png"
+)
WIKI_SNIPPET_REGEX = r'(<!--.*?-->|<[^>]*>)'
WIKI_SEARCH_RESULT = (
"**[{name}]({url})**\n"
@@ -24,20 +27,13 @@ WIKI_SEARCH_RESULT = (
)
-class WikipediaSearchErrors(Enum):
- """Errors returned in wikipedia search function."""
-
- no_results = "Sorry, we could not find a wikipedia article using that search term."
- api_issue = "Whoops, the Wikipedia API is having some issues right now. Try again later."
-
-
class WikipediaSearch(commands.Cog):
"""Get info from wikipedia."""
def __init__(self, bot: Bot):
self.bot = bot
- async def wiki_request(self, ctx: commands.Context, search: str) -> Optional[List[str]]:
+ async def wiki_request(self, channel: TextChannel, search: str) -> Optional[List[str]]:
"""Search wikipedia search string and return formatted first 10 pages found."""
url = SEARCH_API.format(number_of_results=10, string=search)
async with self.bot.http_session.get(url=url) as resp:
@@ -50,37 +46,36 @@ class WikipediaSearch(commands.Cog):
lines = []
for article in results:
- formatting = {
- 'name': article['title'],
- 'description': unescape(
+ line = WIKI_SEARCH_RESULT.format(
+ name=article['title'],
+ description=unescape(
re.sub(
WIKI_SNIPPET_REGEX, '', article['snippet']
)
),
- 'url': f"https://en.wikipedia.org/?curid={article['pageid']}"
- }
- line = WIKI_SEARCH_RESULT.format(**formatting)
+ url=f"https://en.wikipedia.org/?curid={article['pageid']}"
+ )
lines.append(line)
return lines
else:
- await ctx.send(
- WikipediaSearchErrors.no_results.value
+ await channel.send(
+ "Sorry, we could not find a wikipedia article using that search term."
)
- return None
+ return
else:
log.info(f"Unexpected response `{resp.status}` while searching wikipedia for `{search}`")
- await ctx.send(
- WikipediaSearchErrors.api_issue.value
+ await channel.send(
+ "Whoops, the Wikipedia API is having some issues right now. Try again later."
)
- return None
+ return
@commands.cooldown(1, 10, commands.BucketType.user)
@commands.command(name="wikipedia", aliases=["wiki"])
async def wikipedia_search_command(self, ctx: commands.Context, *, search: str) -> None:
"""Sends paginated top 10 results of Wikipedia search.."""
- contents = await self.wiki_request(ctx, search)
+ contents = await self.wiki_request(ctx.channel, search)
if contents:
embed = Embed(