diff --git a/src/discord/commands/animals/bird.ts b/src/discord/commands/animals/bird.ts index 6ae93a5..f83d3bb 100644 --- a/src/discord/commands/animals/bird.ts +++ b/src/discord/commands/animals/bird.ts @@ -1,7 +1,7 @@ import { Context } from "@utils/types" import { Command } from "@modules/eu/src/index" import request from "@utils/animals" -import { MessageEmbed } from "discord.js" +import EmbeddingHandler from "@utils/Embed" export = class Bird extends Command { constructor() { @@ -14,18 +14,10 @@ export = class Bird extends Command { } async run(context: Context): Promise { - let { image, provider } = await request("bird") - // console.log({ image, provider }) - if (context.settings.embeds) { - let Embed = new MessageEmbed() - .setImage(image[0]) - .setFooter(`Thaldrin - Image provided by ${provider}`, "https://thaldrin.media/avatar.png") - .setColor("ORANGE") + let data = await request("bird") + let Embed = new EmbeddingHandler(context, data) - context.channel.send({ embeds: [Embed] }) - } - else { - context.channel.send(image[0]) - } + + return Embed.get() } } diff --git a/src/discord/commands/animals/cat.ts b/src/discord/commands/animals/cat.ts index f5de595..c27e56d 100644 --- a/src/discord/commands/animals/cat.ts +++ b/src/discord/commands/animals/cat.ts @@ -1,7 +1,7 @@ import { Context } from "@utils/types" import { Command } from "@modules/eu/src/index" import request from "@utils/animals" -import { MessageEmbed } from "discord.js" +import EmbeddingHandler from "@utils/Embed" export = class Cat extends Command { constructor() { @@ -13,18 +13,10 @@ export = class Cat extends Command { } async run(context: Context): Promise { - let { image, provider } = await request("cat") - // console.log({ image, provider }) - if (context.settings.embeds) { - let Embed = new MessageEmbed() - .setImage(image[0]) - .setFooter(`Thaldrin - Image provided by ${provider}`, "https://thaldrin.media/avatar.png") - .setColor("ORANGE") + let data = await request("cat") + let Embed = new EmbeddingHandler(context, data) - context.channel.send({ embeds: [Embed] }) - } - else { - context.channel.send(image[0]) - } + + return Embed.get() } } diff --git a/src/discord/commands/animals/fox.ts b/src/discord/commands/animals/fox.ts index 6560eeb..8f6f72a 100644 --- a/src/discord/commands/animals/fox.ts +++ b/src/discord/commands/animals/fox.ts @@ -1,7 +1,7 @@ import { Context } from "@utils/types" import { Command } from "@modules/eu/src/index" import request from "@utils/animals" -import { MessageEmbed } from "discord.js" +import EmbeddingHandler from "@utils/Embed" export = class Fox extends Command { constructor() { @@ -14,16 +14,9 @@ export = class Fox extends Command { async run(context: Context): Promise { let data = await request("fox") - if (context.settings.embeds) { - let Embed = new MessageEmbed() - .setImage(data.image.url) - .setFooter(`Thaldrin - Image provided by ${data.provider}`, "https://thaldrin.media/avatar.png") - .setColor("ORANGE") + let Embed = new EmbeddingHandler(context, data) - context.channel.send({ embeds: [Embed] }) - } - else { - context.channel.send(data.image.url) - } + + return Embed.get() } } diff --git a/src/discord/commands/animals/hyena.ts b/src/discord/commands/animals/hyena.ts index becb1a4..181cd0f 100644 --- a/src/discord/commands/animals/hyena.ts +++ b/src/discord/commands/animals/hyena.ts @@ -1,7 +1,7 @@ import { Context } from "@utils/types" import { Command } from "@modules/eu/src/index" import request from "@utils/animals" -import { MessageEmbed } from "discord.js" +import EmbeddingHandler from "@utils/Embed" export = class Hyena extends Command { constructor() { @@ -15,17 +15,9 @@ export = class Hyena extends Command { async run(context: Context): Promise { let data = await request("hyena") + let Embed = new EmbeddingHandler(context, data) - if (context.settings.embeds) { - let Embed = new MessageEmbed() - .setImage(data.image.url) - .setFooter(`Thaldrin - Image provided by ${data.provider}`, "https://thaldrin.media/avatar.png") - .setColor("ORANGE") - context.channel.send({ embeds: [Embed] }) - } - else { - context.channel.send(data.image.url) - } + return Embed.get() } } diff --git a/src/discord/commands/animals/shibe.ts b/src/discord/commands/animals/shibe.ts index 62c8db1..99f0bcd 100644 --- a/src/discord/commands/animals/shibe.ts +++ b/src/discord/commands/animals/shibe.ts @@ -1,7 +1,7 @@ import { Context } from "@utils/types" import { Command } from "@modules/eu/src/index" import request from "@utils/animals" -import { MessageEmbed } from "discord.js" +import EmbeddingHandler from "@utils/Embed" export = class Shibe extends Command { constructor() { @@ -13,18 +13,10 @@ export = class Shibe extends Command { } async run(context: Context): Promise { - let { image, provider } = await request("shibe") - // console.log({ image, provider }) - if (context.settings.embeds) { - let Embed = new MessageEmbed() - .setImage(image[0]) - .setFooter(`Thaldrin - Image provided by ${provider}`, "https://thaldrin.media/avatar.png") - .setColor("ORANGE") + let data = await request("shibe") + let Embed = new EmbeddingHandler(context, data) - context.channel.send({ embeds: [Embed] }) - } - else { - context.channel.send(image[0]) - } + + return Embed.get() } } diff --git a/src/discord/commands/animals/wolf.ts b/src/discord/commands/animals/wolf.ts index b3af259..87a13b2 100644 --- a/src/discord/commands/animals/wolf.ts +++ b/src/discord/commands/animals/wolf.ts @@ -1,7 +1,7 @@ import { Context } from "@utils/types" import { Command } from "@modules/eu/src/index" import request from "@utils/animals" -import { MessageEmbed } from "discord.js" +import EmbeddingHandler from "@utils/Embed" export = class Wolf extends Command { constructor() { @@ -14,17 +14,9 @@ export = class Wolf extends Command { async run(context: Context): Promise { let data = await request("wolf") + let Embed = new EmbeddingHandler(context, data) - if (context.settings.embeds) { - let Embed = new MessageEmbed() - .setImage(data.image.url) - .setFooter(`Thaldrin - Image provided by ${data.provider}`, "https://thaldrin.media/avatar.png") - .setColor("ORANGE") - context.channel.send({ embeds: [Embed] }) - } - else { - context.channel.send(data.image.url) - } + return Embed.get() } } diff --git a/src/discord/commands/fun/boop.ts b/src/discord/commands/fun/boop.ts new file mode 100644 index 0000000..c03cc46 --- /dev/null +++ b/src/discord/commands/fun/boop.ts @@ -0,0 +1,22 @@ +import { Context } from "@utils/types" +import { Command } from "@modules/eu/src/index" +import { request } from "@utils/command.roleplay" +import EmbeddingHandler from "@utils/Embed" + +export = class Boop extends Command { + constructor() { + super({ + name: "boop", + description: "Boop a fellow fur!", + }) + + } + + async run(context: Context): Promise { + let data = await request("boop", context.settings.locale) + let Embed = new EmbeddingHandler(context, data) + + + return Embed.get() + } +} diff --git a/src/discord/commands/fun/cuddle.ts b/src/discord/commands/fun/cuddle.ts new file mode 100644 index 0000000..a149767 --- /dev/null +++ b/src/discord/commands/fun/cuddle.ts @@ -0,0 +1,22 @@ +import { Context } from "@utils/types" +import { Command } from "@modules/eu/src/index" +import { request } from "@utils/command.roleplay" +import EmbeddingHandler from "@utils/Embed" + +export = class Cuddle extends Command { + constructor() { + super({ + name: "cuddle", + description: "Cuddle a fellow fur!", + }) + + } + + async run(context: Context): Promise { + let data = await request("cuddle", context.settings.locale) + let Embed = new EmbeddingHandler(context, data) + + + return Embed.get() + } +} diff --git a/src/discord/commands/fun/hold.ts b/src/discord/commands/fun/hold.ts new file mode 100644 index 0000000..ec69aa0 --- /dev/null +++ b/src/discord/commands/fun/hold.ts @@ -0,0 +1,22 @@ +import { Context } from "@utils/types" +import { Command } from "@modules/eu/src/index" +import { request } from "@utils/command.roleplay" +import EmbeddingHandler from "@utils/Embed" + +export = class Hold extends Command { + constructor() { + super({ + name: "hold", + description: "Hold a fellow fur tight!", + }) + + } + + async run(context: Context): Promise { + let data = await request("cuddle", context.settings.locale) + let Embed = new EmbeddingHandler(context, data) + + + return Embed.get() + } +} diff --git a/src/discord/commands/fun/hug.ts b/src/discord/commands/fun/hug.ts new file mode 100644 index 0000000..19c11af --- /dev/null +++ b/src/discord/commands/fun/hug.ts @@ -0,0 +1,22 @@ +import { Context } from "@utils/types" +import { Command } from "@modules/eu/src/index" +import { request } from "@utils/command.roleplay" +import EmbeddingHandler from "@utils/Embed" + +export = class Hug extends Command { + constructor() { + super({ + name: "hug", + description: "Hug a fellow fur!", + }) + + } + + async run(context: Context): Promise { + let data = await request("hug", context.settings.locale) + let Embed = new EmbeddingHandler(context, data) + + + return Embed.get() + } +} diff --git a/src/discord/commands/fun/lick.ts b/src/discord/commands/fun/lick.ts new file mode 100644 index 0000000..17ebdeb --- /dev/null +++ b/src/discord/commands/fun/lick.ts @@ -0,0 +1,22 @@ +import { Context } from "@utils/types" +import { Command } from "@modules/eu/src/index" +import { request } from "@utils/command.roleplay" +import EmbeddingHandler from "@utils/Embed" + +export = class Lick extends Command { + constructor() { + super({ + name: "lick", + description: "Lick someone!", + }) + + } + + async run(context: Context): Promise { + let data = await request("lick", context.settings.locale) + let Embed = new EmbeddingHandler(context, data) + + + return Embed.get() + } +} diff --git a/src/utils/Embed.ts b/src/utils/Embed.ts new file mode 100644 index 0000000..713f7bc --- /dev/null +++ b/src/utils/Embed.ts @@ -0,0 +1,33 @@ +import { MessageEmbed } from "discord.js"; +import { Server, Context } from "@utils/types" + +export default class EmbeddingHandler { + context: Context + image: string + provider: string + line?: string + constructor(context, data) { + this.context = context + this.image = [data.image].flat()[0] + this.provider = data.provider + this.line = data?.line + + + } + + get() { + if (this.context.settings.embeds) { + let Embed = new MessageEmbed() + // @ts-ignore + .setImage(this.image) + .setFooter(`Thaldrin - Image provided by ${this.provider}`, "https://thaldrin.media/avatar.png") + .setColor("ORANGE") + if ((this.line && this.context.message.mentions.members.size !== 0) && this.context.settings.embeds) Embed.setDescription(`${this.line}`) + return this.context.channel.send({ embeds: [Embed] }) + } + else { + if ((this.line && this.context.message.mentions.members.size !== 0) && this.context.settings.embeds) return this.context.channel.send(`${this.line}\n\n${this.image}`) + return this.context.channel.send(`${this.line}\n\n${this.image}`) + } + } +} \ No newline at end of file diff --git a/src/utils/animals.ts b/src/utils/animals.ts index 479588b..352c2b8 100644 --- a/src/utils/animals.ts +++ b/src/utils/animals.ts @@ -22,18 +22,18 @@ export default async function request(animal: animal) { return { image: proxied, provider: "shibe.online" }; } case "fox": { - let image = await yiff.thaldrin("foxes") - image.url = "https://proxy.thaldrin.media/" + image.url + let request = await yiff.thaldrin("foxes") + let image = "https://proxy.thaldrin.media/" + request.url return { image, provider: "thaldr.in" }; } case "hyena": { - let image = await yiff.thaldrin("yeens") - image.url = "https://proxy.thaldrin.media/" + image.url + let request = await yiff.thaldrin("yeens") + let image = "https://proxy.thaldrin.media/" + request.url return { image, provider: "thaldr.in" }; } case "wolf": { - let image = await yiff.thaldrin("wolves") - image.url = "https://proxy.thaldrin.media/" + image.url + let request = await yiff.thaldrin("wolves") + let image = "https://proxy.thaldrin.media/" + request.url return { image, provider: "thaldr.in" }; } } diff --git a/src/utils/command.roleplay.ts b/src/utils/command.roleplay.ts new file mode 100644 index 0000000..d8a8e4e --- /dev/null +++ b/src/utils/command.roleplay.ts @@ -0,0 +1,97 @@ +import yiff from "./yiff"; + +type action = + "hug" + | "boop" + | "kiss" + | "lick" + | "hold" + | "cuddle" + | "nsfw_hug" + | "nsfw_kiss" + | "nsfw_lick" + | "nsfw_hold" + | "nsfw_cuddle" + | "nsfw_bulge" + +function line(category: action) { + + return undefined +} + +export async function request(action: action, locale: string) { + switch (action) { + case "hug": { + let request = await yiff.sheri("hug") + let image = "https://proxy.thaldrin.media/" + request.url + return { image, line: line(action), provider: "sheri.bot" }; + + } + case "boop": { + let request = await yiff.sheri("boop") + let image = "https://proxy.thaldrin.media/" + request.url + return { image, line: line(action), provider: "sheri.bot" }; + + } + case "kiss": { + let request = await yiff.sheri("kiss") + let image = "https://proxy.thaldrin.media/" + request.url + return { image, line: line(action), provider: "sheri.bot" }; + + } + case "lick": { + let request = await yiff.sheri("lick") + let image = "https://proxy.thaldrin.media/" + request.url + return { image, line: line(action), provider: "sheri.bot" }; + + } + case "hold": { + let request = await yiff.sheri("hold") + let image = "https://proxy.thaldrin.media/" + request.url + return { image, line: line(action), provider: "sheri.bot" }; + + } + case "cuddle": { + let request = await yiff.sheri("cuddle") + let image = "https://proxy.thaldrin.media/" + request.url + return { image, line: line(action), provider: "sheri.bot" }; + + } + case "nsfw_hug": { + let request = await yiff.sheri("nhug") + let image = "https://proxy.thaldrin.media/" + request.url + return { image, line: line(action), provider: "sheri.bot" }; + + } + case "nsfw_kiss": { + let request = await yiff.sheri("nkiss") + let image = "https://proxy.thaldrin.media/" + request.url + return { image, line: line(action), provider: "sheri.bot" }; + + } + case "nsfw_lick": { + let request = await yiff.sheri("nlick") + let image = "https://proxy.thaldrin.media/" + request.url + return { image, line: line(action), provider: "sheri.bot" }; + + } + case "nsfw_hold": { + let request = await yiff.sheri("nhold") + let image = "https://proxy.thaldrin.media/" + request.url + return { image, line: line(action), provider: "sheri.bot" }; + + } + case "nsfw_cuddle": { + let request = await yiff.sheri("ncuddle") + let image = "https://proxy.thaldrin.media/" + request.url + return { image, line: line(action), provider: "sheri.bot" }; + + } + case "nsfw_bulge": { + let request = await yiff.sheri("nbulge") + let image = "https://proxy.thaldrin.media/" + request.url + return { image, line: line(action), provider: "sheri.bot" }; + + } + } +} \ No newline at end of file