Discord Bot不断在Heroku上崩溃



我制作了一个Discord机器人,当我在本地运行它时,它运行得很好,但当我在Heroku上传它时,却没有。我不知道为什么它总是崩溃。机器人程序在本地运行非常完美。

当我在脚本中添加start时,还有一件事。它跑了又跑了一分钟,然后又坠毁了。然后自行重启,一分钟后再次崩溃。

2020-04-29T09:24:00.011590+00:00 app[api]: Scaled to web@0:Free worker@0:Free by user owaisshamsi217@gmail.com
2020-04-29T09:24:01.483021+00:00 app[api]: Scaled to web@0:Free worker@1:Free by user owaisshamsi217@gmail.com
2020-04-29T09:24:04.650208+00:00 heroku[worker.1]: State changed from starting to up
2020-04-29T09:24:06.950244+00:00 heroku[worker.1]: State changed from up to crashed
2020-04-29T09:24:06.953653+00:00 heroku[worker.1]: State changed from crashed to starting
2020-04-29T09:24:10.862018+00:00 heroku[worker.1]: State changed from starting to up
2020-04-29T09:24:13.509980+00:00 heroku[worker.1]: State changed from up to crashed

我的代码只是一个server.js文件,代码是:

const Discord = require('discord.js');
const settings = require('./config.json');
const fs = require('fs');
const bot = new Discord.Client();
bot.commands = new Discord.Collection();
const prefix = settings.prefix;
//const token = settings.token;

bot.on('message', message => {
if(message.author.bot) return;
let dm = message.author;
if(message.channel.name === 'verify') {
if(message.content === '!verify') {
message.delete()
let server = message.guild.name;
let servericon = message.guild.iconURL();
var captcha1 = 'https://i.ibb.co/DpjB37s/captcha1.png'
var captcha2 = 'https://i.ibb.co/nsbq041/captcha2.png'
var select = [];
select.push(captcha1);
select.push(captcha2);
var chosen = select[Math.floor(Math.random() * select.length)];
let embed = new Discord.MessageEmbed()
.setTitle(`**Welcome to ${server}**nnCaptcha`)
.setDescription("Please complete the captcha given below to gain access to the server.n**Note:** This is case sensitive")
.setAuthor('Mr.Verifier', "https://i.ibb.co/nckjDjG/hmm.png")
.setColor('#0929ff')
.setThumbnail(servericon)
.addField('**Why all this?**' , 'This is to protect the servers fromnmalicious raids of automated bots',true)
.setImage(chosen)
.setTimestamp();
dm.send(embed)
let guild = message.guild.id;
module.exports.guild = guild
module.exports.chosen = chosen
module.exports.captcha1 = captcha1
module.exports.captcha2 = captcha2
}else{
message.delete();
}
}; 
if(message.channel.type === 'dm') {
const response = message.content;
if(this.chosen === this.captcha1){
if(dm && response === 'L3thq4') {
var role = bot.guilds.cache.get(this.guild).roles.cache.find(r => r.name == 'Verified Member');
var user = bot.guilds.cache.get(this.guild).members.cache.find(member => member.id === dm.id)
user.roles.add(role);
let embed = new Discord.MessageEmbed()
.setTitle('**THANK YOU**')
.setDescription('You have been given access to the server.')
.setColor('#0929ff')
dm.send(embed);
}else{dm.send('You entered the captcha incorrectly')};
} else if(this.chosen === this.captcha2){
if (dm && response === 'Fe1t6p') {
var role = bot.guilds.cache.get(this.guild).roles.cache.find(r => r.name == 'Verfied Member');
var user = bot.guilds.cache.get(this.guild).members.cache.find(m => m.id === dm.id);
user.roles.add(role);
let embed = new Discord.MessageEmbed()
.setTitle('**THANK YOU**')
.setDescription('You have been given access to the server.')
.setColor('#0929ff')
dm.send(embed);
}else{dm.send('You entered the captcha incorrectly')};
} else {
dm.send('No captcha in inventory.');
};
};
})

bot.on('ready', async() => {
console.log("At your service");
})
bot.login(process.env.token);

之所以会发生这种情况,是因为您使用的是webdyno:如果应用程序在超过1小时的时间内没有为网站提供服务,则该dyno将处于休眠状态。解决方案是从webdyno切换到workerdyno:这种类型不为网站服务(如果你正在运行Discord机器人,你就不需要它(,而且永远不会睡觉。

进入你的Procfile文件&用worker替换web,它应该是这样的:

worker: npm start //this is the command you use to start your app.

来源:此处

最新更新