mirror of
https://gitlab.com/bignutty/labscore.git
synced 2025-06-07 13:43:06 -04:00
add autocomplete to dictionary and urbandictionary
This commit is contained in:
parent
c3ac88ea3f
commit
74408053dc
5 changed files with 67 additions and 3 deletions
|
@ -7,6 +7,8 @@ const { link, iconPill } = require('#utils/markdown')
|
|||
const { editOrReply } = require('#utils/message')
|
||||
const { STATICS } = require('#utils/statics')
|
||||
|
||||
const { urbanDictionary } = require('#parameters').autocomplete;
|
||||
|
||||
// TODO: Turn this into a general purpose permissions constant
|
||||
const { Permissions, ApplicationCommandOptionTypes } = require("detritus-client/lib/constants");
|
||||
|
||||
|
@ -52,7 +54,7 @@ module.exports = {
|
|||
{
|
||||
name: 'term',
|
||||
description: 'Term to look up.',
|
||||
type: ApplicationCommandOptionTypes.TEXT,
|
||||
onAutoComplete: urbanDictionary,
|
||||
required: true
|
||||
},
|
||||
{
|
||||
|
|
|
@ -7,6 +7,8 @@ const { acknowledge } = require('#utils/interactions');
|
|||
const { link, iconPill, smallPill, icon, iconLinkPill, pill } = require('#utils/markdown')
|
||||
const { editOrReply } = require('#utils/message')
|
||||
|
||||
const { googleDictionary } = require('#parameters').autocomplete;
|
||||
|
||||
const { ApplicationCommandOptionTypes } = require('detritus-client/lib/constants');
|
||||
|
||||
const LABELS = {
|
||||
|
@ -64,7 +66,7 @@ module.exports = {
|
|||
{
|
||||
name: 'term',
|
||||
description: 'Term to look up.',
|
||||
type: ApplicationCommandOptionTypes.TEXT,
|
||||
onAutoComplete: googleDictionary,
|
||||
required: true
|
||||
},
|
||||
{
|
||||
|
|
34
labscore/parameters/autocomplete/googleDictionary.js
Normal file
34
labscore/parameters/autocomplete/googleDictionary.js
Normal file
|
@ -0,0 +1,34 @@
|
|||
|
||||
const { stringwrap } = require("#utils/markdown");
|
||||
const superagent = require("superagent");
|
||||
|
||||
module.exports = async (context)=>{
|
||||
let choices = [];
|
||||
if(context.value){
|
||||
try {
|
||||
let suggestions = await superagent.get("https://www.google.com/complete/search")
|
||||
.query({
|
||||
client: "dictionary-widget",
|
||||
hl: "en",
|
||||
requiredfields: "corpus:en-us",
|
||||
q: context.value
|
||||
})
|
||||
|
||||
suggestions = JSON.parse(suggestions.text.substring(19,suggestions.text.length - 1))
|
||||
choices = suggestions[1].map((m)=>m[0])
|
||||
|
||||
// Additional checks
|
||||
if(choices.includes(context.value.toLowerCase())) {
|
||||
choices = choices.filter((m)=>m!==context.value.toLowerCase())
|
||||
choices.unshift(context.value.toLowerCase())
|
||||
}
|
||||
}catch(e){
|
||||
// idk sucks ig?
|
||||
}
|
||||
}
|
||||
|
||||
return context.respond({ choices: choices.splice(0, 20).map((l)=>({
|
||||
name: l,
|
||||
value: l
|
||||
}))});
|
||||
}
|
24
labscore/parameters/autocomplete/urbanDictionary.js
Normal file
24
labscore/parameters/autocomplete/urbanDictionary.js
Normal file
|
@ -0,0 +1,24 @@
|
|||
|
||||
const { stringwrap } = require("#utils/markdown");
|
||||
const superagent = require("superagent");
|
||||
|
||||
module.exports = async (context)=>{
|
||||
let choices = [];
|
||||
if(context.value){
|
||||
try {
|
||||
let suggestions = await superagent.get("https://api.urbandictionary.com/v0/autocomplete-extra")
|
||||
.query({
|
||||
term: context.value
|
||||
})
|
||||
|
||||
choices = suggestions.body.results
|
||||
}catch(e){
|
||||
// idk sucks ig?
|
||||
}
|
||||
}
|
||||
|
||||
return context.respond({ choices: choices.splice(0, 20).map((l)=>({
|
||||
name: `${l.term} - ${stringwrap(l.preview, 20, false)}`,
|
||||
value: l.term
|
||||
}))});
|
||||
}
|
|
@ -1,5 +1,7 @@
|
|||
module.exports = {
|
||||
autocomplete: {
|
||||
translateLanguage: require('./autocomplete/translateLanguage')
|
||||
googleDictionary: require('./autocomplete/googleDictionary'),
|
||||
translateLanguage: require('./autocomplete/translateLanguage'),
|
||||
urbanDictionary: require('./autocomplete/urbanDictionary')
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue