Compare commits

...

2 Commits

Author SHA1 Message Date
Thibaut Broggi 689821dd02
Display parameters in error handling 2021-02-23 11:58:07 +01:00
Thibaut Broggi 81c9127153
Add a generic error handling process 2021-02-23 11:49:47 +01:00
2 changed files with 32 additions and 21 deletions

View File

@ -36,8 +36,24 @@ class GuildsManager {
if (!this.#guilds[guild_id]?.[guild_action.target]?.[guild_action.action]) {
message.channel.send(`The command ${guild_action.target} ${guild_action.action} is not implemented yet`)
} else {
const output = await this.#guilds[guild_id][guild_action.target][guild_action.action](guild_action)
return output
try {
const output = await this.#guilds[guild_id][guild_action.target][guild_action.action](guild_action)
return output
} catch (e) {
const error_message = await message.channel.send(":warning: Something went wrong. React with :eyes: to get more information about this error.")
error_message.react("👀")
error_message.awaitReactions((r, u) => r.emoji.name === "👀" && u.id !== error_message.author.id, {max: 1})
.then(() => {
message.channel.send(`Target manager: **${guild_action.target}** Action: **${guild_action.action}** Parameters: **${guild_action.params.join(', ')}**`
+ "\n"
+ `Original message: \`${guild_action.message}\``
+ "\n"
+ "```js\n"
+ e.stack
+ "\n```")
})
return null
}
}
}
}

View File

@ -15,26 +15,21 @@ class Youtube {
* @return {Track[]} An array of objects representing the search results. <code>source</code> is set to <code>"youtube"</code>
*/
async search_track(search) {
try {
const req = await fetch('https://www.youtube.com/results?search_query='
+ encodeURIComponent(search))
const body = await req.text()
const json = JSON.parse(body.match(/ytInitialData = (.*);<\/script>/)[1])
const results = json.contents.twoColumnSearchResultsRenderer.primaryContents.sectionListRenderer.contents[0].itemSectionRenderer.contents
return results
.filter(e => e.videoRenderer)
.map(e => {
return new Track({
url: 'https://www.youtube.com/watch?v=' + e.videoRenderer.videoId,
title: e.videoRenderer.title.runs[0].text,
length: e.videoRenderer.lengthText.simpleText,
source: 'youtube',
})
const req = await fetch('https://www.youtube.com/results?search_query='
+ encodeURIComponent(search))
const body = await req.text()
const json = JSON.parse(body.match(/ytInitialData = (.*);<\/script>/)[1])
const results = json.contents.twoColumnSearchResultsRenderer.primaryContents.sectionListRenderer.contents[0].itemSectionRenderer.contents
return results
.filter(e => e.videoRenderer)
.map(e => {
return new Track({
url: 'https://www.youtube.com/watch?v=' + e.videoRenderer.videoId,
title: e.videoRenderer.title.runs[0].text,
length: e.videoRenderer.lengthText.simpleText,
source: 'youtube',
})
} catch(e) {
console.error(e)
return []
}
})
}
/**