赠品命令不保存(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的主要内容,如果未能解决你的问题,请参考以下文章