2
0
mirror of https://github.com/Nick80835/microbot synced 2025-08-22 18:19:16 +00:00
microbot/ubot/modules/urbandict.py

84 lines
2.4 KiB
Python
Raw Normal View History

2023-10-16 09:46:31 -04:00
import io
2020-09-13 13:50:36 -04:00
from ubot import ldr
2023-10-16 09:46:31 -04:00
UD_QUERY_URL = 'http://api.urbandictionary.com/v0/define'
UD_RANDOM_URL = 'http://api.urbandictionary.com/v0/random'
2020-07-21 09:44:28 -04:00
@ldr.add("ud", help="Fetches words from Urban Dictionary, takes an optional word as an argument.")
2023-10-16 09:46:31 -04:00
async def urban_dict(event):
2020-05-02 16:40:26 -04:00
udquery = event.args
2023-10-16 09:46:31 -04:00
if udquery:
params = {'term': udquery}
url = UD_QUERY_URL
else:
params = None
url = UD_RANDOM_URL
2020-05-09 13:15:08 -04:00
async with ldr.aioclient.get(url, params=params) as response:
2023-10-16 09:46:31 -04:00
if response.status == 200:
response = await response.json()
else:
2020-06-06 11:04:14 -04:00
await event.reply(f"An error occurred, response code: **{response.status}**")
2023-10-16 09:46:31 -04:00
return
if response['list']:
response_word = response['list'][0]
else:
2020-06-06 11:04:14 -04:00
await event.reply(f"No results for query: **{udquery}**")
2023-10-16 09:46:31 -04:00
return
2020-05-25 14:24:15 -04:00
definition = f"**{response_word['word']}**: {response_word['definition']}"
2023-10-16 09:46:31 -04:00
if response_word['example']:
2020-05-25 14:24:15 -04:00
definition += f"\n\n**Example**: {response_word['example']}"
2023-10-16 09:46:31 -04:00
definition = definition.replace("[", "").replace("]", "")
if len(definition) >= 4096:
file_io = io.BytesIO()
file_io.write(bytes(definition.encode('utf-8')))
file_io.name = f"definition of {response_word['word']}.txt"
2020-10-11 15:45:32 -04:00
await event.reply("Output was too large, sent it as a file.", file=file_io)
2023-10-16 09:46:31 -04:00
return
await event.reply(definition)
2020-05-25 14:05:24 -04:00
@ldr.add_inline_article("ud", default="ud")
async def urban_dict_inline(event):
udquery = event.args
if udquery:
params = {'term': udquery}
url = UD_QUERY_URL
else:
params = None
url = UD_RANDOM_URL
async with ldr.aioclient.get(url, params=params) as response:
if response.status == 200:
response = await response.json()
else:
2020-08-02 08:23:54 -04:00
return
2020-05-25 14:05:24 -04:00
if response['list']:
2020-05-25 14:14:37 -04:00
response_words = response['list'][:10]
2020-05-25 14:05:24 -04:00
else:
2020-08-02 08:23:54 -04:00
return
2020-05-25 14:05:24 -04:00
definition_list = []
for word in response_words:
word['definition'] = word['definition'].replace("[", "").replace("]", "")
2020-05-25 14:24:15 -04:00
definition = {"title": word['word'], "description": word['definition'], "text": f"**{word['word']}**: {word['definition']}"}
2020-05-25 14:05:24 -04:00
if word['example']:
2020-05-25 14:24:15 -04:00
definition['text'] += f"\n\n**Example**: {word['example']}".replace("[", "").replace("]", "")
2020-05-25 14:05:24 -04:00
definition_list += [definition]
return definition_list