blob: e9781fc9cc3dbca20a5655bbb852f61510500054 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
import aiohttp
import discord
from redbot.core import commands
import re
import urllib.parse
class WPLink(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_message(self, message: discord.Message):
wikilink_pattern = r"\[\[(.+)\]\]"
match = re.search(wikilink_pattern, message.content)
if match is not None:
title = match.group(1)
page_url = await self.look_up_page(title)
if page_url is not None:
await message.reply(
page_url, allowed_mentions=discord.AllowedMentions.none()
)
async def look_up_page(self, title: str) -> str | None:
query_url = f"https://en.wikipedia.org/wiki/Special:Search?search={urllib.parse.quote(title)}&go=Go"
async with aiohttp.ClientSession() as session:
async with session.get(query_url) as response:
result_url = str(response.url)
return (
result_url
if not result_url.startswith(
"https://en.wikipedia.org/wiki/Special:Search?"
)
else None
)
|