我试图在discord.js中创建一个提醒命令,该命令带有两个参数:消息和应提醒的提到的用户。但是,这给了我一个错误。
这是我的代码:
client.on('message', (message) => {
const { content, guild, channel, author } = message;
if (!guild) return;
if (author.bot) return;
const args = content
.slice(process.env.PREFIX.length)
.trim()
.split(/ +/g);
const cmd = args.shift().toLowerCase();
if (cmd == 'remind') {
const remindeduser = message.mentions.users.first().id;
const msg = message.toString();
remindeduser.send(msg.slice(8));
}
});
我收到此错误:
/home/runner/ServerParty/index.js:82
remindeduser.send(msg.slice(8));
^
TypeError: remindeduser.send is not a function
at Client.<anonymous> (/home/runner/ServerParty/index.js:82:20)
at Client.emit (events.js:315:20)
at Client.EventEmitter.emit (domain.js:483:12)
at MessageCreateAction.handle (/home/runner/ServerParty/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (/home/runner/ServerParty/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (/home/runner/ServerParty/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)
at WebSocketShard.onPacket (/home/runner/ServerParty/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)
at WebSocketShard.onMessage (/home/runner/ServerParty/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)
at WebSocket.onMessage (/home/runner/ServerParty/node_modules/ws/lib/event-target.js:125:16)
我该如何解决?
答案 0 :(得分:0)
问题出在以下三行:
const remindeduser = message.mentions.users.first().id;
const msg = message.toString();
remindeduser.send(msg.slice(8));
首先,您无法在User Snowflake (ID)
上调用User.send()
函数
// change:
message.mentions.users.first().id;
// to:
message.mentions.users.first();
此外,要处理可能的错误,请添加以下行:
const remindeduser = message.mentions.users.first();
if (!remindeduser)
return message.channel.send('Please mention a user to remind');
const msg = message.toString();
remindeduser
.send(msg.slice(8))
.catch(() => message.channel.send('Cannot DM this user'));
第二,message.toString()
不是函数。 message
参数返回一个object
,其中包含消息的所有数据。例如,message.author
,message.guild
,message.id
等。
要获取消息中的实际文本,请使用message.content
,您已经将其定义为content
。
const msg = content.toString();
remindeduser.send(msg.slice(8));
此外,该行实际上没有任何用处。您已经有了args
变量。
// replace:
const msg = content.toString();
remindeduser.send(msg.slice(8))
// with:
remindeduser.send(args.join(' '))
此外,作为对此问题的答复,此问题已被删除:
对于那些反对我的评论的人,您至少可以告诉我这个问题是怎么回事吗?这是我第一次使用该网站。
您的帖子有一些问题(此后所有问题都已被其他用户删除)。
您通过第三方服务提供了代码。如果您直接在问题中粘贴一小段相关代码,通常可以使人们更轻松地回答您的问题。我们不必搜寻冗长的脚本来查找实际的问题,并且无需打开另一个标签或登录网站即可访问所有内容
您没有输入错误,这使我们难以诊断问题。
您没有做出任何努力来自行解决问题。在询问我们之前,您没有显示任何研究结果,也没有尝试解决此问题的其他方法。访问this page以了解为何对此不满意
有关更多信息,请参见How to Ask