Новые команды clips и clips

This commit is contained in:
JonnyBro 2021-12-12 20:40:14 +05:00
parent c50964e41a
commit 9694193ab0
25 changed files with 137 additions and 31 deletions

5
.gitignore vendored
View file

@ -24,4 +24,7 @@ report*.json
.vscode .vscode
# commands.md # commands.md
**/commands.md **/commands.md
# Clips
clips

View file

@ -74,7 +74,7 @@ class Backup extends Command {
backup.fetch(backupID).then(async (backupInfos) => { backup.fetch(backupID).then(async (backupInfos) => {
const embed = new Discord.MessageEmbed() const embed = new Discord.MessageEmbed()
.setAuthor(message.translate("administration/backup:TITLE_INFOS")) .setAuthor(message.translate("administration/backup:TITLE_INFO"))
// Display the backup ID // Display the backup ID
.addField(message.translate("administration/backup:TITLE_ID"), backupInfos.id, true) .addField(message.translate("administration/backup:TITLE_ID"), backupInfos.id, true)
// Displays the server from which this backup comes // Displays the server from which this backup comes

View file

@ -26,7 +26,8 @@ class Profile extends Command {
async run (message, args, data) { async run (message, args, data) {
const client = this.client; const client = this.client;
let member = await client.resolveMember(args[0], message.guild); const arg = args[0] || message.author
let member = await client.resolveMember(arg, message.guild);
if (!member) member = message.member; if (!member) member = message.member;
// Check if the user is a bot // Check if the user is a bot
@ -43,8 +44,8 @@ class Profile extends Command {
let globalMoney = 0; let globalMoney = 0;
await asyncForEach(commonsGuilds.array(), async (guild) => { await asyncForEach(commonsGuilds.array(), async (guild) => {
const memberData = await client.findOrCreateMember({ id: member.id, guildID: guild.id }); const memberData = await client.findOrCreateMember({ id: member.id, guildID: guild.id });
globalMoney+=memberData.money; globalMoney += memberData.money;
globalMoney+=memberData.bankSold; globalMoney += memberData.bankSold;
}); });
const profileEmbed = new Discord.MessageEmbed() const profileEmbed = new Discord.MessageEmbed()

View file

@ -17,8 +17,7 @@ class Ping extends Command {
} }
async run (message) { async run (message) {
message.sendT("general/ping:CONTENT", { ping: "..." message.sendT("general/ping:CONTENT", { ping: "..." }).then((m) => {
}).then((m) => {
m.sendT("general/ping:CONTENT", { ping: m.createdTimestamp - message.createdTimestamp }, { edit: true }); m.sendT("general/ping:CONTENT", { ping: m.createdTimestamp - message.createdTimestamp }, { edit: true });
}); });
} }

47
commands/Music/clip.js Normal file
View file

@ -0,0 +1,47 @@
const Command = require("../../base/Command.js"),
fs = require("fs");
class Clip extends Command {
constructor (client) {
super(client, {
name: "clip",
dirname: __dirname,
enabled: true,
guildOnly: true,
aliases: [],
memberPermissions: [],
botPermissions: [ "SEND_MESSAGES", "EMBED_LINKS" ],
nsfw: false,
ownerOnly: false,
cooldown: 5000
});
}
async run (message, args) {
const voice = message.member.voice.channel;
if (!args[0]) return message.error("music/clip:NO_ARG");
if (!fs.existsSync(`./clips/${args[0]}.mp3`)) return message.error("music/clip:NO_FILE", { file: args[0] });
if (!voice) return message.error("music/play:NO_VOICE_CHANNEL");
if (this.client.player.isPlaying()) return message.error("music/clip:ACTIVE_QUEUE");
try {
const connection = await voice.join();
await connection.voice.setSelfDeaf(true);
connection
.play(`./clips/${args[0]}.mp3`)
.on("finish", () => {
voice.leave();
})
.on("error", err => {
voice.leave();
console.error(err);
});
} catch (error) {
console.error(error);
};
}
};
module.exports = Clip;

42
commands/Music/clips.js Normal file
View file

@ -0,0 +1,42 @@
const Command = require("../../base/Command.js"),
Discord = require("discord.js"),
fs = require("fs");
class Clips extends Command {
constructor (client) {
super(client, {
name: "clips",
dirname: __dirname,
enabled: true,
guildOnly: true,
aliases: [],
memberPermissions: [],
botPermissions: [ "SEND_MESSAGES", "EMBED_LINKS" ],
nsfw: false,
ownerOnly: false,
cooldown: 5000
});
}
async run (message, args, data) {
fs.readdir("./clips", function(err, files) {
if (err) return console.log("Unable to read directory: " + err);
let clips = [];
files.forEach(function(file) {
clips.push(file.substring(0, file.length - 4));
});
const embed = new Discord.MessageEmbed()
.setTitle("**Список клипов:**")
.setDescription(clips.join("\n"))
.setColor(data.config.embed.color)
.setFooter(data.config.embed.footer)
.setTimestamp()
message.channel.send(embed);
});
}
};
module.exports = Clips;

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Управление резервными копиями сервера!", "DESCRIPTION": "Управление резервными копиями сервера!",
"USAGE": "{{prefix}}backup [create/load/infos]", "USAGE": "{{prefix}}backup [create/load/info]",
"EXAMPLES": "{{prefix}}backup create\n{{prefix}}backup load 123456789098765432\n{{prefix}}backup infos 123456789098765432", "EXAMPLES": "{{prefix}}backup create\n{{prefix}}backup load 123456789098765432\n{{prefix}}backup info 123456789098765432",
"MISSING_STATUS": "Выберите действие: `create`, `load` или `info`!", "MISSING_STATUS": "Выберите действие: `create`, `load` или `info`!",
"MISSING_BACKUP_ID": "Пожалуйста, укажите ID резервной копии!", "MISSING_BACKUP_ID": "Пожалуйста, укажите ID резервной копии!",
"NO_BACKUP_FOUND": "Резервных копий для `{{backupID}} не найдено`", "NO_BACKUP_FOUND": "Резервных копий для `{{backupID}} не найдено`",
@ -11,7 +11,7 @@
"CONFIRMATION": ":warning: | **Загрузка резервной копии заменит настройки текущего сервера.**\n\n:arrow_right_hook: *Отправьте `confirm` для подтверждения!*", "CONFIRMATION": ":warning: | **Загрузка резервной копии заменит настройки текущего сервера.**\n\n:arrow_right_hook: *Отправьте `confirm` для подтверждения!*",
"START_LOADING": "Загрузка резервной копии начата, пожалуйста подождите!", "START_LOADING": "Загрузка резервной копии начата, пожалуйста подождите!",
"LOAD_SUCCESS": "Резервная копия загружена!", "LOAD_SUCCESS": "Резервная копия загружена!",
"TITLE_INFOS": "Информация о резервной копии", "TITLE_INFO": "Информация о резервной копии",
"TITLE_ID": "ID", "TITLE_ID": "ID",
"TITLE_SERVER_ID": "ID сервера", "TITLE_SERVER_ID": "ID сервера",
"TITLE_SIZE": "Размер", "TITLE_SIZE": "Размер",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Включить или отключить прощальные сообщения!", "DESCRIPTION": "Включить или отключить прощальные сообщения!",
"USAGE": "{{prefix}}goodbye", "USAGE": "{{prefix}}goodbye (test)",
"EXAMPLES": "{{prefix}}goodbye", "EXAMPLES": "{{prefix}}goodbye\n{{prefix}}goodbye test",
"DEFAULT_MESSAGE": "Пока, {user}! Нас теперь {membercount} без тебя :'(", "DEFAULT_MESSAGE": "Пока, {user}! Нас теперь {membercount} без тебя :'(",
"TEST_SUCCESS": "Тест выполнен!", "TEST_SUCCESS": "Тест выполнен!",
"FORM_1": "**В какой канал будут отправляться прощальные сообщения?**\n\n:arrow_right_hook: *Отправьте упоминание канала!*", "FORM_1": "**В какой канал будут отправляться прощальные сообщения?**\n\n:arrow_right_hook: *Отправьте упоминание канала!*",
@ -11,6 +11,6 @@
"MAX_CHARACT": "Ваше сообщение не должно быть больше 1800 символов!", "MAX_CHARACT": "Ваше сообщение не должно быть больше 1800 символов!",
"DISABLED": "**Прощальные сообщения отключены!**\n\n:arrow_right_hook: *Используйте `{{prefix}}configuration`, чтобы увидеть обновлённые настройки!*", "DISABLED": "**Прощальные сообщения отключены!**\n\n:arrow_right_hook: *Используйте `{{prefix}}configuration`, чтобы увидеть обновлённые настройки!*",
"IMG_GOODBYE": "Вышел с сервера {{server}}!", "IMG_GOODBYE": "Вышел с сервера {{server}}!",
"IMG_NB": "- {{memberCount}}ый участник!", "IMG_NB": "{{memberCount}}ый участник!",
"TITLE": "Прощание" "TITLE": "Прощание"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Включить или отключить приветственные сообщения!", "DESCRIPTION": "Включить или отключить приветственные сообщения!",
"USAGE": "{{prefix}}welcome", "USAGE": "{{prefix}}welcome (test)",
"EXAMPLES": "{{prefix}}welcome", "EXAMPLES": "{{prefix}}welcome\n{{prefix}}welcome test",
"MISSING_STATUS": "Выберите действие: `edit` или `off`", "MISSING_STATUS": "Выберите действие: `edit` или `off`",
"DEFAULT_MESSAGE": "Добро пожаловать на сервер {server}, {user}, теперь нас {membercount}! Ваш аккаунт был создан {createdat}.", "DEFAULT_MESSAGE": "Добро пожаловать на сервер {server}, {user}, теперь нас {membercount}! Ваш аккаунт был создан {createdat}.",
"TEST_SUCCESS": "Тест выполнен!", "TEST_SUCCESS": "Тест выполнен!",

View file

@ -1,6 +1,6 @@
{ {
"DESCRIPTION": "Установить день рождения", "DESCRIPTION": "Установить день рождения",
"USAGE": "{{prefix}}birthdate (дата)", "USAGE": "{{prefix}}birthdate [дата]",
"EXAMPLES": "{{prefix}}birthdate 01/01/2010", "EXAMPLES": "{{prefix}}birthdate 01/01/2010",
"MISSING_DATE": "Пожалуйста, укажите правильную дату! Например, 20/11/2003", "MISSING_DATE": "Пожалуйста, укажите правильную дату! Например, 20/11/2003",
"INVALID_DATE": "Используйте данный фортам: ДД/ММ/ГГГГ. Например, `1 января 2010` будет `01/01/2010`.", "INVALID_DATE": "Используйте данный фортам: ДД/ММ/ГГГГ. Например, `1 января 2010` будет `01/01/2010`.",

View file

@ -1,13 +1,13 @@
{ {
"DESCRIPTION": "Показать ваш или чужой профиль", "DESCRIPTION": "Показать ваш или чужой профиль",
"USAGE": "{{prefix}}profile [@пользователь]", "USAGE": "{{prefix}}profile (@пользователь)",
"EXAMPLES": "{{prefix}}profile @Jonny_Bro#4226\n{{prefix}}profile", "EXAMPLES": "{{prefix}}profile @Jonny_Bro#4226\n{{prefix}}profile",
"TITLE": "Профиль {{username}}", "TITLE": "Профиль {{username}}",
"NO_BIO": "", "NO_BIO": "",
"BOT_USER": "У ботов нет профилей!", "BOT_USER": "У ботов нет профилей!",
"CASH": "💵 Кредиты", "CASH": "💵 Кредиты",
"BANK": "💳 Банк", "BANK": "💳 Банк",
"GLOBAL": "🌍 Всего денег", "GLOBAL": "🌍 Всего денег на всех серверах",
"MONEY": "**{{money}}** кредит(а/ов)", "MONEY": "**{{money}}** кредит(а/ов)",
"REPUTATION": "🎩 Репутация", "REPUTATION": "🎩 Репутация",
"REP_POINTS": "**{{points}}** очко(а/ов)", "REP_POINTS": "**{{points}}** очко(а/ов)",

View file

@ -1,6 +1,6 @@
{ {
"DESCRIPTION": "Я говорю правду!", "DESCRIPTION": "Я говорю правду!",
"USAGE": "{{prefix}}8ball [вопрос]", "USAGE": "{{prefix}}8ball [вопрос?]",
"EXAMPLES": "{{prefix}}8ball JaBa крутой?", "EXAMPLES": "{{prefix}}8ball JaBa крутой?",
"ERR_QUESTION": "Введите вопрос!", "ERR_QUESTION": "Введите вопрос!",
"RESPONSE_1": "я уверен в этом.", "RESPONSE_1": "я уверен в этом.",

View file

@ -1,6 +1,6 @@
{ {
"DESCRIPTION": "Превратить текст в ASCII!", "DESCRIPTION": "Превратить текст в ASCII!",
"USAGE": "{{prefix}}ascii [текс]", "USAGE": "{{prefix}}ascii [текст]",
"EXAMPLES": "{{prefix}}ascii Hello world!", "EXAMPLES": "{{prefix}}ascii Hello world!",
"TEXT_MISSING": "Введите текст (не больше 20 символов)!" "TEXT_MISSING": "Введите текст (не больше 20 символов)!"
} }

View file

@ -5,5 +5,5 @@
"MISSING": "Укажите больше двух вариантов!\n(либо используйте команду `flip`)", "MISSING": "Укажите больше двух вариантов!\n(либо используйте команду `flip`)",
"EMPTY": "Кажется один из вариантов пустой.... Попробуйте ещё раз!", "EMPTY": "Кажется один из вариантов пустой.... Попробуйте ещё раз!",
"PROGRESS": "Выбираю...", "PROGRESS": "Выбираю...",
"DONE": "Вот мой выбор:" "DONE": "Мой выбор:"
} }

View file

@ -1,5 +1,5 @@
{ {
"DESCRIPTION": "Кинуть монетку!", "DESCRIPTION": "Подкинуть монетку!",
"USAGE": "{{prefix}}flip", "USAGE": "{{prefix}}flip",
"EXAMPLES": "{{prefix}}flip", "EXAMPLES": "{{prefix}}flip",
"HEADS": ":coin: | Орёл!", "HEADS": ":coin: | Орёл!",

View file

@ -1,5 +1,5 @@
{ {
"DESCRIPTION": "Создать изображение \"bed\"", "DESCRIPTION": "Создать изображение \"bed\"",
"USAGE": "{{prefix}}bed [@пользователь1] (@пользователь2)", "USAGE": "{{prefix}}bed (@пользователь1) (@пользователь2)",
"EXAMPLES": "{{prefix}}bed @Jonny_Bro#4226\n{{prefix}}bed @Jonny_Bro#4226 @Dkflbvbh k.hyfqc#9402" "EXAMPLES": "{{prefix}}bed @Jonny_Bro#4226\n{{prefix}}bed @Jonny_Bro#4226 @Dkflbvbh k.hyfqc#9402"
} }

View file

@ -1,5 +1,5 @@
{ {
"DESCRIPTION": "Создать изображение \"love\"", "DESCRIPTION": "Создать изображение \"love\"",
"USAGE": "{{prefix}}love [@пользователь1] (@пользователь2)", "USAGE": "{{prefix}}love (@пользователь1) (@пользователь2)",
"EXAMPLES": "{{prefix}}love @Jonny_Bro#4226\n{{prefix}}love @Jonny_Bro#4226 @JaBa#9042" "EXAMPLES": "{{prefix}}love @Jonny_Bro#4226\n{{prefix}}love @Jonny_Bro#4226 @JaBa#9042"
} }

View file

@ -1,6 +1,6 @@
{ {
"DESCRIPTION": "Создать изображение \"tweet\"", "DESCRIPTION": "Создать изображение \"tweet\"",
"USAGE": "{{prefix}}tweet [@пользователь_twitter] [текст]", "USAGE": "{{prefix}}tweet [@пользователь] [текст]",
"EXAMPLES": "{{prefix}}tweet @Jonny_Bro#4226 Люблю спать", "EXAMPLES": "{{prefix}}tweet @Jonny_Bro#4226 Люблю спать",
"MISSING_USERNAME": "Вы должны упомянуть пользователя!", "MISSING_USERNAME": "Вы должны упомянуть пользователя!",
"MISSING_TEXT": "Укажите текст!", "MISSING_TEXT": "Укажите текст!",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Управление раздачами!", "DESCRIPTION": "Управление раздачами!",
"USAGE": "{{prefix}}giveaway [create/reroll/delete/end] (время) (кол-во победителей) (приз)", "USAGE": "{{prefix}}giveaway [create/reroll/delete/end] (время) (кол-во победителей) (приз)",
"EXAMPLES": "{{prefix}}giveaway create 10m 2 100 рублей на QIWI!\n{{prefix}}giveaway reroll 597812898022031374", "EXAMPLES": "{{prefix}}giveaway create 10m 2 100 рублей на карту!\n{{prefix}}giveaway reroll 597812898022031374",
"MISSING_STATUS": "Выберите действие: `create`, `reroll`, `end` или `delete`!", "MISSING_STATUS": "Выберите действие: `create`, `reroll`, `end` или `delete`!",
"INVALID_CREATE": "Укажите параметры так: \n\n`{{prefix}}giveaway create [время] [кол-во победителей] [приз]`", "INVALID_CREATE": "Укажите параметры так: \n\n`{{prefix}}giveaway create [время] [кол-во победителей] [приз]`",
"MISSING_ID": "Укажите ID сообщения раздачи!", "MISSING_ID": "Укажите ID сообщения раздачи!",

View file

@ -1,6 +1,6 @@
{ {
"DESCRIPTION": "Кикнуть пользователя!", "DESCRIPTION": "Кикнуть пользователя!",
"USAGE": "{{prefix}}kick [@пользователь] (Причина)", "USAGE": "{{prefix}}kick [@пользователь] (причина)",
"EXAMPLES": "{{prefix}}kick @Jonny_Bro#4226 Спам", "EXAMPLES": "{{prefix}}kick @Jonny_Bro#4226 Спам",
"MISSING_MEMBER": "Вы должны упомянуть пользователя!", "MISSING_MEMBER": "Вы должны упомянуть пользователя!",
"MISSING_PERM": "Произошла ошибка... Проверьте, есть ли у вас право кикать пользователей и попробуйте снова!", "MISSING_PERM": "Произошла ошибка... Проверьте, есть ли у вас право кикать пользователей и попробуйте снова!",

View file

@ -4,5 +4,5 @@
"EXAMPLES": "{{prefix}}back", "EXAMPLES": "{{prefix}}back",
"NO_PREV_SONG": "Предыдущий трек отсутствует!", "NO_PREV_SONG": "Предыдущий трек отсутствует!",
"VOTE_CONTENT": "Предыдущий трек: {{songName}}\nОтреагируйте 👍, чтобы проголосовать за воспроизведение! Необходимо ещё {{requiredCount}} голосов.", "VOTE_CONTENT": "Предыдущий трек: {{songName}}\nОтреагируйте 👍, чтобы проголосовать за воспроизведение! Необходимо ещё {{requiredCount}} голосов.",
"SUCCESS": згает предыдущий трек!" "SUCCESS": грает предыдущий трек!"
} }

View file

@ -0,0 +1,8 @@
{
"DESCRIPTION": "Воспроизвести клип",
"USAGE": "{{prefix}}clip [название-файла]",
"EXAMPLES": "{{prefix}}clip haha",
"NO_ARG": "Укажите название файла",
"NO_FILE": "Файл {{file}} отсутствует!",
"ACTIVE_QUEUE": "Не могу воспроизвести клип, т.к. на сервере есть активная очередь"
}

View file

@ -0,0 +1,6 @@
{
"DESCRIPTION": "Показать список доступных звуков",
"USAGE": "{{prefix}}clips",
"EXAMPLES": "{{prefix}}clips",
"EMBED_TITLE": "**Список клипов**"
}

View file

@ -1,10 +1,10 @@
{ {
"DESCRIPTION": "Показать слова к песне", "DESCRIPTION": "Показать слова к песне",
"USAGE": "{{prefix}}lyrics [название-песни]", "USAGE": "{{prefix}}lyrics [название-трека]",
"EXAMPLES": "{{prefix}}lyrics Skyfall", "EXAMPLES": "{{prefix}}lyrics Skyfall",
"LYRICS_OF": "🎤 Текст {{songName}}", "LYRICS_OF": "🎤 Текст {{songName}}",
"AND_MORE": "\n**и т.д...**", "AND_MORE": "\n**и т.д...**",
"REST": "Больше", "REST": "Больше",
"MISSING_SONG_NAME": "Укажите название песни!", "MISSING_SONG_NAME": "Укажите название трека!",
"NO_LYRICS_FOUND": "Текста для `{{songName}}` не найдено!" "NO_LYRICS_FOUND": "Текста для `{{songName}}` не найдено!"
} }

View file

@ -1,6 +1,6 @@
{ {
"DESCRIPTION": "Начать воспроизведение трека!", "DESCRIPTION": "Начать воспроизведение трека!",
"USAGE": "{{prefix}}play [трек/ссылка]", "USAGE": "{{prefix}}play [название-трека/ссылка]",
"EXAMPLES": "{{prefix}}play Never Gonna Give You Up", "EXAMPLES": "{{prefix}}play Never Gonna Give You Up",
"NO_VOICE_CHANNEL": "Вы должны находиться в голосовом канале!", "NO_VOICE_CHANNEL": "Вы должны находиться в голосовом канале!",
"VOICE_CHANNEL_CONNECT": "Я не могу присоедениться к вашему голосовому каналу!", "VOICE_CHANNEL_CONNECT": "Я не могу присоедениться к вашему голосовому каналу!",