如何在Discord.js的/echo命令中禁用命令提及?
清除Discord.js中Echo命令的命令提及
要清除输入中的命令提及(如</echo:123456>这类格式),可以通过正则表达式匹配并替换这类特殊格式的内容。以下是修改后的完整代码:
const { SlashCommandBuilder } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() .setName('echo') .setDescription('Replies with your input!') .addStringOption((option) => option .setName('input') .setDescription('The input to echo back') .setRequired(true) ), async execute(interaction) { let input = interaction.options.getString('input'); // 匹配并移除所有Discord命令提及格式 input = input.replace(/<\/\w+:\d+>/g, ''); await interaction.reply({ content: 'Message sent!', ephemeral: true }); await interaction.followUp(input.trim()); }, };
关键说明
- 正则表达式
/<\/\w+:\d+>/g专门匹配Discord命令提及的结构:</匹配命令提及的起始标记\w+匹配命令的名称(支持字母、数字、下划线):\d+匹配命令的唯一ID(数字序列)>匹配命令提及的结束标记
replace方法会将所有匹配到的命令提及替换为空字符串,达到清除效果trim()用于移除替换后可能产生的多余空格,让输出更整洁
扩展:同时清除用户/角色提及
如果需要同时清除输入中的用户提及(如<@123456>)和角色提及(如<@&123456>),可以修改正则表达式:
input = input.replace(/<\/\w+:\d+>|<@!?\d+>|<@&\d+>/g, '');
其中:
<@!?\d+>匹配所有格式的用户提及<@&\d+>匹配所有格式的角色提及
内容的提问来源于stack exchange,提问作者Aloxenツ
相关产品推荐
相关产品推荐

