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

WOKCommands开发Discord TS机器人 ping斜杠命令报channel读取错误

问题根因

你将命令的slash属性配置为both,即同时支持前缀消息触发、斜杠交互触发两种模式:

  • 前缀命令触发时,回调函数会接收到有效的message对象,因此原有代码可以正常运行
  • 斜杠命令触发时,不存在对应的消息实体,message参数为undefined,调用message.channel自然会抛出读取undefined属性的报错
修复方案

WOKCommands 的命令回调参数内置了适配两种触发模式的channel字段,无需手动从message或interaction中提取,修改后代码如下:

import { Client, Message, CommandInteraction } from'discord.js';
const db = require('quick.db')
const moment = require('moment')
import { ICommand } from "wokcommands";


export default {
    name: 'ping',
    description: "Fetches the client latency",
    category: "Utilities",

    slash: 'both',
    testonly: true,


    callback: async({client, message, interaction, channel}) => {
        const msg = await channel.send({content: `> 🏓 Pinging..`})
        msg.edit({content: `> 🏓 Pong! Latency: **${client.ws.ping}ms**`})

        // 处理斜杠命令响应,避免Discord提示应用未响应
        if(interaction) {
            await interaction.deferReply({ephemeral: true})
            await interaction.deleteReply()
        }
    }
} as ICommand
补充说明
  • 斜杠命令触发时必须对交互对象做响应,否则Discord客户端会展示「应用程序未响应」的错误提示,上述代码中通过临时回复再删除的方式规避了该问题,不会产生多余的展示内容
  • 如果不需要保留先发送Pinging再编辑的逻辑,也可以直接通过回调返回值实现效果,代码更简洁:
callback: async({client}) => {
    return `> 🏓 Pong! Latency: **${client.ws.ping}ms**`
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:36:04