javascript - 命令 DM 提到的用户
问题描述
这是我给提到的成员的 DM 代码。
const { MessageEmbed } = require("discord.js");
module.exports = {
name: "dm",
category: "moderation",
usage: "DM <@mention> <message>",
description: "DM server members!",
run: async (client, message, args) => {
if (!message.member.hasPermission("MANAGE_ROLES")) {
return message.channel.send(
"Access restricted!"
);
}
const targets = message.mentions.members;
if (!targets) {
return message.channel.send(
"Please Mention the person to who you want to DM!"
);
}
if (message.mentions.users.bot) {
return message.channel.send("You cannot DM bots");
}
const reason = args.slice(0).join(" ");
if (!reason) {
return message.channel.send(
"Place provide the message to send!"
);
}
message.channel.send(`DM sent succesfully!`);
let embed = new MessageEmbed()
.setColor('#0099ff')
.setTitle(`Message from ${message.guild.name}`)
.setDescription(`${reason}`)
.setThumbnail('https://i.ibb.co/PCnBZ8w/IMG-20210205-191207.jpg')
.setFooter(`Sent by ${message.member.user.tag}`)
targets.forEach(target => target.send(embed));
message.delete();
}
};
它是这样使用的:prefixdm the message @mention1 @mention2 ...
. 但是在用户收到的 DM 中,由于我声明了reason
. 我该如何解决它,以便他们看不到消息中的提及?
解决方案
您可以使用正则表达式清理消息。MessageMentions
有一个USERS_PATTERN
包含与用户提及匹配的正则表达式的属性(如<@82043902196179341>
)。您可以将它与 JavaScript 的.replaceAll()
方法一起使用,以将所有出现的提及替换为空字符串:
const reason = args
.slice(0)
.join(' ')
.replaceAll(MessageMentions.USERS_PATTERN, '')
.trim();
不要忘记MessageMentions
从以下位置导入discord.js
:
const { MessageEmbed, MessageMentions } = require("discord.js");
更新:您也可以使用.replace()
而不是.replaceAll()
作为正则表达式全局匹配用户提及。来源。
推荐阅读
- ubuntu - 如何在 ubuntu-18.10 的 apue.3e 中使用 $make 时修复“struct 'FILE' has no member named'__pad'”错误
- scala - 如何从方法中获取消息
- python - 为什么模型给出的负例概率接近 1?
- python - 模型使用 SGD 而不是 Adam 学习
- scala - 在 scala 中将 List[(String, String)] 转换为 List[Map[String, String]]
- typescript - 带有 Typescript:Object 的 Mongoose 可能为空
- c# - 属性网格可见性在运行时 c# 中不会改变
- android - 如何将参数传递给数据绑定中的函数?
- java - 如何在嵌套对象中通过 JPA Spring Boot 中的 Temporal.TIMESTAMP 进行查询?
- react-native - 如何将评论输入框粘贴在键盘顶部