首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除纯图片频道的文字信息?

问如何删除纯图片频道的文字信息?
EN

Stack Overflow用户
提问于 2021-07-06 18:25:48
回答 2查看 95关注 0票数 3

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

代码语言:javascript
复制
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")
        }
    }
})     

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

EN

回答 2

Stack Overflow用户

发布于 2021-07-06 20:05:43

您的if语句 if (message.attachments.size > 0)正在检查attachments集合的大小是否大于 0。因此,如果邮件至少有< code >E19一个附件,它将只执行其中的代码。

您可以应用以下内容:

代码语言:javascript
复制
if (message.attachments.size)

如果该邮件没有attachments,则集合"attachments“应为空,在这种情况下,您要删除此邮件。²

也是

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

代码语言:javascript
复制
await message.delete();
// Further code

或²

代码语言:javascript
复制
message.delete()
   .then(msg => console.log(`Deleted message from ${msg.author.username}`))
   .catch(error => console.log(error))

很高兴知道:

如果你想在一个字符串中使用变量,你不必使用所有的'+‘。一种更简单、更快的解决方案是用`替换',然后将变量包装在${}中。在您的代码中,它将如下所示:

代码语言:javascript
复制
client.channels.cache.get("841260660960395287").send(`${message.author.username}, you cannot send text`)

修复后的代码现在应该如下所示:

代码语言:javascript
复制
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`);
        }
    }
});    

参考文献

票数 1
EN

Stack Overflow用户

发布于 2021-07-06 18:32:49

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68268837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档