簡體   English   中英

如何獲取客戶端用戶的最后一條消息?

[英]How do I Get the Client User's Last Message?

您如何獲得機器人最后一條消息的 object? 我嘗試做類似的事情:

if (message.content.split(' ')[0] === 'test') {
   message.channel.sendMessage('Test')
   console.log(client.user.lastMessage.content)
}

如果我觸發條件,控制台會給我一個錯誤: TypeError: Cannot read property 'content' of undefined

client.user.lastmessage值為null的原因是因為您剛剛啟動機器人,並且在您運行'test'命令之前它沒有發送任何消息。

要環游這個,我會檢查它是否為空(如果它不是)和關斷的機會,這就是使用MessageCollector並等待發送您的消息。

    if (client.user.lastMessage == null) {
        // Set the collector for the same channel
        // Ensure the id is the same
        var myID = client.user.id;
        // Create collector and wait for 5 seconds (overkill but you never know with bad internet/lots of traffic)
        const collector = new Discord.MessageCollector(msg.channel, m => m.author.id === myID, { time: 5000 });
        collector.on('collect', message => {
            console.log(message.content);
            collector.stop("Got my message");
        });
    } else {
        console.log(client.user.lastMessage.content);
    }

我測試的確切代碼塊:

    client.on('message', msg => {
        if (msg.content === '$ping') {
            msg.reply("Pong!")
            if (client.user.lastMessage == null) {
                const collector = new Discord.MessageCollector(msg.channel, m => m.author.id === client.user.id, { time: 10000 });
                collector.on('collect', message => {
                    console.log(message.content);
                    collector.stop("Got my message");
                })
            } else {
                console.log(client.user.lastMessage.content);
            }
        }
    }

你的代碼片段現在已經過時了。 從 Discord.js v13 起,以下屬性已被刪除(包括 lastMessage),因為它們不是由 Discord 提供且不可靠

  • 公會成員# lastMessage
  • 公會成員#lastMessageId
  • GuildMember#lastMessageChannelId

您必須實施自定義解決方案來手動跟蹤此信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM