'setInterval() cannot be accessed or cleared after executing command discord.js
I'm trying to make an automemes command, and I can get the interval starting and working properly, but when I try to stop it, the commands gets executed again, starts a new interval and disables it instantly. I can't figure out how can I stop the interval. What can I do? code:
const { SlashCommandBuilder } = require("@discordjs/builders");
const fetch = (...args) => import("node-fetch").then(({default: fetch}) => fetch(...args));
module.exports = {
data: new SlashCommandBuilder()
.setName("automemes")
.setDescription("Sends random memes every 5 minutes (from r/memes)")
.addBooleanOption(option =>
option.setName("enabled")
.setDescription("Set the automemes to on/off")
.setRequired(true)),
async execute(client, interaction, Discord) {
let isEnabled = interaction.options.get("enabled").value;
async function sendMemes() {
fetch("https://meme-api.herokuapp.com/gimme/memes")
.then(res => res.json())
.then(async json => {
const Embed = new Discord.MessageEmbed()
.setTitle(json.title)
.setImage(json.url)
if (Embed.title.length > 256) return;
await interaction.channel.send({embeds: [Embed]});
});
}
let interval = setInterval(() => sendMemes(), 10000)
async function startInterval () {
interval;
interaction.reply("Automemes enabled! " + ENV.CATKISS);
}
async function disableInterval() {
clearInterval(interval);
interaction.reply("Automemes disabled! " + ENV.CATKISS);
}
isEnabled? startInterval() : disableInterval();
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
