You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Discord.js中移除消息内的命令前缀及命令内容

解决?send命令只发送命令后内容的问题

你当前代码直接发送message.content,这会把用户输入的完整消息(包含前缀?和send命令)全部发送出去。要只发送命令后的内容,有两种实用方案:

方案1:利用args参数

多数Discord命令框架会自动把命令后的内容拆分到args数组里,只需将数组元素用空格拼接即可:

修改发送消息的代码行:

// 替换原有的 message.channel.send(`${message.content}`);
message.channel.send(args.join(' '));

方案2:手动截取消息内容

如果你的框架没有自动处理args,可以手动截掉前缀和命令部分:

const prefix = '?'; // 你的命令前缀
// 计算需要移除的内容长度:前缀+命令名+命令后的空格
const removeLength = (prefix + this.name).length + 1;
// 截取并清除首尾多余空格
const content = message.content.slice(removeLength).trim();
message.channel.send(content);

修改后的完整代码(方案1实现)

module.exports = {
    name: `send`,
    description: "sends a message through the bot",
    execute (client, message, args){
        
        const Crash = message.guild.roles.cache.find(r => r.name === "Crash");
        
        if(message.member.roles.cache.has(Crash.id)) { 
            message.delete({timeout: 100})
            // 拼接args数组得到命令后的内容
            message.channel.send(args.join(' '));
        } else {   
            message.channel.send(`You cant use this command`);
        }
    }
}

注:你代码中定义的channel变量未被使用,如果需要将消息发送到指定频道,可以把message.channel.send替换为channel.send。

内容的提问来源于stack exchange,提问作者Icebreaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 12:39:22