@NickName98

"State changed from starting to crashed" Приложение не работает, почему?

Я пишу твич бота для игры крокодила. После деплоя на Heroku приложение работает некоторое время, но потом перестает. Я не понимаю в чем проблема. В логах ничего кроме "State changed from starting to crashed" нет. Причем локально все работает без ошибок.

Вот мое приложение:
import config
import utils
import socket
import re
import time
from time import sleep

def main():
    s = socket.socket()
    s.connect((config.HOST, config.PORT))
    s.send("PASS {}\r\n".format(config.PASS).encode("utf-8"))
    s.send("NICK {}\r\n".format(config.NICK).encode("utf-8"))
    s.send("JOIN #{}\r\n".format(config.CHAN).encode("utf-8"))


    chat_message = re.compile(r"^:\w+!\w+@\w+\.tmi\.twitch\.tv PRIVMSG #\w+ :")
    s.send("CAP REQ :twitch.tv/commands\r\n".encode("utf-8"))


    while True:
        response = s.recv(1024).decode("utf-8")

        if response == "PING :tmi.twitch.tv\r\n":
            s.send("PONG :tmi.twitch.tv\r\n".encode("utf-8"))
    
        else:
            username = re.search(r"\w+", response).group(0)
            mess = chat_message.sub("", response)


        n
        if mess.strip() == "!начать" and username == "StreamerName":
            game = True
            word = ""
            count = {}
            utils.message(s, "/me Игра начата!")
            sleep(1)
            while game == True:
                response = s.recv(1024).decode("utf-8")
                if response[0:52] == ":nickname1!nickname1@nickname1.tmi.twitch.tv WHISPER":
                    username = re.search(r"\w+", response).group(0)
                    word = response[66:]
                    utils.message(s, "/me Cлово установлено!")
                    sleep(1)
                else:
                    username = re.search(r"\w+", response).group(0)
                    mess = chat_message.sub("", response)
                    if mess.lower() == word.lower():
                        utils.message(s, '/me @StreamerName {} отгадал слово!!!'.format(username))
                        sleep(1)
                        utils.message(s, "@{} отправь новое слово стримеру!".format(username))
                        sleep(1)
                        word = ""
                        if username in count:
                            count[username]+=1
                        else: count.update({username: 1})    
                    if mess.strip() == "!закончить" and username == "StreamerName":
                        utils.message(s, "/me Игра окончена!")
                        sleep(1)
                        game = False
                        result = ""
                        for key, value in count.items():
                            result+= "{}: {}  ".format(key, value)
                        utils.message(s, result)

if __name__ == "__main__":
    main()


Надеюсь вы поможете мне)
  • Вопрос задан
  • 288 просмотров
Пригласить эксперта
Ответы на вопрос 1
Для симуляции работы в Heroku нужно локально запускать heroku local .
Наверное что-то с процессом веб-приложения не так. Оно должно слушать на том же порту, что и в Procfile.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы