【问题标题】:How to delete text messages in an image-only channel?如何删除纯图片频道中的短信?
【发布时间】:2021-09-16 23:37:57
【问题描述】:

我制作了一个名为 YES 的不和谐机器人,并且我有一个仅用于图像的文本通道,并且我正在尝试使如果有文本消息,该机器人将删除它并回复“您无法发送短信”。我还为该机器人创建了一个白名单,因为我希望他能够发送短信。

client.on("message", async message => {
    var usernames = ["YES"]
    if (usernames.includes(message.author.username)) {
        if (message.attachments.size > 0) {
            message.delete();
            client.channels.cache.get("841260660960395287").send(message.author.username + ", you cannot send text")
        }
    }
})     

这根本不起作用,也没有显示任何错误。

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    您的 if 语句 if (message.attachments.size > 0) 正在检查 附件集合 的大小是否大于 0。所以它只会执行如果消息至少一个附件,则其中的代码。

    你可以应用这个:

    if (message.attachments.size)
    

    如果邮件没有附件,则“附件”集合应为空,在这种情况下,您要删除此邮件。¹

    你应该await<message>.delete()>函数,因为它返回一个promise

    await message.delete();
    // Further code
    

    OR²

    message.delete()
       .then(msg => console.log(`Deleted message from ${msg.author.username}`))
       .catch(error => console.log(error))
    

    很高兴知道:

    如果您想在字符串中使用变量,则不必使用所有的“+”。一个更简单、更快的解决方案是将' 替换为`,然后将您的变量 包装在${} 中。在您的代码中,它看起来像这样:

    client.channels.cache.get("841260660960395287").send(`${message.author.username}, you cannot send text`)
    

    您的固定代码现在应该如下所示:

    client.on('message', async message => {
        var usernames = ['YES'];
        if (usernames.includes(message.author.username)) {
            if (message.attachments.size) {
                await message.delete();
                client.channels.cache.get('841260660960395287').send(`${message.author.username}, you cannot send text`);
            }
        }
    });    
    

    参考

    【讨论】:

    • @Uriyah Liberman 如果这解决了您的问题,如果您将此答案标记为已接受,我会很高兴:)
    【解决方案2】:

    这里的问题在于您的 if 语句逻辑。它正在检查邮件是否有多个附件,然后将其删除。这就是问题所在,因此通过检查集合的大小是否为 0 (=== 0),您的程序将成功运行。

    【讨论】:

    • 这没有帮助。
    • 抱歉,我自己的答案好像写的不正确,我已经修复了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    相关资源
    最近更新 更多