Skip to content
This repository was archived by the owner on Sep 28, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 42 additions & 28 deletions commands/Music/play.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,23 +47,8 @@ module.exports = {
autoPlay: true
});

if (isYouTubeUrl(query)) {
const canDirect = await YoutubeDirectSchema.findOne({
userId: interaction.user.id
});

if (!(canDirect && canDirect.userId && canDirect.userId == interaction.user.id)) return interaction.editReply({
embeds: [
new EmbedBuilder()
.setColor(Colors.Red)
.setTitle(locale.getLocaleString("command.play.youtube.disabled"))
.setDescription(locale.getLocaleString("command.play.youtube.disabled.description"))
]
});
}

if (user_source ? sources[user_source.source].require.includes("YOUTUBE_DIRECT") : false) {
const canDirect = await YoutubeDirectSchema.findOne({
async function checkYoutubeDirect() {
const ytDirect = await YoutubeDirectSchema.findOne({
userId: interaction.user.id
});

Expand All @@ -75,17 +60,46 @@ module.exports = {
const adsActionRow = new ActionRowBuilder()
.addComponents(adsButton);

if (!(canDirect && canDirect.userId && canDirect.userId == interaction.user.id)) return interaction.editReply({
embeds: [
new EmbedBuilder()
.setColor(Colors.Red)
.setDescription(locale.getLocaleString("youtube.direct.disable.text"))
.setImage("https://cdn.jsdelivr.net/gh/HStudioDiscordBot/Storage@main/ads/HStudio.ads.youtube_direct_user.png")
],
components: [
adsActionRow
]
});
if (!ytDirect) {
await interaction.editReply({
embeds: [
new EmbedBuilder()
.setColor(Colors.Red)
.setDescription(locale.getLocaleString("youtube.direct.disable.text"))
.setImage("https://cdn.jsdelivr.net/gh/HStudioDiscordBot/Storage@main/ads/HStudio.ads.youtube_direct_user.png")
],
components: [
adsActionRow
]
});
return false;
} else if ((ytDirect.expireAt ? ytDirect.expireAt.getTime() < Date.now() : false) && !ytDirect.infinity) {
await interaction.editReply({
embeds: [
new EmbedBuilder()
.setColor(Colors.Red)
.setDescription(locale.getLocaleString("youtube.direct.disable.expired"))
],
components: [
adsActionRow
]
});
return false;
} else {
return true;
}
}

if (isYouTubeUrl(query)) {
if (!(await checkYoutubeDirect())) {
return;
}
}

if (user_source ? sources[user_source.source].require.includes("YOUTUBE_DIRECT") : false) {
if (!(await checkYoutubeDirect())) {
return;
}
}

if (isHStudioPlayUrl(query)) {
Expand Down
1 change: 1 addition & 0 deletions locales/en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -121,5 +121,6 @@
"command.setting.search.save.fail": "❌ Fail to save default source with `{0}`",
"youtube.direct.disable.text": "# Want to listen to music directly from YouTube?\nYou can easily order through the HStudio website\n\n**[Support Discord](https://discord.gg/GzTbuZHTEx)**",
"youtube.direct.disable.button.text": "Buy now",
"youtube.direct.disable.expired": "# Youtube Directly is expired\nYou can't use this feature anymore\nYou can order through the Studio website",
"interaction.client.notOnline": "❌ The bot is not online"
}
9 changes: 9 additions & 0 deletions schemas/YoutubeDirect.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@ const { model, Schema } = require("mongoose");

module.exports = model("youtubeDirect", new Schema({
userId: String,
expireAt: {
type: Date,
required: false
},
infinity: {
type: Boolean,
required: true,
default: false
},
}, {
timestamps: true
}));