【问题标题】:Fetch bot messages from bots Discord.js从机器人 Discord.js 获取机器人消息
【发布时间】:2018-06-05 17:19:50
【问题描述】:

我正在尝试制作一个机器人来获取频道中以前的机器人消息,然后将它们删除。我目前有这段代码可以在输入!clearMessages 时删除频道中的所有消息:

if (message.channel.type == 'text') {
    message.channel.fetchMessages().then(messages => {
        message.channel.bulkDelete(messages);
        messagesDeleted = messages.array().length; // number of messages deleted

        // Logging the number of messages deleted on both the channel and console.
        message.channel.send("Deletion of messages successful. Total messages deleted: "+messagesDeleted);
        console.log('Deletion of messages successful. Total messages deleted: '+messagesDeleted)
    }).catch(err => {
        console.log('Error while doing Bulk Delete');
        console.log(err);
    });
}

我希望机器人仅从该频道中的所有机器人消息中获取消息,然后删除这些消息。

我该怎么做?

【问题讨论】:

    标签: javascript node.js bots discord discord.js


    【解决方案1】:

    每个Message 都有一个代表Userauthor property。每个User 都有一个bot property,用于指示用户是否是机器人。

    使用该信息,我们可以过滤掉不是带有messages.filter(msg => msg.author.bot) 的机器人消息的消息:

    if (message.channel.type == 'text') {
        message.channel.fetchMessages().then(messages => {
            const botMessages = messages.filter(msg => msg.author.bot);
            message.channel.bulkDelete(botMessages);
            messagesDeleted = botMessages.array().length; // number of messages deleted
    
            // Logging the number of messages deleted on both the channel and console.
            message.channel.send("Deletion of messages successful. Total messages deleted: " + messagesDeleted);
            console.log('Deletion of messages successful. Total messages deleted: ' + messagesDeleted)
        }).catch(err => {
            console.log('Error while doing Bulk Delete');
            console.log(err);
        });
    }
    

    【讨论】:

    • 非常感谢安德烈!也是一个快速的问题。我还想删除以 !/./> 开头的消息(这些消息不仅可以来自用户),因此我尝试使用 const botMessages 将行编辑为:const botMessages = messages.filter(msg => msg.author.bot && msg.content.startsWith("!" || "." || ">"));,但这不起作用。你能指出我哪里出错了,我该如何解决这个问题?非常感谢。
    • 我注意到的另一个问题是,当只有 1 条机器人消息时,机器人不会删除该消息并出现 DiscordAPIError,表示您必须提供至少 2-100 条消息才能删除。有解决办法吗?
    • 我将为此提出一个新问题。
    • 想关注@qttqtt后续问题的朋友可以关注here
    猜你喜欢
    • 2021-02-01
    • 2021-12-13
    • 1970-01-01
    • 2020-07-18
    • 2022-08-05
    • 2020-09-08
    • 2018-06-18
    • 2020-08-27
    • 2021-05-08
    相关资源
    最近更新 更多