Новые категории Games и NSFW

This commit is contained in:
JonnyBro 2021-12-12 14:47:06 +05:00
parent 44c9cf958b
commit 3f7d721a7a
31 changed files with 612 additions and 8 deletions

39
commands/Games/awkword.js Normal file
View file

@ -0,0 +1,39 @@
const Command = require("../../base/Command.js"),
Discord = require("discord.js");
class Awkword extends Command {
constructor (client) {
super(client, {
name: "awkword",
dirname: __dirname,
enabled: true,
guildOnly: true,
aliases: [],
memberPermissions: [],
botPermissions: [ "SEND_MESSAGES", "EMBED_LINKS" ],
nsfw: false,
ownerOnly: false,
cooldown: 5000
});
}
async run (message, args, data) {
const voice = message.member.voice.channel;
if (!voice) return message.error("music/play:NO_VOICE_CHANNEL");
const perms = voice.permissionsFor(this.client.user);
if (!perms.has("CONNECT") || !perms.has("SPEAK")) return message.error("music/play:VOICE_CHANNEL_CONNECT");
this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "awkword").then(async invite => {
const embed = new Discord.MessageEmbed()
.setTitle("Awkword")
.setColor(data.config.embed.color)
.setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Awkword", channel: voice.name })}](${invite.code})**`)
.setFooter(data.config.embed.footer)
.setTimestamp()
return message.channel.send(embed);
});
}
};
module.exports = Awkword;

View file

@ -0,0 +1,39 @@
const Command = require("../../base/Command.js"),
Discord = require("discord.js");
class Betrayal extends Command {
constructor (client) {
super(client, {
name: "betrayal",
dirname: __dirname,
enabled: true,
guildOnly: true,
aliases: [],
memberPermissions: [],
botPermissions: [ "SEND_MESSAGES", "EMBED_LINKS" ],
nsfw: false,
ownerOnly: false,
cooldown: 5000
});
}
async run (message, args, data) {
const voice = message.member.voice.channel;
if (!voice) return message.error("music/play:NO_VOICE_CHANNEL");
const perms = voice.permissionsFor(this.client.user);
if (!perms.has("CONNECT") || !perms.has("SPEAK")) return message.error("music/play:VOICE_CHANNEL_CONNECT");
this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "betrayal").then(async invite => {
const embed = new Discord.MessageEmbed()
.setTitle("Betrayal.io")
.setColor(data.config.embed.color)
.setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Betrayal.io", channel: voice.name })}](${invite.code})**`)
.setFooter(data.config.embed.footer)
.setTimestamp()
return message.channel.send(embed);
});
}
};
module.exports = Betrayal;

View file

@ -0,0 +1,39 @@
const Command = require("../../base/Command.js"),
Discord = require("discord.js");
class Checkers extends Command {
constructor (client) {
super(client, {
name: "checkers",
dirname: __dirname,
enabled: true,
guildOnly: true,
aliases: [],
memberPermissions: [],
botPermissions: [ "SEND_MESSAGES", "EMBED_LINKS" ],
nsfw: false,
ownerOnly: false,
cooldown: 5000
});
}
async run (message, args, data) {
const voice = message.member.voice.channel;
if (!voice) return message.error("music/play:NO_VOICE_CHANNEL");
const perms = voice.permissionsFor(this.client.user);
if (!perms.has("CONNECT") || !perms.has("SPEAK")) return message.error("music/play:VOICE_CHANNEL_CONNECT");
this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "checkers").then(async invite => {
const embed = new Discord.MessageEmbed()
.setTitle("Checkers In The Park")
.setColor(data.config.embed.color)
.setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Checkers In The Park", channel: voice.name })}](${invite.code})**`)
.setFooter(data.config.embed.footer)
.setTimestamp()
return message.channel.send(embed);
});
}
};
module.exports = Checkers;

39
commands/Games/chess.js Normal file
View file

@ -0,0 +1,39 @@
const Command = require("../../base/Command.js"),
Discord = require("discord.js");
class Chess extends Command {
constructor (client) {
super(client, {
name: "chess",
dirname: __dirname,
enabled: true,
guildOnly: true,
aliases: [],
memberPermissions: [],
botPermissions: [ "SEND_MESSAGES", "EMBED_LINKS" ],
nsfw: false,
ownerOnly: false,
cooldown: 5000
});
}
async run (message, args, data) {
const voice = message.member.voice.channel;
if (!voice) return message.error("music/play:NO_VOICE_CHANNEL");
const perms = voice.permissionsFor(this.client.user);
if (!perms.has("CONNECT") || !perms.has("SPEAK")) return message.error("music/play:VOICE_CHANNEL_CONNECT");
this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "chess").then(async invite => {
const embed = new Discord.MessageEmbed()
.setTitle("Chess In The Park")
.setColor(data.config.embed.color)
.setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Chess In The Park", channel: voice.name })}](${invite.code})**`)
.setFooter(data.config.embed.footer)
.setTimestamp()
return message.channel.send(embed);
});
}
};
module.exports = Chess;

View file

@ -0,0 +1,39 @@
const Command = require("../../base/Command.js"),
Discord = require("discord.js");
class Doodlecrew extends Command {
constructor (client) {
super(client, {
name: "doodlecrew",
dirname: __dirname,
enabled: true,
guildOnly: true,
aliases: [],
memberPermissions: [],
botPermissions: [ "SEND_MESSAGES", "EMBED_LINKS" ],
nsfw: false,
ownerOnly: false,
cooldown: 5000
});
}
async run (message, args, data) {
const voice = message.member.voice.channel;
if (!voice) return message.error("music/play:NO_VOICE_CHANNEL");
const perms = voice.permissionsFor(this.client.user);
if (!perms.has("CONNECT") || !perms.has("SPEAK")) return message.error("music/play:VOICE_CHANNEL_CONNECT");
this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "doodlecrew").then(async invite => {
const embed = new Discord.MessageEmbed()
.setTitle("Doodle Crew")
.setColor(data.config.embed.color)
.setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Doodle Crew", channel: voice.name })}](${invite.code})**`)
.setFooter(data.config.embed.footer)
.setTimestamp()
return message.channel.send(embed);
});
}
};
module.exports = Doodlecrew;

39
commands/Games/fishing.js Normal file
View file

@ -0,0 +1,39 @@
const Command = require("../../base/Command.js"),
Discord = require("discord.js");
class Fishing extends Command {
constructor (client) {
super(client, {
name: "fishing",
dirname: __dirname,
enabled: true,
guildOnly: true,
aliases: [],
memberPermissions: [],
botPermissions: [ "SEND_MESSAGES", "EMBED_LINKS" ],
nsfw: false,
ownerOnly: false,
cooldown: 5000
});
}
async run (message, args, data) {
const voice = message.member.voice.channel;
if (!voice) return message.error("music/play:NO_VOICE_CHANNEL");
const perms = voice.permissionsFor(this.client.user);
if (!perms.has("CONNECT") || !perms.has("SPEAK")) return message.error("music/play:VOICE_CHANNEL_CONNECT");
this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "fishing").then(async invite => {
const embed = new Discord.MessageEmbed()
.setTitle("Fishington.io")
.setColor(data.config.embed.color)
.setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Fishington.io", channel: voice.name })}](${invite.code})**`)
.setFooter(data.config.embed.footer)
.setTimestamp()
return message.channel.send(embed);
});
}
};
module.exports = Fishing;

View file

@ -0,0 +1,39 @@
const Command = require("../../base/Command.js"),
Discord = require("discord.js");
class Lettertile extends Command {
constructor (client) {
super(client, {
name: "lettertile",
dirname: __dirname,
enabled: true,
guildOnly: true,
aliases: [],
memberPermissions: [],
botPermissions: [ "SEND_MESSAGES", "EMBED_LINKS" ],
nsfw: false,
ownerOnly: false,
cooldown: 5000
});
}
async run (message, args, data) {
const voice = message.member.voice.channel;
if (!voice) return message.error("music/play:NO_VOICE_CHANNEL");
const perms = voice.permissionsFor(this.client.user);
if (!perms.has("CONNECT") || !perms.has("SPEAK")) return message.error("music/play:VOICE_CHANNEL_CONNECT");
this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "lettertile").then(async invite => {
const embed = new Discord.MessageEmbed()
.setTitle("Letter Tile")
.setColor(data.config.embed.color)
.setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Letter Tile", channel: voice.name })}](${invite.code})**`)
.setFooter(data.config.embed.footer)
.setTimestamp()
return message.channel.send(embed);
});
}
};
module.exports = Lettertile;

39
commands/Games/poker.js Normal file
View file

@ -0,0 +1,39 @@
const Command = require("../../base/Command.js"),
Discord = require("discord.js");
class Poker extends Command {
constructor (client) {
super(client, {
name: "poker",
dirname: __dirname,
enabled: true,
guildOnly: true,
aliases: [],
memberPermissions: [],
botPermissions: [ "SEND_MESSAGES", "EMBED_LINKS" ],
nsfw: false,
ownerOnly: false,
cooldown: 5000
});
}
async run (message, args, data) {
const voice = message.member.voice.channel;
if (!voice) return message.error("music/play:NO_VOICE_CHANNEL");
const perms = voice.permissionsFor(this.client.user);
if (!perms.has("CONNECT") || !perms.has("SPEAK")) return message.error("music/play:VOICE_CHANNEL_CONNECT");
this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "poker").then(async invite => {
const embed = new Discord.MessageEmbed()
.setTitle("Poker Night")
.setColor(data.config.embed.color)
.setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Poker Night", channel: voice.name })}](${invite.code})**`)
.setFooter(data.config.embed.footer)
.setTimestamp()
return message.channel.send(embed);
});
}
};
module.exports = Poker;

View file

@ -0,0 +1,39 @@
const Command = require("../../base/Command.js"),
Discord = require("discord.js");
class Spellcast extends Command {
constructor (client) {
super(client, {
name: "spellcast",
dirname: __dirname,
enabled: true,
guildOnly: true,
aliases: [],
memberPermissions: [],
botPermissions: [ "SEND_MESSAGES", "EMBED_LINKS" ],
nsfw: false,
ownerOnly: false,
cooldown: 5000
});
}
async run (message, args, data) {
const voice = message.member.voice.channel;
if (!voice) return message.error("music/play:NO_VOICE_CHANNEL");
const perms = voice.permissionsFor(this.client.user);
if (!perms.has("CONNECT") || !perms.has("SPEAK")) return message.error("music/play:VOICE_CHANNEL_CONNECT");
this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "spellcast").then(async invite => {
const embed = new Discord.MessageEmbed()
.setTitle("Spell Cast")
.setColor(data.config.embed.color)
.setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Spell Cast", channel: voice.name })}](${invite.code})**`)
.setFooter(data.config.embed.footer)
.setTimestamp()
return message.channel.send(embed);
});
}
};
module.exports = Spellcast;

View file

@ -0,0 +1,39 @@
const Command = require("../../base/Command.js"),
Discord = require("discord.js");
class Wordsnack extends Command {
constructor (client) {
super(client, {
name: "wordsnack",
dirname: __dirname,
enabled: true,
guildOnly: true,
aliases: [],
memberPermissions: [],
botPermissions: [ "SEND_MESSAGES", "EMBED_LINKS" ],
nsfw: false,
ownerOnly: false,
cooldown: 5000
});
}
async run (message, args, data) {
const voice = message.member.voice.channel;
if (!voice) return message.error("music/play:NO_VOICE_CHANNEL");
const perms = voice.permissionsFor(this.client.user);
if (!perms.has("CONNECT") || !perms.has("SPEAK")) return message.error("music/play:VOICE_CHANNEL_CONNECT");
this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "wordsnack").then(async invite => {
const embed = new Discord.MessageEmbed()
.setTitle("Words Snack")
.setColor(data.config.embed.color)
.setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Words Snack", channel: voice.name })}](${invite.code})**`)
.setFooter(data.config.embed.footer)
.setTimestamp()
return message.channel.send(embed);
});
}
};
module.exports = Wordsnack;

39
commands/Games/youtube.js Normal file
View file

@ -0,0 +1,39 @@
const Command = require("../../base/Command.js"),
Discord = require("discord.js");
class Youtube extends Command {
constructor (client) {
super(client, {
name: "youtube",
dirname: __dirname,
enabled: true,
guildOnly: true,
aliases: [],
memberPermissions: [],
botPermissions: [ "SEND_MESSAGES", "EMBED_LINKS" ],
nsfw: false,
ownerOnly: false,
cooldown: 5000
});
}
async run (message, args, data) {
const voice = message.member.voice.channel;
if (!voice) return message.error("music/play:NO_VOICE_CHANNEL");
const perms = voice.permissionsFor(this.client.user);
if (!perms.has("CONNECT") || !perms.has("SPEAK")) return message.error("music/play:VOICE_CHANNEL_CONNECT");
this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "youtube").then(async invite => {
const embed = new Discord.MessageEmbed()
.setTitle("Youtube Together")
.setColor(data.config.embed.color)
.setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Youtube Together", channel: voice.name })}](${invite.code})**`)
.setFooter(data.config.embed.footer)
.setTimestamp()
return message.channel.send(embed);
});
}
};
module.exports = Youtube;

98
commands/NSFW/hentai.js Normal file
View file

@ -0,0 +1,98 @@
const Command = require("../../base/Command.js"),
Discord = require("discord.js"),
fetch = require("node-fetch");
class Hentai extends Command {
constructor (client) {
super(client, {
name: "hentai",
dirname: __dirname,
enabled: true,
guildOnly: true,
aliases: [],
memberPermissions: [],
botPermissions: [ "SEND_MESSAGES", "EMBED_LINKS", "ATTACH_FILES" ],
nsfw: true,
ownerOnly: false,
cooldown: 2000
});
}
async run (message, args, data) {
var gif = null;
const embed = new Discord.MessageEmbed()
.setColor(data.config.embed.color)
.setFooter(data.config.embed.footer)
.setTimestamp()
switch(args[0]) {
case "neko":
gif = await fetch("https://nekos.life/api/v2/img/nsfw_neko_gif").then(response => response.json());
embed.setImage(gif.url)
break;
case "cum":
gif = await fetch("https://nekos.life/api/v2/img/cum").then(response => response.json());
embed.setImage(gif.url)
break;
case "solo":
gif = await fetch("https://nekos.life/api/v2/img/solo").then(response => response.json());
embed.setImage(gif.url)
break;
case "anal":
gif = await fetch("https://nekos.life/api/v2/img/anal").then(response => response.json());
embed.setImage(gif.url)
break;
case "yuri":
gif = await fetch("https://nekos.life/api/v2/img/yuri").then(response => response.json());
embed.setImage(gif.url)
break;
case "blowjob":
gif = await fetch("https://nekos.life/api/v2/img/bj").then(response => response.json());
embed.setImage(gif.url)
break;
case "bj":
gif = await fetch("https://nekos.life/api/v2/img/bj").then(response => response.json());
embed.setImage(gif.url)
break;
case "pussy":
gif = await fetch("https://nekos.life/api/v2/img/pussy").then(response => response.json());
embed.setImage(gif.url)
break;
case "classic":
gif = await fetch("https://nekos.life/api/v2/img/hentai").then(response => response.json());
embed.setImage(gif.url)
break;
case "futa":
gif = await fetch("https://nekos.life/api/v2/img/futanari").then(response => response.json());
embed.setImage(gif.url)
break;
case "futanari":
gif = await fetch("https://nekos.life/api/v2/img/futanari").then(response => response.json());
embed.setImage(gif.url)
break;
case "help":
embed.setTitle(message.translate("nsfw/hentai:HELP_1"))
embed.setDescription(message.translate("nsfw/hentai:HELP_2"))
break;
default:
gif = await fetch("https://nekos.life/api/v2/img/Random_hentai_gif").then(response => response.json());
embed.setImage(gif.url)
embed.setDescription(message.translate("nsfw/hentai:NOCATEGORY", { prefix: data.guild.prefix }))
};
message.channel.send(embed);
}
};
module.exports = Hentai;

View file

@ -58,12 +58,14 @@
},
"categories": {
"administration": "<:atlanta_administration_category:789030159419310101>",
"games": ":video_game:",
"economy": "<:atlanta_economy_category:789030493793288212>",
"fun": "<:atlanta_fun_category:789030226607996958>",
"general": "<:atlanta_general_category:789030444167200808>",
"images": "<:atlanta_images_category:789030084861362257>",
"moderation": "<:atlanta_moderation_category:789030389741781033>",
"music": "<:atlanta_music_category:789030283637948417>",
"nsfw": ":smiling_imp:",
"owner": "<:atlanta_owner_category:789030328261410836>",
"custom": "<:atlanta_custom_category:789029974379462686>"
}

View file

@ -12,20 +12,24 @@ module.exports = class {
client.logger.log(`Loading a total of ${client.commands.size} command(s).`, "log");
client.logger.log(`${client.user.tag}, ready to serve ${client.users.cache.size} users in ${client.guilds.cache.filter(guild => guild.id != "568120814776614924" && guild.id != "892727526911258654").size} servers.`, "ready");
/* Discord Together */
const discordtogether = require("../helpers/discordTogether");
discordtogether.init(client);
/* DiscordBots.org STATS */
const discordbotsorg = require("../helpers/discordbots.org.js");
const discordbotsorg = require("../helpers/discordbots.org");
discordbotsorg.init(client);
/* UNMUTE USERS */
const checkUnmutes = require("../helpers/checkUnmutes.js");
const checkUnmutes = require("../helpers/checkUnmutes");
checkUnmutes.init(client);
/* SEND REMINDS */
const checkReminds = require("../helpers/checkReminds.js");
const checkReminds = require("../helpers/checkReminds");
checkReminds.init(client);
/* DAILY SHOP FORTNITE */
const fortniteShop = require("../helpers/fortniteShop.js");
const fortniteShop = require("../helpers/fortniteShop");
fortniteShop.init(client);
// Start the dashboard

View file

@ -12,7 +12,7 @@ module.exports = {
commands.forEach((cmd) => {
if (!categories.includes(cmd.help.category)) categories.push(cmd.help.category);
});
let text = `# Команды \nСписок команд JaBa и их описания. JaBa имеет около **${Math.floor(commands.size/10)}0 команд** в **${categories.length} категориях**! \n\n#### Содержимое таблицы \n**Название**: Название команды \n**Описание**: Описание команды \n**Использование**: Использование команды ([] - обязательно, () - необязательно) \n**Откат**: Время, через которое команду можно будет использовать повторно\n\n`;
let text = `# Команды \nСписок команд JaBa и их описания. JaBa имеет более **${Math.floor(commands.size/10)}0 команд** в **${categories.length} категориях**! \n\n#### Содержимое таблицы \n**Название**: Название команды \n**Описание**: Описание команды \n**Использование**: Использование команды ([] - обязательно, () - необязательно) \n**Откат**: Время, через которое команду можно будет использовать повторно\n\n`;
categories.sort(function(a, b) {
const aCmdsLength = commands.filter((cmd) => cmd.help.category === a).array().length;

View file

@ -0,0 +1,6 @@
module.exports = {
init(client) {
const { DiscordTogether } = require("discord-together");
client.discordTogether = new DiscordTogether(client);
}
};

View file

@ -0,0 +1,5 @@
{
"DESCRIPTION": "Играйте в Awkword с друзьями с помощью Discord Together!",
"USAGE": "{{prefix}}awkword",
"EXAMPLES": "{{prefix}}awkword"
}

View file

@ -0,0 +1,5 @@
{
"DESCRIPTION": "Играйте в Betrayal.io с друзьями с помощью Discord Together!",
"USAGE": "{{prefix}}betrayal",
"EXAMPLES": "{{prefix}}betrayal"
}

View file

@ -0,0 +1,5 @@
{
"DESCRIPTION": "Играйте в Checkers In The Park с помощью Discord Together!",
"USAGE": "{{prefix}}checkers",
"EXAMPLES": "{{prefix}}checkers"
}

View file

@ -0,0 +1,5 @@
{
"DESCRIPTION": "Играйте в Chess In The Park с друзьями с помощью Discord Together!",
"USAGE": "{{prefix}}chess",
"EXAMPLES": "{{prefix}}chess"
}

View file

@ -0,0 +1,5 @@
{
"DESCRIPTION": "Играйте в Doodle Crew с друзьями с помощью Discord Together!",
"USAGE": "{{prefix}}doodlecrew",
"EXAMPLES": "{{prefix}}doodlecrew"
}

View file

@ -0,0 +1,5 @@
{
"DESCRIPTION": "Играйте в Fishington.io с друзьями с помощью Discord Together!",
"USAGE": "{{prefix}}fishing",
"EXAMPLES": "{{prefix}}fishing"
}

View file

@ -0,0 +1,5 @@
{
"DESCRIPTION": "Играйте в Letter Tile с друзьями с помощью Discord Together!",
"USAGE": "{{prefix}}lettertile",
"EXAMPLES": "{{prefix}}letttertile"
}

View file

@ -0,0 +1,5 @@
{
"DESCRIPTION": "Играйте в Poker Night с друзьями с помощью Discord Together!",
"USAGE": "{{prefix}}poker",
"EXAMPLES": "{{prefix}}poker"
}

View file

@ -0,0 +1,5 @@
{
"DESCRIPTION": "Играйте в SpellCast с друзьями с помощью Discord Together!",
"USAGE": "{{prefix}}spellcast",
"EXAMPLES": "{{prefix}}spellcast"
}

View file

@ -0,0 +1,5 @@
{
"DESCRIPTION": "Играйте в Words Snack с друзьями с помощью Discord Together!",
"USAGE": "{{prefix}}wordsnack",
"EXAMPLES": "{{prefix}}wordsnack"
}

View file

@ -0,0 +1,5 @@
{
"DESCRIPTION": "Смотрите Youtube с друзьями с помощью Discord Together!",
"USAGE": "{{prefix}}youtube",
"EXAMPLES": "{{prefix}}youtube"
}

View file

@ -1,6 +1,6 @@
{
"DESCRIPTION": "Опубликовать ваш текст на Hastebin!",
"USAGE": "{{prefix}}hastebin [текс]",
"USAGE": "{{prefix}}hastebin [текст]",
"EXAMPLES": "{{prefix}}hastebin Hello World!",
"MISSING_TEXT": "Введите текст!",
"SUCCESS": "Успешно опубликовано!"

View file

@ -2,10 +2,11 @@
"ERR_OCCURRED": "Что-то пошло не так... Пожалуйста, попробуйте позже!",
"PLEASE_WAIT": "Пожалуйста подождите...",
"COMMAND_DISABLED": "Эта команда на данный момент отключена!",
"CLICK_HERE": "Нажмите сюда, чтобы начать {{activity}} в {{channel}}",
"TIMES_UP": "Время вышло! Пожалуйста, используйте команду снова!",
"INVALID_YES_NO": "Отправьте \"да\" or \"нет\" (регистр не важен)!",
"INVALID_YES_NO": "Отправьте \"да\" или \"нет\" (регистр не важен)!",
"INVALID_CHANNEL": "Пожалуйста, укажите существующий канал!",
"INVALID_TIME": "Укажите действительное время! Доступные единицы: `s`, `m`, `h` or `d`",
"INVALID_TIME": "Укажите действительное время! Доступные единицы: `s`, `m`, `h` или `d`",
"INVALID_NUMBER": "Пожалуйста, укажите число!",
"INVALID_NUMBER_RANGE": "Укажите число от **{{min}}** до **{{max}}**!",
"STATS_FOOTER": "● [Панель управления]({{dashboardLink}})\n● [Поддержать]({{donateLink}}) (для других способов пишите в ЛС @<{{owner}}>)",

View file

@ -0,0 +1,8 @@
{
"DESCRIPTION": "Получить гифку NSFW содержания",
"USAGE": "{{prefix}}hentai (категория/help)",
"EXAMPLES": "{{prefix}}hentai\n{{prefix}}hentai help",
"NOCATEGORY": "Если Вы хотите увидеть что-либо из определённой категории, введите её название после команды.\nИспользуйте **`{{prefix}}hentai help`** чтобы увидеть все категории\n",
"HELP_1": "Доступные категории (вы так же можете использовать команду без аргументов)",
"HELP_2": "```neko\ncum\nsolo\nanal\nyuri\nblowjob - bj\npussy\nclassic\nfutanari - futa\n```"
}

View file

@ -32,6 +32,7 @@
"discord-giveaways": "^4.4.3",
"discord-paginationembed": "^2.1.0",
"discord-player": "^4.1.0",
"discord-together": "^1.3.25",
"discord.js": "^12.5.3",
"ejs": "^3.1.3",
"express": "^4.17.1",