我写了一个简单的“say”命令,但我试图禁止提及任何角色和/或用户。
例如,我输入“!say @everyone”,机器人应该回复“你没有权限!”而不是“@everyone”,标记每个人。或者它应该只发送消息但删除“每个人”之前的@。
这是我的代码:
module.exports = {
name: "say",
description: "Say command",
usage: "<msg>",
run: async (bot, message, args) => {
if (!message.member.permissions.has("MANAGE_MESSAGES")) return;
let MSG = message.content.split(`${bot.prefix}say `).join("");
if (!MSG)
return message.channel.send(`Non hai specificato il messaggio da inviare!`);
message.channel.send(MSG);
message.delete();
},
};
有人可以帮我吗?提前谢谢你。
附注最后抱歉英语不好。
答案 0 :(得分:1)
或者,如果您想从消息中删除提及,则可以使用 RegExp:
// If Message Content Includes Mentions
if (message.content.includes(/<@.?[0-9]*?>/g)) {
//Replace All Message Mentions Into Nothing
message = message.replace(/<@.?[0-9]*?>/g, "");
};
说明:
我们检查消息内容是否包含提及,如果是,则将所有提及替换为空
答案 1 :(得分:0)
您可以使用简单的 #includes
语句。
if (message.content.includes('@')) {
return message.channel.send(':x: You do not have permission'); // if you want to deny completely
let cleanedContent = message.content.replace('@', ''); // if you want to replace the @
};
注意:我不知道您的 args 在您的处理程序中的结构如何,因此您可能需要稍微更改我的代码,但这将适用于您的要求。
function myFunction() {
var str = document.getElementById("demo").innerHTML;
var res = str.replace("@", "");
document.getElementById("demo").innerHTML = res;
}
<!DOCTYPE html>
<html>
<body>
<p id="demo">!say @everyone</p>
<button onclick="myFunction()">Try it</button>
</body>
</html>