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

discord-js-pagination期望接收什么类型的对象?调用时报send属性未定义

问题原因

你遇到的报错是两个入参传递错误导致的:

  1. 你定义的run函数要求接收Discord Message实例作为参数,但你调用run(data)时传入的是接口返回的业务数据数组,而非触发命令的msg对象。
  2. discord-js-pagination的第一个入参要求是Discord Message实例,用于获取频道对象发送分页消息,你传入了字符串'some message',字符串不存在channel.send属性,因此触发报错。

修复方案

修改两处代码即可:

  1. 将调用run(data)改为run(msg),传入触发命令的原始消息对象
  2. 将pagination('some message', pages)改为pagination(message, pages),传入run函数接收到的消息实例

修改后的核心代码片段参考:

if (msg.content.toLowerCase().startsWith(prefix + 'romanreport')) {
    axios.get(`${host}/quote`)
        .then(({ data }) => {
            if (data.length > 0) {
                const run = async (message) => {
                    console.log(data)
                    const MAX_FIELDS = 25;
                    const fields = data.map(i => ({ name: String(i.id), value: i.quote }))

                    if (fields.length <= MAX_FIELDS)
                        return message.reply(
                            new Discord.MessageEmbed()
                                .setTitle('Help')
                                .setDescription(`Prefix: ${prefix}`)
                                .addFields(fields),
                        );

                    const chunks = chunkify(fields, MAX_FIELDS);
                    const pages = [];

                    chunks.forEach((chunk) => {
                        pages.push(
                            new Discord.MessageEmbed()
                                .setTitle('Help')
                                .setDescription(`Prefix: ${prefix}`)
                                .addFields(chunk),
                        );
                    });
                    console.log('pages', pages)
                    // 第一个参数传入message实例
                    pagination(message, pages);
                }
                function chunkify(arr, len) {
                    let chunks = [];
                    let i = 0;
                    let n = arr.length;
                    while (i < n) {
                        chunks.push(arr.slice(i, (i += len)));
                    }
                    return chunks;
                }
                // 调用run时传入触发命令的msg对象
                run(msg);

额外提示:MessageEmbed要求字段name必须是字符串,你当前设置的name是数字类型i.id,建议用String(i.id)做类型转换避免后续潜在报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 02:54:03