赠品命令不保存(Heroku)discord.js

Posted

技术标签:

【中文标题】赠品命令不保存(Heroku)discord.js【英文标题】:Giveaway commands does not save (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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

npmjs.com/package/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');
);

【讨论】:

以上是关于赠品命令不保存(Heroku)discord.js的主要内容,如果未能解决你的问题,请参考以下文章

Discord js赠品命令

Heroku/Discord.js 错误“服务不可用”

discord.js heroku 除了嵌入式命令外,一切正常,怎么了?

在 Heroku 上托管 discord.js 机器人

剪切 Discord 消息的特定部分?不和谐.js

当机器人托管在 heroku 上时如何制作 discord.js 图像搜索命令