mirror of
https://gitlab.com/bignutty/labscore.git
synced 2025-06-08 06:03:04 -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 { editOrReply } = require('#utils/message')
|
||||||
const { STATICS } = require('#utils/statics')
|
const { STATICS } = require('#utils/statics')
|
||||||
|
|
||||||
|
const { urbanDictionary } = require('#parameters').autocomplete;
|
||||||
|
|
||||||
// TODO: Turn this into a general purpose permissions constant
|
// TODO: Turn this into a general purpose permissions constant
|
||||||
const { Permissions, ApplicationCommandOptionTypes } = require("detritus-client/lib/constants");
|
const { Permissions, ApplicationCommandOptionTypes } = require("detritus-client/lib/constants");
|
||||||
|
|
||||||
|
@ -52,7 +54,7 @@ module.exports = {
|
||||||
{
|
{
|
||||||
name: 'term',
|
name: 'term',
|
||||||
description: 'Term to look up.',
|
description: 'Term to look up.',
|
||||||
type: ApplicationCommandOptionTypes.TEXT,
|
onAutoComplete: urbanDictionary,
|
||||||
required: true
|
required: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,6 +7,8 @@ const { acknowledge } = require('#utils/interactions');
|
||||||
const { link, iconPill, smallPill, icon, iconLinkPill, pill } = require('#utils/markdown')
|
const { link, iconPill, smallPill, icon, iconLinkPill, pill } = require('#utils/markdown')
|
||||||
const { editOrReply } = require('#utils/message')
|
const { editOrReply } = require('#utils/message')
|
||||||
|
|
||||||
|
const { googleDictionary } = require('#parameters').autocomplete;
|
||||||
|
|
||||||
const { ApplicationCommandOptionTypes } = require('detritus-client/lib/constants');
|
const { ApplicationCommandOptionTypes } = require('detritus-client/lib/constants');
|
||||||
|
|
||||||
const LABELS = {
|
const LABELS = {
|
||||||
|
@ -64,7 +66,7 @@ module.exports = {
|
||||||
{
|
{
|
||||||
name: 'term',
|
name: 'term',
|
||||||
description: 'Term to look up.',
|
description: 'Term to look up.',
|
||||||
type: ApplicationCommandOptionTypes.TEXT,
|
onAutoComplete: googleDictionary,
|
||||||
required: true
|
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 = {
|
module.exports = {
|
||||||
autocomplete: {
|
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