Почему мой диссонирующий бот, размещенный на героку, отключается случайно? - PullRequest
0 голосов
/ 19 апреля 2019

У меня бот Discord, написанный на JS и размещенный на Heroku.Начиная с 2-х дней оно отключается случайно каждые 5-30 минут.Когда он выключается, я перезапускаю (выключаю и снова включаю) динамо (это рабочий динамо, предположительно 24/7), и он включается, но снова после указанного времени выключается, только бот, динамовсе еще включен.Я не модифицировал никакой код, это произошло случайно, у меня есть другие друзья с ботами, размещенными на Heroku, и у них нет проблем.Я использую свободный план Heroku с рабочим Дино.Кроме того, команды не работают, когда он находится в режиме онлайн от Heroku, они работают только тогда, когда я запускаю бот по node index.js.

Я пытался изменить параметры из Heroku, просматривая журнал, изменяя некоторый код, даже помещаякод, который я нашел в интернете, который пингует вашего бота каждые 5 минут, но ничего.

Это мой журнал:

2019-04-19T12:14:34.586658+00:00 app[worker.1]:     at GuildMemberAddHandler.handle (/app/node_modules/discord.js/src/client/websocket/packets/handlers/GuildMemberAdd.js:12:13)
2019-04-19T12:14:34.586660+00:00 app[worker.1]:     at WebSocketPacketManager.handle (/app/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js:103:65)
2019-04-19T12:14:34.586661+00:00 app[worker.1]:     at WebSocketConnection.onPacket (/app/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:333:35)
2019-04-19T12:14:34.586663+00:00 app[worker.1]:     at WebSocketConnection.onMessage (/app/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:296:17)
2019-04-19T12:14:34.586665+00:00 app[worker.1]:     at WebSocket.onMessage (/app/node_modules/ws/lib/event-target.js:120:16)
2019-04-19T12:14:34.671352+00:00 heroku[worker.1]: State changed from up to crashed
2019-04-19T12:14:34.652558+00:00 heroku[worker.1]: Process exited with status 1
2019-04-19T12:41:06.879262+00:00 heroku[worker.1]: State changed from crashed to down
2019-04-19T12:41:11.663020+00:00 heroku[worker.1]: Starting process with command `node index.js`
2019-04-19T12:41:12.348731+00:00 heroku[worker.1]: State changed from starting to up
2019-04-19T12:41:14.194602+00:00 app[worker.1]: Attempting to load command goodmorning
2019-04-19T12:41:14.198617+00:00 app[worker.1]: Attempting to load command goodnight
2019-04-19T12:41:14.199576+00:00 app[worker.1]: Attempting to load command hug
2019-04-19T12:41:14.200215+00:00 app[worker.1]: Attempting to load command kamehameha
2019-04-19T12:41:14.200930+00:00 app[worker.1]: Attempting to load command kickballs
2019-04-19T12:41:14.201643+00:00 app[worker.1]: Attempting to load command kiss
2019-04-19T12:41:14.206727+00:00 app[worker.1]: Attempting to load command scare
2019-04-19T12:41:14.207865+00:00 app[worker.1]: Attempting to load command help
2019-04-19T12:41:14.208523+00:00 app[worker.1]: Attempting to load command info
2019-04-19T12:41:14.208951+00:00 app[worker.1]: Attempting to load command invite
2019-04-19T12:41:14.209455+00:00 app[worker.1]: Attempting to load command nikonikoni
2019-04-19T12:41:14.209917+00:00 app[worker.1]: Attempting to load command ping
2019-04-19T12:41:14.210335+00:00 app[worker.1]: Attempting to load command running
2019-04-19T12:41:14.211635+00:00 app[worker.1]: Attempting to load command servers
2019-04-19T12:41:14.212116+00:00 app[worker.1]: Attempting to load command test
2019-04-19T12:41:14.212553+00:00 app[worker.1]: Attempting to load command version
2019-04-19T12:41:17.072384+00:00 app[worker.1]: Ready to serve in 600 channels on 22 servers, for a total of 16185 users.

А когда он падает, он выглядит так:

2019-04-19T12:45:25.500389+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=dangerdiscord.herokuapp.com request_id=bb4b7f4f-d3c4-441a-add4-18b85a78e8cb fwd="3.90.103.169" dyno= connect= service= status=503 bytes= protocol=http
2019-04-19T12:45:27.764983+00:00 app[worker.1]: /app/events/guildMemberAdd.js:2
2019-04-19T12:45:27.764996+00:00 app[worker.1]:   const defaultChannel = member.guild.channels.find(channel => channel.permissionsFor(guild.me).has("SEND_MESSAGES"));
2019-04-19T12:45:27.764998+00:00 app[worker.1]:                                                                                       ^
2019-04-19T12:45:27.764999+00:00 app[worker.1]: 
2019-04-19T12:45:27.765001+00:00 app[worker.1]: ReferenceError: guild is not defined
2019-04-19T12:45:27.765003+00:00 app[worker.1]:     at member.guild.channels.find.channel (/app/events/guildMemberAdd.js:2:87)
2019-04-19T12:45:27.765004+00:00 app[worker.1]:     at Map.find (/app/node_modules/discord.js/src/util/Collection.js:506:11)
2019-04-19T12:45:27.765006+00:00 app[worker.1]:     at module.exports (/app/events/guildMemberAdd.js:2:48)
2019-04-19T12:45:27.765007+00:00 app[worker.1]:     at Client.emit (events.js:189:13)
2019-04-19T12:45:27.765009+00:00 app[worker.1]:     at Guild._addMember (/app/node_modules/discord.js/src/structures/Guild.js:1192:19)
2019-04-19T12:45:27.765011+00:00 app[worker.1]:     at GuildMemberAddHandler.handle (/app/node_modules/discord.js/src/client/websocket/packets/handlers/GuildMemberAdd.js:12:13)
2019-04-19T12:45:27.765012+00:00 app[worker.1]:     at WebSocketPacketManager.handle (/app/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js:103:65)
2019-04-19T12:45:27.765013+00:00 app[worker.1]:     at WebSocketConnection.onPacket (/app/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:333:35)
2019-04-19T12:45:27.765014+00:00 app[worker.1]:     at WebSocketConnection.onMessage (/app/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:296:17)
2019-04-19T12:45:27.765015+00:00 app[worker.1]:     at WebSocket.onMessage (/app/node_modules/ws/lib/event-target.js:120:16)
2019-04-19T12:45:27.903986+00:00 heroku[worker.1]: State changed from up to crashed
2019-04-19T12:45:27.889791+00:00 heroku[worker.1]: Process exited with status 1

Ответы [ 2 ]

0 голосов
/ 20 апреля 2019

Вот несколько вещей, которые нужно понять о Heroku:

  1. Если вы используете веб-динамо, ваш бот отключится через 30 минут бездействия, чтобы бот запустился 24 года./ 7 'вы должны использовать рабочий динамо.

  2. Heroku - это бесплатная услуга (если вы не платите), поэтому, очевидно, они не могут поддерживать вашего бота в сети 100% времени,они дают вам 550 часов бесплатного хостинга в месяц (в месяц ~ 730 часов). Если вы добавите кредитную карту в свой аккаунт, вы можете получить еще ~ 450 часов хостинга в месяц, что, очевидно, больше часов, чемчто за месяц, и они НИКОГДА не будут взимать с вашей кредитной карты что-либо, они делают это, чтобы убедиться, что вы настоящий человек.

  3. Время работы нескольких проектов в Heroku НЕоснованные на проектах, они основаны на учетных записях, поэтому, если у вас есть бесплатная учетная запись с 1000 часов в месяц, но у вас есть несколько проектов, эти часы НЕ будут длиться целый месяц.

РЕДАКТИРОВАТЬ: PS: Ваша проблема, яВ другом месте, но, поскольку вы используете Heroku, я полагаю, что вам необходимо это понять, и если вы готовы тратить деньги, я бы посоветовал обратить внимание на более мощный VPS, предназначенный для хостинга ботов.Я бы особенно посоветовал это, поскольку кажется, что у вас есть ~ 16 000 человек, использующих этого бота, что может вызвать переполнение Heroku / сделать ваш бот медленным и ненадежным.

0 голосов
/ 19 апреля 2019

Я почти уверен, что у Heroku есть тайм-аут, если вы используете бесплатную версию.Останавливается ли оно, если оно используется или только когда оно осталось?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...