""" _ __ _____ ___ ___ ___ __| | ___ _ __ \ \ / / __|/ _ \/ __/ _ \ / _` |/ _ \ '__| \ V /\__ \ __/ (_| (_) | (_| | __/ | \_/ |___/\___|\___\___/ \__,_|\___|_| Copyleft 2022 t.me/vsecoder This program is free software; you can redistribute it and/or modify """ # meta developer: @vsecoder_m # meta pic: https://img.icons8.com/cute-clipart/344/wikipedia.png # meta banner: https://chojuu.vercel.app/api/banner?img=https://img.icons8.com/cute-clipart/344/wikipedia.png&title=Wikipedia&description=Module%20for%20wikipedia%20search __version__ = (1, 0, 0) import logging import wikipedia # type: ignore from .. import loader, utils # type: ignore logger = logging.getLogger(__name__) @loader.tds class WikiMod(loader.Module): """Module for wikipedia search""" strings = { "name": "Wikipedia🌐", "answer": "🌐 {0}:\n\n{2}\n\n{3}", "error": "❗️ {0}", } def __init__(self): self.config = loader.ModuleConfig( loader.ConfigValue( "wiki_lang", "en", "Language of wikipedia", validator=loader.validators.Choice(["en", "ru"]), ), ) async def client_ready(self, client, db): self._client = client async def wikicmd(self, message): """ - search in wikipedia """ args = utils.get_args_raw(message) try: wikipedia.set_lang(self.config["wiki_lang"]) except Exception: wikipedia.set_lang("en") try: page = wikipedia.page(args) await utils.answer( message, self.strings["answer"].format( utils.escape_html(page.title), page.images[0], utils.escape_html(page.summary), page.url, ), ) except wikipedia.exceptions.DisambiguationError as e: await utils.answer(message, self.strings["error"].format(e)) except wikipedia.exceptions.PageError as e: await utils.answer(message, self.strings["error"].format(e))