使用discord.js和Node.js清除所有不是图片或链接的消息



我在JavaScript中有一个不协调的机器人,我需要在24小时内启动一个计时器,并清除某个频道中的所有消息,如果它们不是图片或链接,因为我不知道计时器在这里是如何工作的,也不知道如何区分带文本的消息和带图片的消息,请帮忙(请不要写现成的脚本,但至少解释一下它的工作原理:(

要检查消息是否包含图像,可以检查Collection<Message>.attachments.first(),如果未附加图像,则返回false。

const image = <Message>.attachments.first();
if (!image) <Message>.delete();

检查链接的一种方法是查看<Message>.content是否以'http'开头

const hasLink = <Message>.content.startsWith('http');
if (!hasLink) <Message>.delete();

然而,绕过这一点非常容易。您可能想要查看正则表达式(Regex(

<Message>是消息对象的占位符。

此处:

if(!message.attachments.first() && !message.content.match(/https?://.+/)) message.delete();

正则表达式查找"http"、可选的"s"以及链接的其余部分。如果它本身就是一个链接,我不相信有什么值得关注的。

最新更新