mirror of
https://gitlab.com/bignutty/labscore.git
synced 2025-06-10 07:03:08 -04:00
wip
This commit is contained in:
parent
7195d43c74
commit
6173b085a3
26 changed files with 1112 additions and 91 deletions
67
commands/message/search/bing-images.js
Normal file
67
commands/message/search/bing-images.js
Normal file
|
@ -0,0 +1,67 @@
|
|||
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
|
||||
const { link } = require('../../../labscore/utils/markdown')
|
||||
const { editOrReply } = require('../../../labscore/utils/message')
|
||||
const { STATICS } = require('../../../labscore/utils/statics')
|
||||
|
||||
const { paginator } = require('../../../labscore/client');
|
||||
const { bingImages } = require('../../../labscore/api');
|
||||
|
||||
function createImageResultPage(context, result){
|
||||
let res = {
|
||||
"embeds": [
|
||||
createEmbed("default", context, {
|
||||
description: `**${link(result.url, result.title)}**`,
|
||||
image: {
|
||||
url: result.image
|
||||
},
|
||||
footer: {
|
||||
iconUrl: STATICS.bing,
|
||||
text: `Microsoft Bing • ${context.application.name}`
|
||||
}
|
||||
})
|
||||
]
|
||||
}
|
||||
if(result.thumbnail) res.embeds[0].thumbnail = { url: result.thumbnail };
|
||||
return res;
|
||||
}
|
||||
|
||||
const reactions = {
|
||||
previousPage: "⬅️",
|
||||
nextPage: "➡️"
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
name: 'bingimage',
|
||||
label: 'query',
|
||||
aliases: ['bi', 'img2'],
|
||||
metadata: {
|
||||
description: 'bing image search',
|
||||
examples: ['bing Large Magenta Sphere'],
|
||||
category: 'search',
|
||||
usage: 'bing <query>'
|
||||
},
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
|
||||
try{
|
||||
let search = await bingImages(context, args.query)
|
||||
search = search.response
|
||||
|
||||
let pages = []
|
||||
for(const res of search.body.results){
|
||||
pages.push(createImageResultPage(context, res))
|
||||
}
|
||||
|
||||
pages = formatPaginationEmbeds(pages)
|
||||
const message = context.message
|
||||
const paging = await paginator.createReactionPaginator({
|
||||
message,
|
||||
pages,
|
||||
reactions
|
||||
});
|
||||
}catch(e){
|
||||
console.log(e)
|
||||
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform google search.`)]})
|
||||
}
|
||||
},
|
||||
};
|
63
commands/message/search/bing.js
Normal file
63
commands/message/search/bing.js
Normal file
|
@ -0,0 +1,63 @@
|
|||
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
|
||||
const { link } = require('../../../labscore/utils/markdown')
|
||||
const { editOrReply } = require('../../../labscore/utils/message')
|
||||
const { STATICS } = require('../../../labscore/utils/statics')
|
||||
|
||||
const { paginator } = require('../../../labscore/client');
|
||||
const { bing } = require('../../../labscore/api');
|
||||
|
||||
function createSearchResultPage(context, result){
|
||||
let res = {
|
||||
"embeds": [
|
||||
createEmbed("default", context, {
|
||||
description: `**${link(result.url, result.title)}**\n${result.snippet}`,
|
||||
footer: {
|
||||
iconUrl: STATICS.bing,
|
||||
text: `Microsoft Bing • ${context.application.name}`
|
||||
}
|
||||
})
|
||||
]
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
const reactions = {
|
||||
previousPage: "⬅️",
|
||||
nextPage: "➡️"
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
name: 'bing',
|
||||
label: 'query',
|
||||
aliases: ['b', 'search2'],
|
||||
metadata: {
|
||||
description: 'bing search',
|
||||
examples: ['bing Flask'],
|
||||
category: 'search',
|
||||
usage: 'bing <query>'
|
||||
},
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
|
||||
try{
|
||||
let search = await bing(context, args.query)
|
||||
search = search.response
|
||||
|
||||
let pages = []
|
||||
for(const res of search.body.results){
|
||||
pages.push(createSearchResultPage(context, res))
|
||||
}
|
||||
|
||||
pages = formatPaginationEmbeds(pages)
|
||||
const message = context.message
|
||||
const paging = await paginator.createReactionPaginator({
|
||||
message,
|
||||
pages,
|
||||
reactions
|
||||
});
|
||||
}catch(e){
|
||||
console.log(e)
|
||||
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform google search.`)]})
|
||||
}
|
||||
},
|
||||
};
|
67
commands/message/search/google-images.js
Normal file
67
commands/message/search/google-images.js
Normal file
|
@ -0,0 +1,67 @@
|
|||
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
|
||||
const { link } = require('../../../labscore/utils/markdown')
|
||||
const { editOrReply } = require('../../../labscore/utils/message')
|
||||
const { STATICS } = require('../../../labscore/utils/statics')
|
||||
|
||||
const { paginator } = require('../../../labscore/client');
|
||||
const { googleImages } = require('../../../labscore/api');
|
||||
|
||||
function createImageResultPage(context, result){
|
||||
let res = {
|
||||
"embeds": [
|
||||
createEmbed("default", context, {
|
||||
description: `**${link(result.url, result.title)}**`,
|
||||
image: {
|
||||
url: result.image
|
||||
},
|
||||
footer: {
|
||||
iconUrl: STATICS.google,
|
||||
text: `Google Images • ${context.application.name}`
|
||||
}
|
||||
})
|
||||
]
|
||||
}
|
||||
if(result.thumbnail) res.embeds[0].thumbnail = { url: result.thumbnail };
|
||||
return res;
|
||||
}
|
||||
|
||||
const reactions = {
|
||||
previousPage: "⬅️",
|
||||
nextPage: "➡️"
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
name: 'image',
|
||||
label: 'query',
|
||||
aliases: ['i', 'img'],
|
||||
metadata: {
|
||||
description: 'google image search',
|
||||
examples: ['image Large Magenta Sphere'],
|
||||
category: 'search',
|
||||
usage: 'image <query>'
|
||||
},
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
|
||||
try{
|
||||
let search = await googleImages(context, args.query)
|
||||
search = search.response
|
||||
|
||||
let pages = []
|
||||
for(const res of search.body.results){
|
||||
pages.push(createImageResultPage(context, res))
|
||||
}
|
||||
|
||||
pages = formatPaginationEmbeds(pages)
|
||||
const message = context.message
|
||||
const paging = await paginator.createReactionPaginator({
|
||||
message,
|
||||
pages,
|
||||
reactions
|
||||
});
|
||||
}catch(e){
|
||||
console.log(e)
|
||||
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform google search.`)]})
|
||||
}
|
||||
},
|
||||
};
|
64
commands/message/search/google.js
Normal file
64
commands/message/search/google.js
Normal file
|
@ -0,0 +1,64 @@
|
|||
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
|
||||
const { link } = require('../../../labscore/utils/markdown')
|
||||
const { editOrReply } = require('../../../labscore/utils/message')
|
||||
const { STATICS } = require('../../../labscore/utils/statics')
|
||||
|
||||
const { paginator } = require('../../../labscore/client');
|
||||
const { google } = require('../../../labscore/api');
|
||||
|
||||
function createSearchResultPage(context, result){
|
||||
let res = {
|
||||
"embeds": [
|
||||
createEmbed("default", context, {
|
||||
description: `**${link(result.url, result.title)}**\n${result.content}`,
|
||||
footer: {
|
||||
iconUrl: STATICS.google,
|
||||
text: `Google • ${context.application.name}`
|
||||
}
|
||||
})
|
||||
]
|
||||
}
|
||||
if(result.thumbnail) res.embeds[0].thumbnail = { url: result.thumbnail };
|
||||
return res;
|
||||
}
|
||||
|
||||
const reactions = {
|
||||
previousPage: "⬅️",
|
||||
nextPage: "➡️"
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
name: 'google',
|
||||
label: 'query',
|
||||
aliases: ['g', 'search'],
|
||||
metadata: {
|
||||
description: 'google search',
|
||||
examples: ['google Flask'],
|
||||
category: 'search',
|
||||
usage: 'google <query>'
|
||||
},
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
|
||||
try{
|
||||
let search = await google(context, args.query)
|
||||
search = search.response
|
||||
|
||||
let pages = []
|
||||
for(const res of search.body.results){
|
||||
pages.push(createSearchResultPage(context, res))
|
||||
}
|
||||
|
||||
pages = formatPaginationEmbeds(pages)
|
||||
const message = context.message
|
||||
const paging = await paginator.createReactionPaginator({
|
||||
message,
|
||||
pages,
|
||||
reactions
|
||||
});
|
||||
}catch(e){
|
||||
console.log(e)
|
||||
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform google search.`)]})
|
||||
}
|
||||
},
|
||||
};
|
93
commands/message/search/lyrics.js
Normal file
93
commands/message/search/lyrics.js
Normal file
|
@ -0,0 +1,93 @@
|
|||
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
|
||||
const { editOrReply } = require('../../../labscore/utils/message')
|
||||
const { STATICS } = require('../../../labscore/utils/statics')
|
||||
|
||||
const { lyrics } = require('../../../labscore/api');
|
||||
const { paginator } = require('../../../labscore/client');
|
||||
|
||||
const reactions = {
|
||||
previousPage: "⬅️",
|
||||
nextPage: "➡️"
|
||||
};
|
||||
|
||||
function createLyricsPage(context, search, fields){
|
||||
let em= createEmbed("default", context, {
|
||||
description: `**${search.body.song.title}**\n*Released ${search.body.song.release}*\n\n`,
|
||||
fields: fields,
|
||||
footer: {
|
||||
iconUrl: STATICS.genius,
|
||||
text: `Genius • ${context.application.name}`
|
||||
}
|
||||
})
|
||||
if(search.body.song.image) em.thumbnail = { url: search.body.song.image }
|
||||
return em;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
name: 'lyrics',
|
||||
label: 'query',
|
||||
metadata: {
|
||||
description: 'Searches for song lyrics on Genius.',
|
||||
examples: ['lyrics desert bloom man'],
|
||||
category: 'search',
|
||||
usage: 'lyrics <query>'
|
||||
},
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
|
||||
try{
|
||||
let search = await lyrics(context, args.query)
|
||||
search = search.response
|
||||
|
||||
// Split lyrics into field-sizes chunks
|
||||
let chunks = search.body.lyrics.split(/\[(.*?)\]/) // should give us every chunk
|
||||
let fields = [];
|
||||
let cur = {
|
||||
inline: false
|
||||
};
|
||||
let i = 0;
|
||||
let l = 0;
|
||||
for(const c of chunks){
|
||||
if(c.length == 0) continue;
|
||||
if(i == 0){
|
||||
cur.name = `[${c}]`
|
||||
i += 1
|
||||
continue;
|
||||
}
|
||||
cur.value = c.substr(0,1024) + ``
|
||||
i = 0
|
||||
fields.push(cur)
|
||||
cur = {
|
||||
inline: false
|
||||
}
|
||||
}
|
||||
|
||||
if(fields.length > 3){
|
||||
let pages = []
|
||||
while(fields.length) {
|
||||
pages.push({embeds:[createLyricsPage(context, search, fields.splice(0,3))]})
|
||||
}
|
||||
const message = context.message
|
||||
|
||||
pages = formatPaginationEmbeds(pages)
|
||||
const paging = await paginator.createReactionPaginator({
|
||||
message,
|
||||
pages,
|
||||
reactions
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
return editOrReply(context, {embeds: [createLyricsPage(context, search, fields)]})
|
||||
|
||||
}catch(e){
|
||||
if(e.response?.body?.status){
|
||||
if(e.response.body.status == 2){
|
||||
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform lyrics search.`)]})
|
||||
}
|
||||
}
|
||||
console.log(e)
|
||||
return editOrReply(context, {embeds:[createEmbed("error", context, `Something went wrong.`)]})
|
||||
}
|
||||
},
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue