50 lines
1.5 KiB
TypeScript
50 lines
1.5 KiB
TypeScript
|
|
import { ChatInputCommandInteraction, EmbedBuilder, SlashCommandBuilder } from "discord.js";
|
||
|
|
import { MediaWikiClient } from '../mediawiki';
|
||
|
|
|
||
|
|
const pageSources = {
|
||
|
|
'cittadeldank': {
|
||
|
|
url: 'https://wiki.cittadeldank.it',
|
||
|
|
name: 'Città del Dank'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
const pageSourcesAuto = [
|
||
|
|
'cittadeldank'
|
||
|
|
];
|
||
|
|
|
||
|
|
const data = new SlashCommandBuilder()
|
||
|
|
.setName('wiki')
|
||
|
|
.setDescription('Mostra la pagina wiki di un argomento')
|
||
|
|
.addStringOption(o => o.setName('p')
|
||
|
|
.setDescription('Il nome della pagina')
|
||
|
|
.setRequired(true)
|
||
|
|
)
|
||
|
|
.addStringOption(o => o.setName('source')
|
||
|
|
.setDescription('Dove guardare')
|
||
|
|
.addChoices([
|
||
|
|
{name: 'Città del Dank', value: 'cittadeldank'},
|
||
|
|
{name: 'Automatico', value: 'auto'}
|
||
|
|
])
|
||
|
|
.setRequired(false)
|
||
|
|
);
|
||
|
|
|
||
|
|
async function execute (interaction: ChatInputCommandInteraction) {
|
||
|
|
await interaction.deferReply();
|
||
|
|
|
||
|
|
const siteChoice = interaction.options.getString('source') ?? 'auto';
|
||
|
|
const { name: siteName, url: siteUrl } = pageSources[siteChoice];
|
||
|
|
const mwClient = new MediaWikiClient(siteUrl);
|
||
|
|
const pageData = await mwClient.getPage(interaction.options.getString('p'));
|
||
|
|
|
||
|
|
const pageEmbed = new EmbedBuilder()
|
||
|
|
.setTitle(pageData.title)
|
||
|
|
.setURL(pageData.url)
|
||
|
|
.setDescription(pageData.content)
|
||
|
|
.setFooter({
|
||
|
|
text: `Informazioni da ${siteName}`
|
||
|
|
});
|
||
|
|
|
||
|
|
await interaction.followUp({
|
||
|
|
embeds: [pageEmbed]
|
||
|
|
});
|
||
|
|
}
|