Skip to content

Instantly share code, notes, and snippets.

@PhantomNimbi
Last active July 5, 2022 06:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PhantomNimbi/b49abc8594e426b9afe01fbc2f60c1e8 to your computer and use it in GitHub Desktop.
Save PhantomNimbi/b49abc8594e426b9afe01fbc2f60c1e8 to your computer and use it in GitHub Desktop.
Pylon Waifu Command using Waifu.Pics API
import * as app from '../config';
let config = {
slashCommands: discord.interactions.commands,
permissions: {
manage_channels: discord.Permissions.MANAGE_CHANNELS,
},
logger: {
channel: '927217111342936074',
color: discord.decor.RoleColors.DARK_RED,
},
embeds: {
color: discord.decor.RoleColors.BLUE,
banner_image:
'https://raw.githubusercontent.com/Waifu-pics/waifu-api/master/.github/assets/banner.png',
},
tags: {
sfw: [
'waifu',
'neko',
'shinobu',
'megumin',
'bully',
'cuddle',
'cry',
'hug',
'awoo',
'kiss',
'lick',
'pat',
'smug',
'bonk',
'yeet',
'blush',
'smile',
'wave',
'highfive',
'handhold',
'nom',
'bite',
'glomp',
'slap',
'kill',
'kick',
'happy',
'wink',
'poke',
'dance',
'cringe',
],
nsfw: ['waifu', 'neko', 'trap', 'blowjob'],
},
options: ['sfw', 'nsfw', 'about'],
};
let slashCommands = config.slashCommands;
let commands = {
tags: {
sfw: config.tags.sfw,
nsfw: config.tags.nsfw,
},
options: config.options,
};
const logger = {
channel_id: config.logger.channel,
embed_color: config.logger.color,
};
const embeds = {
color: {
blue: config.embeds.color,
},
image: config.embeds.banner_image,
};
slashCommands.register(
{
name: 'waifu',
description: 'Get a random waifu image by tag',
ackBehavior: slashCommands.AckBehavior.AUTO_EPHEMERAL,
options: (opts) => ({
choice: opts.string({
name: 'tag',
description: 'Select a tag',
required: false,
}),
type: opts.string({
name: 'option',
description: 'Select an option',
required: false,
choices: ['sfw', 'nsfw', 'about'],
}),
}),
},
async (interaction, { type, choice }) => {
let self = await discord.getBotUser();
if (type == 'about') {
let sfw_list = commands.tags.sfw.toString().replaceAll(',', ', ');
let nsfw_list = commands.tags.nsfw.toString().replaceAll(',', ', ');
let options_list = commands.options.toString().replaceAll(',', ', ');
let embed = new discord.Embed()
.setTitle('Waifu Tags')
.setDescription(
[
'Here is a list of available tags for use with the `/waifu` command.',
'',
].join('\n')
)
.setFields([
{
name: 'Options',
value: '```\n' + options_list + '\n```',
inline: false,
},
{
name: 'SFW Tags',
value: '```\n' + sfw_list + '\n```',
inline: false,
},
{
name: 'NSFW Tags',
value: '```\n' + nsfw_list + '\n```',
inline: false,
},
])
.setImage({ url: embeds.image })
.setTimestamp(new Date().toISOString())
.setColor(embeds.color.blue)
.setFooter({
text: 'Powered by ' + self.username,
iconUrl: self.getAvatarUrl(),
});
await interaction.respond({ embeds: [embed] }).catch((_) => {
interaction.respondEphemeral(
[
':warning: **__Error Triggered__** :warning:',
'',
'```ts',
`${_}`,
'```',
].join('\n')
);
console.log(
`>> | (${_.code}) ${_.name}: ${_.message} \n------------------------------------------------------------\n${_.stack}`
);
});
} else {
let logChannel = await discord.getTextChannel(logger.channel_id);
if (type && choice) {
let req = await fetch(`https://waifu.pics/api/${type}/${choice}`);
let data = await req.json();
let url = data['url'];
let embed = new discord.Embed()
.setDescription(`Direct Link: [Link](${url})`)
.setImage({ url: url })
.setTimestamp(new Date().toISOString())
.setColor(embeds.color.blue)
.setFooter({
text: 'Powered by ' + self.username,
iconUrl: self.getAvatarUrl(),
});
await interaction.respond({ embeds: [embed] }).catch((_) => {
interaction.respondEphemeral(
[
':warning: **__Error Triggered__** :warning:',
'',
'```ts',
`${_}`,
'```',
].join('\n')
);
console.log(
`>> | (${_.code}) ${_.name}: ${_.message} \n------------------------------------------------------------\n${_.stack}`
);
let embed = new discord.Embed()
.setTitle(':warning: Error Triggered :warning:')
.setFields([
{
name: 'Error Code',
value: '```ts\n' + _.code + '\n```',
inline: true,
},
{
name: 'Error Name',
value: '```ts\n' + _.name + '\n```',
inline: true,
},
{ name: 'Error Message', value: _.message, inline: false },
{
name: 'Error Stack',
value: ['```ts', `${_.stack}`, '```'].join('\n'),
inline: false,
},
])
.setColor(logger.embed_color)
.setTimestamp(new Date().toISOString())
.setFooter({
text: 'Powered by ' + self.username,
iconUrl: self.getAvatarUrl(),
});
logChannel?.sendMessage(embed);
});
}
}
}
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment