node.js - 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)
解决方案
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'] })
推荐阅读
- html - 没有协议和域如何创建锚点?
- php - 如何正确禁用用户的 Wordpress 注销确认?
- aws-lambda - Node.js 从 dynamoDB 获取项目并传递变量
- r - R正则表达式:匹配两个单词彼此靠近的字符串,但有异常
- neo4j - neo4j 连接有困难
- c# - 通过覆盖 BlazorComponent.BuildRenderTree(RenderTreeBuilder builder) 创建组件
- node.js - node js AT 命令返回 +CMS ERROR: 302
- go - 为什么 Go 在名称解析中查询 /etc/hosts 两次?
- java - Java 模块词汇表
- java - OWLApi:无法创建隐士推理器实例