使用 discord.js 和 Node.js 清除所有不是图像或链接的消息 [关闭]

Posted

技术标签:

【中文标题】使用 discord.js 和 Node.js 清除所有不是图像或链接的消息 [关闭]【英文标题】:Clear all messages that are not images or links by using discord.js and Node.js [closed] 【发布时间】:2021-08-27 16:14:07 【问题描述】:

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

【问题讨论】:

【参考方案1】:

这里:

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

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

【讨论】:

【参考方案2】:

要检查消息是否包含图像,您可以检查集合<Message>.attachments.first(),如果没有附加图像,这将返回 false。

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

一种检查链接的方法是查看&lt;Message&gt;.content是否以'http'开头

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

不过,绕过这一点很容易。您可能想查看Regular Expressions (Regex)

&lt;Message&gt; 是您的消息对象的占位符。

【讨论】:

不幸的是,消息不必以 http 开头开始。它可以包含在中间。 这就是为什么我加入了“一种方法来检查链接......”。还假设消息的内容只是基于 OP 帖子中的措辞的链接。否则是的,它们可以在字符串中的任何位置 那很好,但是如何启动计时器呢? 你可以有一个布尔值来决定是否应该删除消息。让setTimeout() 函数在 24 小时后以毫秒为单位更改布尔值

以上是关于使用 discord.js 和 Node.js 清除所有不是图像或链接的消息 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章