diff --git a/src/modules/fun/boop.ts b/src/modules/fun/boop.ts new file mode 100644 index 0000000..0b80a9d --- /dev/null +++ b/src/modules/fun/boop.ts @@ -0,0 +1,41 @@ +// @ts-nocheck +import Command from '../../handler/structures/Command'; +import { Context } from '../../utils/types'; +import { MessageEmbed } from 'discord.js'; +import lingua from '../../utils/lingua'; +import replace from '../../utils/replace'; +import { request } from '../../utils/commmand.roleplay'; + +export = class Boop extends Command { + constructor() { + super({ + name: "boop", + description: "Boop someone's Snoot!", + cooldown: 1, + usage: `<@User>` + }) + } + + async command(ctx: Context) { + let action = "boop" + if (ctx.message.mentions.members?.size === 0) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_REQUIRE_MENTION)) + if (ctx.message.mentions.members?.first()?.id === ctx.client.user?.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_ME)) + if (ctx.message.mentions.members?.first()?.id === ctx.author.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_SELF)) + + let users = [ctx.message.author.username, ctx.message.mentions.members?.first()?.user.username] + let { image, provider, line } = await request(action, ctx.settings.locale, users) + if (ctx.settings.embeds) { + let Action = new MessageEmbed().setImage(image.url) + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) Action.setDescription(line) + + Action + .setFooter(`${ctx.config.variables.name} - Image provided by ${provider}`, ctx.config.variables.avatar) + .setColor(ctx.config.variables.color) + + ctx.channel.send(Action) + } else { + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) ctx.channel.send(`${line}\n\n${image.url}`) + else ctx.channel.send(image.url) + } + } +} \ No newline at end of file diff --git a/src/modules/fun/cuddle.ts b/src/modules/fun/cuddle.ts new file mode 100644 index 0000000..d7fb3b0 --- /dev/null +++ b/src/modules/fun/cuddle.ts @@ -0,0 +1,41 @@ +// @ts-nocheck +import Command from '../../handler/structures/Command'; +import { Context } from '../../utils/types'; +import { MessageEmbed } from 'discord.js'; +import lingua from '../../utils/lingua'; +import replace from '../../utils/replace'; +import { request } from '../../utils/commmand.roleplay'; + +export = class Cuddle extends Command { + constructor() { + super({ + name: "cuddle", + description: "Cuddle somebody!", + cooldown: 1, + usage: `<@User>` + }) + } + + async command(ctx: Context) { + let action = "cuddle" + if (ctx.message.mentions.members?.size === 0) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_REQUIRE_MENTION)) + if (ctx.message.mentions.members?.first()?.id === ctx.client.user?.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_ME)) + if (ctx.message.mentions.members?.first()?.id === ctx.author.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_SELF)) + + let users = [ctx.message.author.username, ctx.message.mentions.members?.first()?.user.username] + let { image, provider, line } = await request(action, ctx.settings.locale, users) + if (ctx.settings.embeds) { + let Action = new MessageEmbed().setImage(image.url) + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) Action.setDescription(line) + + Action + .setFooter(`${ctx.config.variables.name} - Image provided by ${provider}`, ctx.config.variables.avatar) + .setColor(ctx.config.variables.color) + + ctx.channel.send(Action) + } else { + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) ctx.channel.send(`${line}\n\n${image.url}`) + else ctx.channel.send(image.url) + } + } +} \ No newline at end of file diff --git a/src/modules/fun/hold.ts b/src/modules/fun/hold.ts new file mode 100644 index 0000000..dc7fe1a --- /dev/null +++ b/src/modules/fun/hold.ts @@ -0,0 +1,42 @@ +// @ts-nocheck +import Command from '../../handler/structures/Command'; +import { Context } from '../../utils/types'; +import { MessageEmbed } from 'discord.js'; +import lingua from '../../utils/lingua'; +import replace from '../../utils/replace'; +import { request } from '../../utils/commmand.roleplay'; + +export = class Hold extends Command { + constructor() { + super({ + name: "hold", + description: "Hold somebody!", + cooldown: 1, + usage: `<@User>` + + }) + } + + async command(ctx: Context) { + let action = "hold" + if (ctx.message.mentions.members?.size === 0) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_REQUIRE_MENTION)) + if (ctx.message.mentions.members?.first()?.id === ctx.client.user?.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_ME)) + if (ctx.message.mentions.members?.first()?.id === ctx.author.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_SELF)) + + let users = [ctx.message.author.username, ctx.message.mentions.members?.first()?.user.username] + let { image, provider, line } = await request(action, ctx.settings.locale, users) + if (ctx.settings.embeds) { + let Action = new MessageEmbed().setImage(image.url) + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) Action.setDescription(line) + + Action + .setFooter(`${ctx.config.variables.name} - Image provided by ${provider}`, ctx.config.variables.avatar) + .setColor(ctx.config.variables.color) + + ctx.channel.send(Action) + } else { + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) ctx.channel.send(`${line}\n\n${image.url}`) + else ctx.channel.send(image.url) + } + } +} \ No newline at end of file diff --git a/src/modules/fun/lick.ts b/src/modules/fun/lick.ts new file mode 100644 index 0000000..5ed655f --- /dev/null +++ b/src/modules/fun/lick.ts @@ -0,0 +1,41 @@ +// @ts-nocheck +import Command from '../../handler/structures/Command'; +import { Context } from '../../utils/types'; +import { MessageEmbed } from 'discord.js'; +import lingua from '../../utils/lingua'; +import replace from '../../utils/replace'; +import { request } from '../../utils/commmand.roleplay'; + +export = class Lick extends Command { + constructor() { + super({ + name: "lick", + description: "Lick somebody!", + cooldown: 1, + usage: `<@User>` + }) + } + + async command(ctx: Context) { + let action = "lick" + if (ctx.message.mentions.members?.size === 0) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_REQUIRE_MENTION)) + if (ctx.message.mentions.members?.first()?.id === ctx.client.user?.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_ME)) + if (ctx.message.mentions.members?.first()?.id === ctx.author.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_SELF)) + + let users = [ctx.message.author.username, ctx.message.mentions.members?.first()?.user.username] + let { image, provider, line } = await request(action, ctx.settings.locale, users) + if (ctx.settings.embeds) { + let Action = new MessageEmbed().setImage(image.url) + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) Action.setDescription(line) + + Action + .setFooter(`${ctx.config.variables.name} - Image provided by ${provider}`, ctx.config.variables.avatar) + .setColor(ctx.config.variables.color) + + ctx.channel.send(Action) + } else { + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) ctx.channel.send(`${line}\n\n${image.url}`) + else ctx.channel.send(image.url) + } + } +} \ No newline at end of file diff --git a/src/modules/nsfw/bulge.ts b/src/modules/nsfw/bulge.ts new file mode 100644 index 0000000..a1d02ca --- /dev/null +++ b/src/modules/nsfw/bulge.ts @@ -0,0 +1,42 @@ +// @ts-nocheck +import Command from '../../handler/structures/Command'; +import { Context } from '../../utils/types'; +import { MessageEmbed } from 'discord.js'; +import lingua from '../../utils/lingua'; +import replace from '../../utils/replace'; +import { request } from '../../utils/commmand.roleplay'; + +export = class Bulge extends Command { + constructor() { + super({ + name: "bulge", + description: ":eyes:", + cooldown: 1, + nsfw: true, + usage: `<@User>` + }) + } + + async command(ctx: Context) { + let action = "nsfw_bulge" + if (ctx.message.mentions.members?.size === 0) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_REQUIRE_MENTION)) + if (ctx.message.mentions.members?.first()?.id === ctx.client.user?.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_ME)) + if (ctx.message.mentions.members?.first()?.id === ctx.author.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_SELF)) + + let users = [ctx.message.author.username, ctx.message.mentions.members?.first()?.user.username] + let { image, provider, line } = await request(action, ctx.settings.locale, users) + if (ctx.settings.embeds) { + let Action = new MessageEmbed().setImage(image.url) + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) Action.setDescription(line) + + Action + .setFooter(`${ctx.config.variables.name} - Image provided by ${provider}`, ctx.config.variables.avatar) + .setColor(ctx.config.variables.color) + + ctx.channel.send(Action) + } else { + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) ctx.channel.send(`${line}\n\n${image.url}`) + else ctx.channel.send(image.url) + } + } +} \ No newline at end of file diff --git a/src/modules/nsfw/ncuddle.ts b/src/modules/nsfw/ncuddle.ts new file mode 100644 index 0000000..6228d19 --- /dev/null +++ b/src/modules/nsfw/ncuddle.ts @@ -0,0 +1,42 @@ +// @ts-nocheck +import Command from '../../handler/structures/Command'; +import { Context } from '../../utils/types'; +import { MessageEmbed } from 'discord.js'; +import lingua from '../../utils/lingua'; +import replace from '../../utils/replace'; +import { request } from '../../utils/commmand.roleplay'; + +export = class NSFW_Cuddle extends Command { + constructor() { + super({ + name: "ncuddle", + description: "Cuddle someone lewdly!", + cooldown: 1, + nsfw: true, + usage: `<@User>` + }) + } + + async command(ctx: Context) { + let action = "nsfw_cuddle" + if (ctx.message.mentions.members?.size === 0) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_REQUIRE_MENTION)) + if (ctx.message.mentions.members?.first()?.id === ctx.client.user?.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_ME)) + if (ctx.message.mentions.members?.first()?.id === ctx.author.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_SELF)) + + let users = [ctx.message.author.username, ctx.message.mentions.members?.first()?.user.username] + let { image, provider, line } = await request(action, ctx.settings.locale, users) + if (ctx.settings.embeds) { + let Action = new MessageEmbed().setImage(image.url) + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) Action.setDescription(line) + + Action + .setFooter(`${ctx.config.variables.name} - Image provided by ${provider}`, ctx.config.variables.avatar) + .setColor(ctx.config.variables.color) + + ctx.channel.send(Action) + } else { + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) ctx.channel.send(`${line}\n\n${image.url}`) + else ctx.channel.send(image.url) + } + } +} \ No newline at end of file diff --git a/src/modules/nsfw/nhold.ts b/src/modules/nsfw/nhold.ts new file mode 100644 index 0000000..9bcb0e2 --- /dev/null +++ b/src/modules/nsfw/nhold.ts @@ -0,0 +1,42 @@ +// @ts-nocheck +import Command from '../../handler/structures/Command'; +import { Context } from '../../utils/types'; +import { MessageEmbed } from 'discord.js'; +import lingua from '../../utils/lingua'; +import replace from '../../utils/replace'; +import { request } from '../../utils/commmand.roleplay'; + +export = class NSFW_Hold extends Command { + constructor() { + super({ + name: "nhold", + description: "Hug somebody!", + cooldown: 1, + nsfw: true, + usage: `<@User>` + }) + } + + async command(ctx: Context) { + let action = "hug" + if (ctx.message.mentions.members?.size === 0) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_REQUIRE_MENTION)) + if (ctx.message.mentions.members?.first()?.id === ctx.client.user?.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_ME)) + if (ctx.message.mentions.members?.first()?.id === ctx.author.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_SELF)) + + let users = [ctx.message.author.username, ctx.message.mentions.members?.first()?.user.username] + let { image, provider, line } = await request(action, ctx.settings.locale, users) + if (ctx.settings.embeds) { + let Action = new MessageEmbed().setImage(image.url) + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) Action.setDescription(line) + + Action + .setFooter(`${ctx.config.variables.name} - Image provided by ${provider}`, ctx.config.variables.avatar) + .setColor(ctx.config.variables.color) + + ctx.channel.send(Action) + } else { + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) ctx.channel.send(`${line}\n\n${image.url}`) + else ctx.channel.send(image.url) + } + } +} \ No newline at end of file diff --git a/src/modules/nsfw/nhug.ts b/src/modules/nsfw/nhug.ts new file mode 100644 index 0000000..bbeb2c8 --- /dev/null +++ b/src/modules/nsfw/nhug.ts @@ -0,0 +1,42 @@ +// @ts-nocheck +import Command from '../../handler/structures/Command'; +import { Context } from '../../utils/types'; +import { MessageEmbed } from 'discord.js'; +import lingua from '../../utils/lingua'; +import replace from '../../utils/replace'; +import { request } from '../../utils/commmand.roleplay'; + +export = class NSFW_Hug extends Command { + constructor() { + super({ + name: "nhug", + description: "Hug someone lewdly!", + cooldown: 1, + nsfw: true, + usage: `<@User>` + }) + } + + async command(ctx: Context) { + let action = "nsfw_hug" + if (ctx.message.mentions.members?.size === 0) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_REQUIRE_MENTION)) + if (ctx.message.mentions.members?.first()?.id === ctx.client.user?.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_ME)) + if (ctx.message.mentions.members?.first()?.id === ctx.author.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_SELF)) + + let users = [ctx.message.author.username, ctx.message.mentions.members?.first()?.user.username] + let { image, provider, line } = await request(action, ctx.settings.locale, users) + if (ctx.settings.embeds) { + let Action = new MessageEmbed().setImage(image.url) + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) Action.setDescription(line) + + Action + .setFooter(`${ctx.config.variables.name} - Image provided by ${provider}`, ctx.config.variables.avatar) + .setColor(ctx.config.variables.color) + + ctx.channel.send(Action) + } else { + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) ctx.channel.send(`${line}\n\n${image.url}`) + else ctx.channel.send(image.url) + } + } +} \ No newline at end of file diff --git a/src/modules/nsfw/nkiss.ts b/src/modules/nsfw/nkiss.ts new file mode 100644 index 0000000..45e0f7a --- /dev/null +++ b/src/modules/nsfw/nkiss.ts @@ -0,0 +1,42 @@ +// @ts-nocheck +import Command from '../../handler/structures/Command'; +import { Context } from '../../utils/types'; +import { MessageEmbed } from 'discord.js'; +import lingua from '../../utils/lingua'; +import replace from '../../utils/replace'; +import { request } from '../../utils/commmand.roleplay'; + +export = class NSFW_Kiss extends Command { + constructor() { + super({ + name: "nkiss", + description: "Kiss someone lewdly!", + cooldown: 1, + nsfw: true, + usage: `<@User>` + }) + } + + async command(ctx: Context) { + let action = "nsfw_kiss" + if (ctx.message.mentions.members?.size === 0) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_REQUIRE_MENTION)) + if (ctx.message.mentions.members?.first()?.id === ctx.client.user?.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_ME)) + if (ctx.message.mentions.members?.first()?.id === ctx.author.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_SELF)) + + let users = [ctx.message.author.username, ctx.message.mentions.members?.first()?.user.username] + let { image, provider, line } = await request(action, ctx.settings.locale, users) + if (ctx.settings.embeds) { + let Action = new MessageEmbed().setImage(image.url) + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) Action.setDescription(line) + + Action + .setFooter(`${ctx.config.variables.name} - Image provided by ${provider}`, ctx.config.variables.avatar) + .setColor(ctx.config.variables.color) + + ctx.channel.send(Action) + } else { + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) ctx.channel.send(`${line}\n\n${image.url}`) + else ctx.channel.send(image.url) + } + } +} \ No newline at end of file diff --git a/src/modules/nsfw/nlick.ts b/src/modules/nsfw/nlick.ts new file mode 100644 index 0000000..7ac823a --- /dev/null +++ b/src/modules/nsfw/nlick.ts @@ -0,0 +1,41 @@ +// @ts-nocheck +import Command from '../../handler/structures/Command'; +import { Context } from '../../utils/types'; +import { MessageEmbed } from 'discord.js'; +import lingua from '../../utils/lingua'; +import replace from '../../utils/replace'; +import { request } from '../../utils/commmand.roleplay'; + +export = class NSFW_Lick extends Command { + constructor() { + super({ + name: "nlick", + description: "Hug someone lewdly!", + cooldown: 1, + nsfw: true + }) + } + + async command(ctx: Context) { + let action = "nsfw_lick" + if (ctx.message.mentions.members?.size === 0) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_REQUIRE_MENTION)) + if (ctx.message.mentions.members?.first()?.id === ctx.client.user?.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_ME)) + if (ctx.message.mentions.members?.first()?.id === ctx.author.id) return ctx.channel.send(replace(/ACTION/g, action, lingua[ctx.settings.locale].RP_SELF)) + + let users = [ctx.message.author.username, ctx.message.mentions.members?.first()?.user.username] + let { image, provider, line } = await request(action, ctx.settings.locale, users) + if (ctx.settings.embeds) { + let Action = new MessageEmbed().setImage(image.url) + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) Action.setDescription(line) + + Action + .setFooter(`${ctx.config.variables.name} - Image provided by ${provider}`, ctx.config.variables.avatar) + .setColor(ctx.config.variables.color) + + ctx.channel.send(Action) + } else { + if ((line && ctx.message.mentions.members?.size !== 0) && ctx.settings.interactiontext) ctx.channel.send(`${line}\n\n${image.url}`) + else ctx.channel.send(image.url) + } + } +} \ No newline at end of file diff --git a/src/utils/commmand.roleplay.ts b/src/utils/commmand.roleplay.ts new file mode 100644 index 0000000..df0e96f --- /dev/null +++ b/src/utils/commmand.roleplay.ts @@ -0,0 +1,50 @@ +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": + return { image: await yiff.sheri("hug"), provider: "sheri.bot", line: line(action) }; + case "boop": + return { image: await yiff.sheri("boop"), provider: "sheri.bot", line: line(action) }; + case "kiss": + return { image: await yiff.sheri("kiss"), provider: "sheri.bot", line: line(action) }; + case "lick": + return { image: await yiff.sheri("lick"), provider: "sheri.bot", line: line(action) }; + case "hold": + return { image: await yiff.sheri("hold"), provider: "sheri.bot", line: line(action) }; + case "cuddle": + return { image: await yiff.sheri("cuddle"), provider: "sheri.bot", line: line(action) }; + case "nsfw_hug": + return { image: await yiff.sheri("nhug"), provider: "sheri.bot", line: line(action) }; + case "nsfw_kiss": + return { image: await yiff.sheri("nkiss"), provider: "sheri.bot", line: line(action) }; + case "nsfw_lick": + return { image: await yiff.sheri("nlick"), provider: "sheri.bot", line: line(action) }; + case "nsfw_hold": + return { image: await yiff.sheri("nhold"), provider: "sheri.bot", line: line(action) }; + case "nsfw_cuddle": + return { image: await yiff.sheri("ncuddle"), provider: "sheri.bot", line: line(action) }; + case "nsfw_bulge": + return { image: await yiff.sheri("nbulge"), provider: "sheri.bot", line: line(action) }; + } +} +