【问题标题】:Giveaway commands does not save (Heroku) discord.js赠品命令不保存(Heroku)discord.js
【发布时间】:2021-03-10 17:44:28
【问题描述】:

我正在制作赠品命令,但是每当我重新启动 heroku 中的所有测功机时,赠品似乎就冻结了(永远不会结束赠品),当我这样做时!gdelete {messageid} 它说 {messageid} 没有任何赠品知道为什么以及如何解决它。我试过使用 quick.db 但还是一样,而且我对 heroku 和编码 discord bot 还是很陌生。我正在使用 node.js

const { GiveawaysManager } = require("discord-giveaways");

const manager = new GiveawaysManager(bot, {
    storage: "./giveaways.json",
    updateCountdownEvery: 10000,
    default: {
        botsCanWin: false,
        embedColor: "#FF0000",
        reaction: "????"
    }
})
bot.giveawaysManager = manager;

代码如下

这里是 gstart 命令:https://pastebin.com/9tBjpVEY

【问题讨论】:

    标签: javascript node.js heroku discord.js


    【解决方案1】:

    问题是由 Heroku 引起的,当您不运行应用程序时,它不会存储本地文件。每次重新启动测功机时,Heroku 都会删除所有内容并重建它:这意味着如果您在重新启动时将文件保存在本地,它们将被删除。

    要解决此问题,您需要切换到其他服务或为您的文件创建某种形式的备份。
    您也可以使用远程数据库,但我不知道如何使用 discord-giveaways 包来实现。

    【讨论】:

    【解决方案2】:

    我遇到了同样的问题,我认为可以通过这样做来解决:

    除了使用 quick.db,你可以使用 quickmongo,它和 quick.db 一样,discord-giveaways 也有一个例子。尽管您需要进行一项更改。 quickmongo 的示例还显示了存储文件的本地方式,但不是键入 localhost 字符串,而是将其替换为 MongoDB 集群的 MongoDB Compass 连接字符串,并为新集合提供相同的名称,即 giveaways

    为了获取连接字符串,请登录您的 MongoDB 帐户并创建一个集群。创建集群后,点击集群上的连接按钮,然后选择Connect using MongoDB Compass。从那里您将看到一个连接字符串。将该字符串复制并粘贴到存在 localhost 字符串的位置。然后将<password> 替换为您的帐户密码,也就是您的用户名密码。此外,将末尾的test 替换为giveaways 即可。运行代码后,您还会在集群内的 Collections 选项卡中看到一个名为 giveaways 的集合。

    例子:

    const db = new Database('connectionLink/giveaways');
    db.once('ready', async () => {
        if ((await db.get('giveaways')) === null) await db.set('giveaways', []);
        console.log('Giveaway Database Loaded');
    });
    

    【讨论】:

      猜你喜欢
      • 2020-03-17
      • 2021-04-18
      • 2020-11-06
      • 2020-09-17
      • 2020-04-17
      • 2021-03-20
      • 2021-04-02
      • 2021-11-01
      • 2021-05-02
      相关资源
      最近更新 更多