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

discord.js v13机器人集成Firebase数据库出现goOfline方法不存在错误求助

解决方案

核心报错原因:拼写错误

你的报错是因为方法名拼写错误,goOfline少写了一个字母f,正确写法为goOffline。

可优化调整点

  1. 你已经提前初始化了database实例,后续无需重复调用firebase.database(),直接复用变量即可,降低冗余
  2. 无需每次收到消息都手动切换数据库在线/离线状态,Firebase默认会维持稳定连接,频繁切换反而容易导致写入失败,可直接删除goOnline、goOffline两行代码
  3. discord.js v13 版本已弃用message事件,需替换为messageCreate事件,同时要在初始化客户端时声明消息相关权限意图,否则无法正常接收频道消息
  4. 可新增指定频道校验逻辑,避免同步所有频道的无关消息

修改后完整参考代码

const firebase = require('firebase');
const randomstring = require('randomstring');
const { Client, Intents } = require('discord.js');

// 初始化Discord客户端,v13必须声明对应的权限意图
const client = new Client({ 
  intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] 
});

const config = {
  // 此处填写你的Firebase配置信息
};

firebase.initializeApp(config);
const database = firebase.database();

// 替换为v13可用的messageCreate事件
client.on("messageCreate", async message => {
    // 跳过机器人自身发送的消息
    if (message.author === client.user) return;
    // 新增:仅同步你指定的频道的消息,替换为你要同步的频道ID
    if (message.channel.id !== '需同步的频道ID') return;

    try {
        let ticket = randomstring.generate(7);
        await database.ref('/Auction4/' + ticket).set({
            Message: message.content,
            User: message.author.username,
            User_ID: message.author.id
        })
        await client.channels.cache.get('接收通知的频道ID').send(`Thanks, it works!`);
    } catch (err) {
        console.log(err);
    }
});

// 启动机器人,替换为你自己的Discord机器人Token
client.login('你的机器人Token');

其他注意事项

测试阶段可以先将Firebase实时数据库的读写规则临时开放,确认功能正常后再调整为带权限校验的规则,避免数据被恶意篡改。你安装的firebase@8.10.0版本和当前代码写法兼容,无需更换版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:15:06