Twitch Chatbot разрывает соединение через 10 минут, отлично работает на 2 других устройствах - PullRequest
0 голосов
/ 02 мая 2019

Используя чат-бота python2.7, я могу подключиться к IRC-серверу Twitch и отвечать на пинги и все отлично.Я использую этот код в течение нескольких месяцев на своей машине и у моих друзей без каких-либо проблем.

Новый пользователь начал использовать бота, и он отключается каждые 10 или около того минут для него.Я устраняю неполадки пинга / понга и настраиваю способ его отправки, и бот отвечает на пинги без проблем, однако дергание просто случайным образом перестает отвечать.

Поскольку Twitch отправляет PING каждые 5 или около того минут и отключает вас, еслион не получил обратно, я решил, что это проблема.Я перепробовал каждый способ отправки PONG, и он все равно не работает для него, но все прекрасно работает на моем конце и другом.

Он проверил свой брандмауэр, настройки маршрутизатора и т. Д., И ничто не блокирует его, и безуспешно пробовал порты 80 и 6667.

Вот одно изображение консоликогда он сломался, на этот раз он вообще не выдавал никаких ошибок, просто перестал читать чат.Не обращайте внимания на ошибки предварительной выборки, это просто глупость VLC, которая почти наверняка не связана.

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

Код для присоединения к серверу twitch выглядит следующим образом:

def openSocket():
    global s
    s = socket.socket()
    s.connect(("irc.chat.twitch.tv", PORT))
    s.send("PASS " + BOT_OAUTH + "\r\n")
    s.send("NICK " + BOT_NAME + "\r\n")
    s.send("JOIN #" + CHANNEL + "\r\n")
    return s


def joinRoom(s):
    readbuffer = ""
    Loading = True

    while Loading:
        readbuffer = readbuffer + s.recv(1024)
        temp = string.split(readbuffer, "\n")
        readbuffer = temp.pop()

        for line in temp:
            print(line)
            Loading = loadingComplete(line)

    s = openSocket()
    joinRoom(s)

В настоящее время я отправляю понги двумя разными способами:

                if "PING" in line:
                    s.send(("PONG :tmi.twitch.tv\r\n".encode("utf-8")))
                    print "Pong Sent"

, а также один на 3-минутный таймер на всякий случай

def PONG():
    s.send("PONG :tmi.twitch.tv\r\n".encode("utf-8"))
    print "Timer Pong Sent"
    threading.Timer(180, PONG).start()
PONG()

IВчера я работал на моей машине 4 часа подряд, не отключая его вообще, и у моего друга в другой сети с существенно другой машиной проблем тоже не было.

Что может быть причиной того, что он не работает на одной машинеконец пользователя?Что-то не так с системой пинг / понг или у него что-то не так на конце?

...