间隔不打开/关闭命令
我正在处理一个Discord Image命令,该命令每10秒发送一次随机图像。当我启动命令时,它可以正常工作。它开始每10秒发送一次图像,但是当我尝试停止它时,它不会。
怎么了?我该如何解决?
image.js
:
var Scraper = require('images-scraper');
const google = new Scraper({
puppeteer: {
headless: true,
},
});
var myinterval;
module.exports = {
name: 'image',
description: 'Sends profile pics)',
async execute(kaoru, message, args, Discord) {
//prefix "?"
const image_query = args.join(' ');
const image_results = await google.scrape(image_query, 100);
if (!image_query)
return message.channel.send('**Please enter name of the image!**');
if (image_query) {
message.delete();
myinterval = setInterval(function () {
message.channel.send(
image_results[Math.floor(Math.random() * (100 - 1)) + 1].url,
);
}, 10000);
} else if (message.content === '?stopp') {
clearInterval(myinterval);
message.reply('pinging successfully stopped!');
}
}
};
I am working on a discord image command that sends a random image every 10 seconds. When I start the command, it works. It starts sending images every 10 seconds, but when I try to make it stop, it just won't.
What went wrong? How can I fix this?
Image.js
:
var Scraper = require('images-scraper');
const google = new Scraper({
puppeteer: {
headless: true,
},
});
var myinterval;
module.exports = {
name: 'image',
description: 'Sends profile pics)',
async execute(kaoru, message, args, Discord) {
//prefix "?"
const image_query = args.join(' ');
const image_results = await google.scrape(image_query, 100);
if (!image_query)
return message.channel.send('**Please enter name of the image!**');
if (image_query) {
message.delete();
myinterval = setInterval(function () {
message.channel.send(
image_results[Math.floor(Math.random() * (100 - 1)) + 1].url,
);
}, 10000);
} else if (message.content === '?stopp') {
clearInterval(myinterval);
message.reply('pinging successfully stopped!');
}
}
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不能仅仅在
execute
方法中检查message.content
。它永远不会是?stopp
作为execute
仅在发送image
命令(即?image搜索术语
)时才会调用。 )。您可以做的是在同一频道中设置新消息收集器,并检查传入消息是否是您的
stop
命令。在下面的示例中,我使用代码> 。我还添加了很多评论。You can't just simply check the
message.content
inside theexecute
method. It will never be?stopp
asexecute
only called when you send theimage
command (i.e.?image search term
).What you can do instead is to set up a new message collector in the same channel and check if the incoming message is your
stop
command. In my example below I usedcreateMessageCollector
. I've also added plenty of comments.