bots - 如何使用命令向用户发送 dm
问题描述
我正在编写一个机器人脚本来向某个用户发送一条我写的消息,例如我会这样做:
!dm @user Hi!
机器人会向该用户发送 dm,只说你好!
它不允许我,有人可以检查我的代码吗?
if(command === "dm") {
let member = message.mentions.members.first() || message.guild.members.get(args[0]);
if(!member)
return message.reply("Please mention a valid member of this server");
let reason = args.slice(1).join(' ');
mentionedUser.send(`${reason}`);
}
更新代码:
if(command === "dm") {
let member = message.mentions.members.first() || message.guild.members.get(args[0]);
if(!member)
return message.reply("Please mention a valid member of this server");
let reason = args.slice(1).join(' ');
if(!reason)
return message.reply("Please write a message.");
member.dmChannel.send(`${reason}`);
message.reply(`${member.user.tag} received a message( ${reason} ) sent by:${message.author.tag}`);
}
现在我得到这个错误:
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'send' of undefined
解决方案
此答案仅适用于版本 11 及更高版本。
无需与用户一起访问客户端的 DM 通道(无论如何都需要先实例化)。只需使用User.send()
orGuildMember.send()
方法。
member.send(reason)
.catch(console.error);
推荐阅读
- node.js - Socket.io - 会话管理的每个套接字事件的身份验证
- javascript - 如何在粘贴后(而不是在粘贴之前)添加对状态生效的EventListener?
- javascript - NodeJS Bcrypt 哈希和比较平均需要 2-3 秒。如何优化它
- substrate - 元数据生成失败,退出代码无
- javascript - 从 localStorage 中删除记录时刷新变量
- c# - ASP.NET Core - 使用 [HttpPost] 发布请求不适用于对象
- flutter - 如何使用颤振视频播放器跳转到帧?
- javascript - 如何在页面重新加载时将 HTML 弹出窗口保持在 chrome 扩展程序的前面?
- python - 如何在空间中找到 3 个正交向量的旋转矩阵。我当前的方法将矢量旋转到错误的方向
- r - 如何在r中的矩阵上正确使用apply函数