首页 > 解决方案 > TypeError:无法读取 null 的属性“awaitMessages”

问题描述

我试图让机器人将用户输入从 dm 输出到控制台,但它一直返回此错误代码。我试过person.dmChannel.awaitMessages了,但收到了同样的错误,我也试过person.id.dmChannel.awaitMessages了,但收到了同样的错误。

    const Discord = require('discord.js');
    const intents = new Discord.Intents(32767);
    const client = new Discord.Client({ intents });
    const config = require('./config.json');
    client.on("message", (message) => {
        if (message.author.bot) return;
        const filter = (m) => m.author.id === message.author.id;
        const person = message.author;
        if (message.content === "!match") {
            message.channel.send("<@" + message.author.id + "> please check your Dm")
            person.send("blah blah blah ? ? ")
            person.dmChannel.awaitMessages({ filter, max: 1, time: 300000, errors: ['time'] })
                .then((collected) => {
                    console.log(collected.size)
                    const msg = collected.first()
                    console.log(msg.content)
                })
        }
    })
    client.login(config.token) 

标签: node.jsdiscord.js

解决方案


User.dmChannel不保证有值。你应该User.createDM改用。

const dm = await person.createDM()
//keep in mind createDM is an async function and needs to be awaited (in async callback)
dm.awaitMessages({ filter, max: 1, time: 300000, errors: ['time'] })

推荐阅读