Skip to content

Commit

Permalink
[ci] format
Browse files Browse the repository at this point in the history
  • Loading branch information
mandar1jn authored and astrobot-houston committed Feb 7, 2024
1 parent f56ec31 commit b651595
Show file tree
Hide file tree
Showing 2 changed files with 200 additions and 206 deletions.
228 changes: 113 additions & 115 deletions src/commands/docs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -144,150 +144,148 @@ const command: Command = {
return true;
},
async execute(client) {
client.ctx.waitUntil(
async () => {
let query = getStringOption(client.interaction.data, 'query')!;

if (query.startsWith('auto-')) {
const reply: SearchHit = await index.getObject(query.substring(5));
await returnObjectResult(client.interaction, reply, client.env);
return;
}
client.ctx.waitUntil(async () => {
let query = getStringOption(client.interaction.data, 'query')!;

if (query.startsWith('user-')) {
query = query.substring(5);
}
if (query.startsWith('auto-')) {
const reply: SearchHit = await index.getObject(query.substring(5));
await returnObjectResult(client.interaction, reply, client.env);
return;
}

const reply = await index.search<SearchHit>(query, {
facetFilters: [['lang:' + (getStringOption(client.interaction.data, 'language') ?? 'en')]],
highlightPreTag: '**',
highlightPostTag: '**',
hitsPerPage: 20,
snippetEllipsisText: '…',
attributesToRetrieve: [
'hierarchy.lvl0',
'hierarchy.lvl1',
'hierarchy.lvl2',
'hierarchy.lvl3',
'hierarchy.lvl4',
'hierarchy.lvl5',
'hierarchy.lvl6',
'content',
'type',
'url',
],
attributesToSnippet: [
'hierarchy.lvl1:10',
'hierarchy.lvl2:10',
'hierarchy.lvl3:10',
'hierarchy.lvl4:10',
'hierarchy.lvl5:10',
'hierarchy.lvl6:10',
'content:10',
],
});

console.log(reply);

const items = reply.hits.map((hit) => {
const url = new URL(hit.url);
if (url.hash == '#overview') url.hash = '';

return {
...hit,
url: url.href,
};
});

const categories: categories = {};

items.forEach((item) => {
if (!categories[item.hierarchy.lvl0]) {
categories[item.hierarchy.lvl0] = [];
}
categories[item.hierarchy.lvl0].push(item);
});
if (query.startsWith('user-')) {
query = query.substring(5);
}

// exclude tutorials
delete categories['Tutorials'];
const reply = await index.search<SearchHit>(query, {
facetFilters: [['lang:' + (getStringOption(client.interaction.data, 'language') ?? 'en')]],
highlightPreTag: '**',
highlightPostTag: '**',
hitsPerPage: 20,
snippetEllipsisText: '…',
attributesToRetrieve: [
'hierarchy.lvl0',
'hierarchy.lvl1',
'hierarchy.lvl2',
'hierarchy.lvl3',
'hierarchy.lvl4',
'hierarchy.lvl5',
'hierarchy.lvl6',
'content',
'type',
'url',
],
attributesToSnippet: [
'hierarchy.lvl1:10',
'hierarchy.lvl2:10',
'hierarchy.lvl3:10',
'hierarchy.lvl4:10',
'hierarchy.lvl5:10',
'hierarchy.lvl6:10',
'content:10',
],
});

const embeds: EmbedBuilder[] = [];
console.log(reply);

console.log(embeds);
const items = reply.hits.map((hit) => {
const url = new URL(hit.url);
if (url.hash == '#overview') url.hash = '';

embeds.push(getDefaultEmbed().setTitle(`Results for "${query}"`));
return {
...hit,
url: url.href,
};
});

for (const category in categories) {
const embed = getDefaultEmbed().setTitle(decode(category));
const categories: categories = {};

let body = '';
items.forEach((item) => {
if (!categories[item.hierarchy.lvl0]) {
categories[item.hierarchy.lvl0] = [];
}
categories[item.hierarchy.lvl0].push(item);
});

let items: { [heading: string]: SearchHit[] } = {};
// exclude tutorials
delete categories['Tutorials'];

for (let i = 0; i < categories[category].length && i < 5; i++) {
const item = categories[category][i];
if (!item._snippetResult) return;
const embeds: EmbedBuilder[] = [];

if (!items[item.hierarchy[`lvl1`]]) {
items[item.hierarchy[`lvl1`]] = [];
}
console.log(embeds);

items[item.hierarchy[`lvl1`]].push(item);
}
embeds.push(getDefaultEmbed().setTitle(`Results for "${query}"`));

for (const subjectName in items) {
const subject = items[subjectName];
for (const category in categories) {
const embed = getDefaultEmbed().setTitle(decode(category));

for (let i = 0; i < subject.length; i++) {
const item = subject[i];
let body = '';

let hierarchy = '';
let items: { [heading: string]: SearchHit[] } = {};

for (let i = 1; i < 7; i++) {
if (item.hierarchy[`lvl${i}`]) {
let string = i != 1 ? ' > ' : '';
for (let i = 0; i < categories[category].length && i < 5; i++) {
const item = categories[category][i];
if (!item._snippetResult) return;

string += item.hierarchy[`lvl${i}`];
if (!items[item.hierarchy[`lvl1`]]) {
items[item.hierarchy[`lvl1`]] = [];
}

hierarchy += string;
} else {
break;
}
}
items[item.hierarchy[`lvl1`]].push(item);
}

let result = '';
for (const subjectName in items) {
const subject = items[subjectName];

if (item._snippetResult) {
if (item.type == 'content') {
result = item._snippetResult.content.value;
} else {
result = item._snippetResult.hierarchy[item.type].value;
}
for (let i = 0; i < subject.length; i++) {
const item = subject[i];

body += decode(`[🔗](${item.url}) **${hierarchy}**\n`);
body += decode(`[${result.substring(0, 66)}](${item.url})\n`);
let hierarchy = '';

for (let i = 1; i < 7; i++) {
if (item.hierarchy[`lvl${i}`]) {
let string = i != 1 ? ' > ' : '';

string += item.hierarchy[`lvl${i}`];

hierarchy += string;
} else {
break;
}
}
}

embed.setDescription(body);
let result = '';

embeds.push(embed);
}
if (item._snippetResult) {
if (item.type == 'content') {
result = item._snippetResult.content.value;
} else {
result = item._snippetResult.hierarchy[item.type].value;
}

if (embeds.length == 1) {
embeds[0].setTitle(`No results found for "${query}"`);
body += decode(`[🔗](${item.url}) **${hierarchy}**\n`);
body += decode(`[${result.substring(0, 66)}](${item.url})\n`);
}
}
}

await rest.patch(Routes.webhookMessage(client.env.DISCORD_CLIENT_ID, client.interaction.token, '@original'), {
body: {
type: InteractionResponseType.UpdateMessage,
embeds: embeds.map((embed) => embed.toJSON()),
},
});
return true;
embed.setDescription(body);

embeds.push(embed);
}

if (embeds.length == 1) {
embeds[0].setTitle(`No results found for "${query}"`);
}
);

await rest.patch(Routes.webhookMessage(client.env.DISCORD_CLIENT_ID, client.interaction.token, '@original'), {
body: {
type: InteractionResponseType.UpdateMessage,
embeds: embeds.map((embed) => embed.toJSON()),
},
});
return true;
});

return client.deferReply();
},
Expand Down
Loading

0 comments on commit b651595

Please sign in to comment.