This commit is contained in:
Jonny_Bro (Nikita) 2023-06-17 16:46:31 +05:00
parent fd2796865c
commit c6e1e16fe9
25 changed files with 179 additions and 52 deletions

View file

@ -25,16 +25,17 @@ JaBa предлагает:
JaBa имеет множество функций, вот **8 основных категорий**: JaBa имеет множество функций, вот **8 основных категорий**:
* 👩‍💼 **Администрирование**: `automod`, `autorole`, `config`, `goodbye`, `selectroles`, `stealemoji` и ещё **три** команды! * 👩‍💼 **Администрирование**: `automod`, `autorole`, `config`, `goodbye`, `selectroles`, `stealemoji` и ещё **3** команды!
* 🚓 **Модерация**: `clear`, `giveaway`, `poll`, `warn` и ещё **три** команды! * 🚓 **Модерация**: `clear`, `giveaway`, `poll`, `warn` и ещё **3** команды!
* 🎵 **Музыка**: `play`, `skip`, `queue`, `nowplaying`, `shuffle` и ещё **семь** команды! * 🎵 **Музыка**: `play`, `skip`, `queue`, `nowplaying`, `shuffle` и ещё **7** команды!
* 💰 **Экономика**: `profile`, `work`, `achievements`, `slots`, `tictactoe`, `leaderboard` и ещё **двенадцать** команд! * 💰 **Экономика**: `profile`, `work`, `achievements`, `slots`, `tictactoe`, `leaderboard` и ещё **12** команд!
* 👻 **Веселье**: `8ball`, `crab`, `lmgtfy`, `lovecalc`, `memes` и ещё **две** команды! * 👻 **Веселье**: `8ball`, `crab`, `lmgtfy`, `lovecalc`, `memes` и ещё **2** команды!
* 🖨️ **Основные**: `afk`, `avatar`, `boosters`, `minecraft`, `remindme`, `shorturl`, `serverinfo`, `userinfo`, `whois` и ещё **семь** команд! * 🖨️ **Основные**: `afk`, `avatar`, `boosters`, `minecraft`, `remindme`, `shorturl`, `serverinfo`, `userinfo`, `whois` и ещё **семь** команд!
* ❤ **NSFW**: `nsfw` =) * ❤ **NSFW**: `nsfw` =)
* 👑 **Команды владельца**: `eval`, `getinvite`, `servers-list` and **2** more! * 👑 **Команды владельца**: `eval`, `getinvite`, `servers-list` и ещё **2** команды!
[Полный список команд и список изменений](http://jababot.duckdns.org/docs) [Список изменений](/dashboard/public/docs/updates.md)
[Полный список команд](http://jababot.duckdns.org:8080/docs)
### Мощная панель управления ### Мощная панель управления

View file

@ -51,12 +51,16 @@ class Help extends BaseCommand {
if (command) { if (command) {
if (commands.find(c => c.command.name === command).category === "Owner" && interaction.user.id !== client.config.owner.id) return interaction.error("misc:OWNER_ONLY", null, { edit: true, ephemeral: true }); if (commands.find(c => c.command.name === command).category === "Owner" && interaction.user.id !== client.config.owner.id) return interaction.error("misc:OWNER_ONLY", null, { edit: true, ephemeral: true });
return interaction.editReply({ embeds: [ generateCommandHelp(interaction, command) ] }); return interaction.editReply({ embeds: [ generateCommandHelp(interaction, command) ] });
} }
commands.forEach(c => { commands.forEach(c => {
if (!categories.includes(c.category)) { if (!categories.includes(c.category)) {
if (c.category === "Owner" && interaction.user.id !== client.config.owner.id) return; if (c.category === "Owner" && interaction.user.id !== client.config.owner.id) return;
if (c.category === "IAT" && interaction.guildId !== "1039187019957555252") return;
if (c.category === "SunCountry" && interaction.guildId !== "600970971410857996") return;
categories.push(c.category); categories.push(c.category);
} }
}); });

View file

@ -37,8 +37,6 @@ class Checkjar extends BaseCommand {
* @param {Object} data * @param {Object} data
*/ */
async execute(client, interaction) { async execute(client, interaction) {
if (!interaction.guildId === "1039187019957555252") return interaction.reply({ content: "error", ephemeral: true });
await interaction.deferReply(); await interaction.deferReply();
const jarsList = await fetch("https://api.monobank.ua/personal/client-info", { const jarsList = await fetch("https://api.monobank.ua/personal/client-info", {

View file

@ -38,7 +38,7 @@ class NSFW extends BaseCommand {
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply({ ephemeral: true }); await interaction.deferReply({ ephemeral: true });
if (interaction.guildId && !interaction.channel.nsfw) return interaction.replyT("misc:NSFW_COMMAND", null, { ephemeral: true, edit: true }); if (interaction.guildId && !interaction.channel.nsfw) return interaction.replyT("misc:NSFW_COMMAND", null, { edit: true });
const tags = ["hentai", "ecchi", "lewdanimegirls", "hentaifemdom", "animefeets", "animebooty", "biganimetiddies", "sideoppai", "ahegao"].map(tag => const tags = ["hentai", "ecchi", "lewdanimegirls", "hentaifemdom", "animefeets", "animebooty", "biganimetiddies", "sideoppai", "ahegao"].map(tag =>
JSON.parse(JSON.stringify({ JSON.parse(JSON.stringify({

View file

@ -0,0 +1,119 @@
const { SlashCommandBuilder, EmbedBuilder } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand");
class Sendmessage extends BaseCommand {
/**
*
* @param {import("../../base/JaBa")} client
*/
constructor(client) {
super({
command: new SlashCommandBuilder()
.setName("sendmessage")
.setDescription(client.translate("suncountry/sendmessage:DESCRIPTION"))
.setDescriptionLocalizations({
"uk": client.translate("suncountry/sendmessage:DESCRIPTION", null, "uk-UA"),
"ru": client.translate("suncountry/sendmessage:DESCRIPTION", null, "ru-RU"),
})
.setDMPermission(true)
.addSubcommand(subcommand => subcommand.setName("rpinfo")
.setDescription(client.translate("suncountry/sendmessage:RPINFO"))
.setDescriptionLocalizations({
"uk": client.translate("suncountry/sendmessage:RPINFO", null, "uk-UA"),
"ru": client.translate("suncountry/sendmessage:RPINFO", null, "ru-RU"),
})
.addStringOption(option => option.setName("text")
.setDescription(client.translate("common:MESSAGE"))
.setDescriptionLocalizations({
"uk": client.translate("common:MESSAGE", null, "uk-UA"),
"ru": client.translate("common:MESSAGE", null, "ru-RU"),
})
.setRequired(true))
.addAttachmentOption(option => option.setName("attachment")
.setDescription(client.translate("common:ATTACHMENT"))
.setDescriptionLocalizations({
"uk": client.translate("common:ATTACHMENT", null, "uk-UA"),
"ru": client.translate("common:ATTACHMENT", null, "ru-RU"),
})),
)
.addSubcommand(subcommand => subcommand.setName("instalife")
.setDescription(client.translate("suncountry/sendmessage:INSTALIFE"))
.setDescriptionLocalizations({
"uk": client.translate("suncountry/sendmessage:INSTALIFE", null, "uk-UA"),
"ru": client.translate("suncountry/sendmessage:INSTALIFE", null, "ru-RU"),
})
.addStringOption(option => option.setName("name")
.setDescription(client.translate("common:USERNAME"))
.setDescriptionLocalizations({
"uk": client.translate("common:USERNAME", null, "uk-UA"),
"ru": client.translate("common:USERNAME", null, "ru-RU"),
})
.setRequired(true))
.addStringOption(option => option.setName("text")
.setDescription(client.translate("common:MESSAGE"))
.setDescriptionLocalizations({
"uk": client.translate("common:MESSAGE", null, "uk-UA"),
"ru": client.translate("common:MESSAGE", null, "ru-RU"),
})
.setRequired(true))
.addAttachmentOption(option => option.setName("attachment")
.setDescription(client.translate("common:ATTACHMENT"))
.setDescriptionLocalizations({
"uk": client.translate("common:ATTACHMENT", null, "uk-UA"),
"ru": client.translate("common:ATTACHMENT", null, "ru-RU"),
})),
),
aliases: [],
dirname: __dirname,
ownerOnly: false,
});
}
/**
*
* @param {import("../../base/JaBa")} client
*/
async onLoad() {
//...
}
/**
*
* @param {import("../../base/JaBa")} client
* @param {import("discord.js").ChatInputCommandInteraction} interaction
* @param {Object} data
*/
async execute(client, interaction) {
await interaction.deferReply({ ephemeral: true });
const guild = client.guilds.cache.get("600970971410857996"),
channel = command === "rpinfo" ? guild.channels.cache.get("1119571321421058098") : guild.channels.cache.get("1119579266376540213");
const command = interaction.options.getSubcommand(),
text = interaction.options.getString("text"),
name = interaction.options.getString("name"),
attachment = interaction.options.getAttachment("attachment");
const embed = new EmbedBuilder()
.setColor(client.config.embed.color)
.setTitle("InstaLife")
.setAuthor({
name: `@${name}`,
})
.setImage(attachment ? attachment.url : null)
.setDescription(text);
channel.send({
content: command === "rpinfo" ? text : null,
files: command === "rpinfo" ? (attachment ? [{
name: attachment.name,
attachment: attachment.url,
}] : null) : null,
embeds: command === "instalife" ? [embed] : null,
}).then(message => {
interaction.success("suncountry/sendmessage:MESSAGE_SENT", {
message: message.url,
}, { edit: true });
});
}
}
module.exports = Sendmessage;

View file

@ -1,3 +1,11 @@
### JaBa v4.2.6
* Добавлено
* Эксклюзив для SunCountry RP: *sendmessage* - отправить (анонимное) сообщение в выбранный канал.
* Изменено
* Отключено уведомление об ачивках, включу когда переделаю.\
Хочу отправлять их в ЛС.
### JaBa v4.2.5 ### JaBa v4.2.5
* Изменено * Изменено
* Изменения в локализации, основным языком теперь является английский.\ * Изменения в локализации, основным языком теперь является английский.\

View file

@ -44,6 +44,10 @@ class CommandHandler extends BaseEvent {
if (command.guildOnly && !interaction.inGuild()) return interaction.error("misc:GUILD_ONLY", null, { ephemeral: true }); if (command.guildOnly && !interaction.inGuild()) return interaction.error("misc:GUILD_ONLY", null, { ephemeral: true });
if (command.ownerOnly && interaction.user.id !== client.config.owner.id) return interaction.error("misc:OWNER_ONLY", null, { ephemeral: true }); if (command.ownerOnly && interaction.user.id !== client.config.owner.id) return interaction.error("misc:OWNER_ONLY", null, { ephemeral: true });
if (!interaction.guildId === "1039187019957555252") return interaction.error({ content: "IAT Only", ephemeral: true }); // IAT
if (!interaction.guildId === "600970971410857996") return interaction.error({ content: "SC Only", ephemeral: true }); // SC
/*
if (!userData.achievements.firstCommand.achieved) { if (!userData.achievements.firstCommand.achieved) {
const args = { const args = {
content: interaction.user.toString(), content: interaction.user.toString(),
@ -60,6 +64,7 @@ class CommandHandler extends BaseEvent {
interaction.channel.isDMBased() ? interaction.user.send(args) : await interaction.channel.send(args); interaction.channel.isDMBased() ? interaction.user.send(args) : await interaction.channel.send(args);
} }
*/
client.logger.log(`User ${interaction.user.discriminator === "0" ? interaction.user.username : interaction.user.tag} used ${command.command.name} in ${interaction.guild ? interaction.guild.name : "DM"} with arguments: ${interaction.options.data.length > 0 ? interaction.options.data.map(arg => { return `${arg.name}: ${arg.value}`; }).join(", ") : "no args"}`, "cmd"); client.logger.log(`User ${interaction.user.discriminator === "0" ? interaction.user.username : interaction.user.tag} used ${command.command.name} in ${interaction.guild ? interaction.guild.name : "DM"} with arguments: ${interaction.options.data.length > 0 ? interaction.options.data.map(arg => { return `${arg.name}: ${arg.value}`; }).join(", ") : "no args"}`, "cmd");

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Toggles messages when a user leaves the server", "DESCRIPTION": "Toggles messages when a user leaves the server",
"USAGE": "config [state] [#channel] [message] [image]\nOr [test]", "USAGE": "config [state] [#channel] [message] [image]\nOr [test]",
"EXAMPLES": "goodbye state:True channel:#welcome Goodbye! image:True\ngoodbye test", "EXAMPLES": "goodbye config state:True channel:#welcome Goodbye! image:True\ngoodbye test",
"TEST": "Test", "TEST": "Test",
"TEST_SUCCESS": "Test successful", "TEST_SUCCESS": "Test successful",
"CONFIG": "Configure", "CONFIG": "Configure",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Toggles welcome messages when a user joins the server", "DESCRIPTION": "Toggles welcome messages when a user joins the server",
"USAGE": "config [state] [#channel] [message] [image]\nOr [test]", "USAGE": "config [state] [#channel] [message] [image]\nOr [test]",
"EXAMPLES": "welcome state:True channel:#welcome Welcome! image:True\nwelcome test", "EXAMPLES": "welcome config state:True channel:#welcome Welcome! image:True\nwelcome test",
"ENABLED": "Welcome messages are enabled in {{channel}}!\nUse `welcome test` to view the message", "ENABLED": "Welcome messages are enabled in {{channel}}!\nUse `welcome test` to view the message",
"DISABLED": "Welcome messages are disabled", "DISABLED": "Welcome messages are disabled",
"DEFAULT_MESSAGE": "Welcome, {user}! We now have {membercount} members", "DEFAULT_MESSAGE": "Welcome, {user}! We now have {membercount} members",

View file

@ -2,6 +2,7 @@
"ACCEPT": "Accept", "ACCEPT": "Accept",
"ACTIVITY": "Activity", "ACTIVITY": "Activity",
"APPLY": "Apply", "APPLY": "Apply",
"ATTACHMENT": "Attachment",
"AUTHOR": "Author", "AUTHOR": "Author",
"AVAILABLE_OPTIONS": "Available options:", "AVAILABLE_OPTIONS": "Available options:",
"CATEGORY": "Category", "CATEGORY": "Category",

View file

@ -0,0 +1,8 @@
{
"DESCRIPTION": "Send an anonymous message to the selected channel",
"USAGE": "rpinfo [text] (attachment)\ninstalife [text] (attachment)",
"EXAMPLES": "sendmessage rpinfo text:Happy New Year, everyone!\nsendmessage instalife text:Accident at the Police Station! attachment:<image>",
"RPINFO": "Send a message to RP Info",
"INSTALIFE": "Send a message to InstaLife",
"MESSAGE_SENT": "Message sent!\n{{message}}"
}

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Включить или отключить сообщения при выходе пользователя с сервера", "DESCRIPTION": "Включить или отключить сообщения при выходе пользователя с сервера",
"USAGE": "config [state] [#channel] [message] [image] \nИли [test]", "USAGE": "config [state] [#channel] [message] [image] \nИли [test]",
"EXAMPLES": "goodbye state:True channel:#welcome Прощай! image:True\ngoodbye test", "EXAMPLES": "goodbye config state:True channel:#welcome Прощай! image:True\ngoodbye test",
"TEST": "Проверить", "TEST": "Проверить",
"TEST_SUCCESS": "Тест выполнен", "TEST_SUCCESS": "Тест выполнен",
"CONFIG": "Настроить", "CONFIG": "Настроить",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Включить или отключить сообщения при входе пользователя на сервер", "DESCRIPTION": "Включить или отключить сообщения при входе пользователя на сервер",
"USAGE": "config [state] [#channel] [message] [image] \nИли [test]", "USAGE": "config [state] [#channel] [message] [image] \nИли [test]",
"EXAMPLES": "welcome state:True channel:#welcome Добро пожаловать! image:True\nwelcome test", "EXAMPLES": "welcome config state:True channel:#welcome Добро пожаловать! image:True\nwelcome test",
"ENABLED": "Приветствующие сообщения включены в {{channel}}!\nИспользуйте `welcome test` для просмотра сообщения", "ENABLED": "Приветствующие сообщения включены в {{channel}}!\nИспользуйте `welcome test` для просмотра сообщения",
"DISABLED": "Приветствующие сообщения отключены", "DISABLED": "Приветствующие сообщения отключены",
"DEFAULT_MESSAGE": "Добро пожаловать {user}! Нас теперь {membercount}", "DEFAULT_MESSAGE": "Добро пожаловать {user}! Нас теперь {membercount}",

View file

@ -2,6 +2,7 @@
"ACCEPT": "Принять", "ACCEPT": "Принять",
"ACTIVITY": "Активность", "ACTIVITY": "Активность",
"APPLY": "Применить", "APPLY": "Применить",
"ATTACHMENT": "Вложение",
"AUTHOR": "Автор", "AUTHOR": "Автор",
"AVAILABLE_OPTIONS": "Доступные параметры:", "AVAILABLE_OPTIONS": "Доступные параметры:",
"CATEGORY": "Категория", "CATEGORY": "Категория",

View file

@ -0,0 +1,8 @@
{
"DESCRIPTION": "Отправить анонимноее сообщение в выбранный канал",
"USAGE": "rpinfo [text] (attachment)\ninstalife [text] (attachment)",
"EXAMPLES": "sendmessage rpinfo text:Всех с новым годом!\nsendmessage instalife text:Авария в ПУ! attachment:<image>",
"RPINFO": "Отправить сообщение в RP Info",
"INSTALIFE": "Отправить сообщение в InstaLife",
"MESSAGE_SENT": "Сообщение отправлено!\n{{message}}"
}

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Увімкнути або вимкнути повідомлення при виході користувача з сервера", "DESCRIPTION": "Увімкнути або вимкнути повідомлення при виході користувача з сервера",
"USAGE": "config [state] [#channel] [message] [image] \nАбо [test]", "USAGE": "config [state] [#channel] [message] [image] \nАбо [test]",
"EXAMPLES": "goodbye state:True channel:#welcome Прощай! image:True\ngoodbye test", "EXAMPLES": "goodbye config state:True channel:#welcome Прощай! image:True\ngoodbye test",
"TEST": "Перевірити", "TEST": "Перевірити",
"TEST_SUCCESS": "Тест виконано", "TEST_SUCCESS": "Тест виконано",
"CONFIG": "Налаштувати", "CONFIG": "Налаштувати",

View file

@ -1,7 +0,0 @@
{
"DESCRIPTION": "Встановити канал для вітання з днем народження",
"USAGE": "[state] (#channel)",
"EXAMPLES": "setbirthdays state:True channel:#birthdays\nsetbirthdays state:False",
"ENABLED": "Привітання включені в канал **{{channel}}**",
"DISABLED": "Вітання відключені"
}

View file

@ -1,7 +0,0 @@
{
"DESCRIPTION": "Встановити канал для логів модерації",
"USAGE": "[state] (#channel)",
"EXAMPLES": "setmodlogs state:True channel:#логи\nsetmodlogs state:False",
"ENABLED": "Логи модерації включені в канал **{{channel}}**",
"DISABLED": "Логи модерації вимкнені"
}

View file

@ -1,7 +0,0 @@
{
"DESCRIPTION": "Встановити канал для новин бота",
"USAGE": "[state] (#channel)",
"EXAMPLES": "setnews state:True channel:#bot-news\nsetnews state:False",
"ENABLED": "Новини бота включені в канал **{{channel}}**",
"DISABLED": "Новини бота вимкнені"
}

View file

@ -1,7 +0,0 @@
{
"DESCRIPTION": "Встановити канал для скарг",
"USAGE": "[state] (#channel)",
"EXAMPLES": "setreports state:True channel:#скарги\nsetreports state:False",
"ENABLED": "Скарги надсилатимуться в **{{channel}}**",
"DISABLED": "Скарги відключені"
}

View file

@ -1,7 +0,0 @@
{
"DESCRIPTION": "Встановити канал для пропозицій",
"USAGE": "[state] (#channel)",
"EXAMPLES": "setsuggests state:True channel:#пропозиції\nsetsuggests state:False",
"ENABLED": "Пропозиції надсилатимуться в **{{channel}}**",
"DISABLED": "Пропозиції вимкнено"
}

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Увімкнути або вимкнути повідомлення під час входу користувача на сервер", "DESCRIPTION": "Увімкнути або вимкнути повідомлення під час входу користувача на сервер",
"USAGE": "config [state] [#channel] [message] [image] \nАбо [test]", "USAGE": "config [state] [#channel] [message] [image] \nАбо [test]",
"EXAMPLES": "welcome state:True channel:#welcome Ласкаво просимо! image:True\nwelcome test", "EXAMPLES": "welcome config state:True channel:#welcome Ласкаво просимо! image:True\nwelcome test",
"ENABLED": "Привітальні повідомлення включені до {{channel}}!\nВикористовуйте `welcome test` для перегляду повідомлення", "ENABLED": "Привітальні повідомлення включені до {{channel}}!\nВикористовуйте `welcome test` для перегляду повідомлення",
"DISABLED": "Привітання відключено", "DISABLED": "Привітання відключено",
"DEFAULT_MESSAGE": "Ласкаво просимо {user}! Нас тепер {membercount}", "DEFAULT_MESSAGE": "Ласкаво просимо {user}! Нас тепер {membercount}",

View file

@ -2,6 +2,7 @@
"ACCEPT": "Прийняти", "ACCEPT": "Прийняти",
"ACTIVITY": "Активність", "ACTIVITY": "Активність",
"APPLY": "Застосувати", "APPLY": "Застосувати",
"ATTACHMENT": "Вложение",
"AUTHOR": "Автор", "AUTHOR": "Автор",
"AVAILABLE_OPTIONS": "Доступні параметри:", "AVAILABLE_OPTIONS": "Доступні параметри:",
"CATEGORY": "Категорія", "CATEGORY": "Категорія",

View file

@ -0,0 +1,8 @@
{
"DESCRIPTION": "Надіслати анонімне повідомлення до обраного каналу",
"USAGE": "rpinfo [текст] (вкладення)\ninstalife [текст] (вкладення)",
"EXAMPLES": "sendmessage rpinfo text:Всім з новим роком!\nsendmessage instalife text:Аварія в ВП! вкладення:<зображення>",
"RPINFO": "Надіслати повідомлення в RP Info",
"INSTALIFE": "Надіслати повідомлення в InstaLife",
"MESSAGE_SENT": "Повідомлення відправлено!\n{{message}}"
}

View file

@ -1,6 +1,6 @@
{ {
"name": "jaba", "name": "jaba",
"version": "4.2.5", "version": "4.2.6",
"description": "My Discord Bot", "description": "My Discord Bot",
"main": "index.js", "main": "index.js",
"private": true, "private": true,