Создание бота twitch irc (не удалось выполнить аутентификацию при входе)

Я использую Python 2.7 и пытаюсь создать IRC-бота для Twitch, но у меня есть проблема. Я создал бота в другом IRC, например, «webchat.freenode.net», и все было в порядке. Мой код для twitch:

import time
import socket


HOST = "irc.twitch.tv"
PORT = 6667
BOTNICK = "thebot"
PASSWORD = "oauth:nph788dap10fu6ozlzv1b32fzm4r8q"
CHAN = "#fordotis10"




irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
irc.connect((HOST, PORT))
irc.setblocking(False)
time.sleep(1)

irc.send("PASS "+PASSWORD+"\r\n")

time.sleep(1)

irc.send("USER "+BOTNICK+" "+BOTNICK+" "+BOTNICK+" :I AM BOT!\r\n")

time.sleep(1)

irc.send("NICK "+BOTNICK+"\r\n")
time.sleep(1)

irc.send("JOIN "+CHAN+"\r\n")

text= ""
while 1:
    try:
        text = irc.recv(1024)
        print text
    except Exception:
        pass
    if text.find("PING")!=-1:
        irc.send("PONG "+text.split()[1]+"\r\n")

С этим кодом я получаю следующую ошибку:

:tmi.twitch.tv УВЕДОМЛЕНИЕ * : Ошибка аутентификации при входе

Что мне не хватает?


person AlexDotis    schedule 12.01.2017    source источник
comment
Если бы это было чем-то, что я делал, я бы попытался найти что-то, что уже работает, и сравнить их. Может быть, что-то вроде этого поможет? github.com/aidanrwt/twitch-bot   -  person Jacob Holloway    schedule 12.01.2017
comment
Спасибо за ваш ответ, теперь я использую pytwitcherapi.readthedocs.io/en/latest и работает !!   -  person AlexDotis    schedule 13.01.2017
comment
Не стесняйтесь писать (и принимать) свой собственный ответ для будущих читателей!   -  person Jacob Holloway    schedule 13.01.2017


Ответы (2)


Наконец, я нашел проблему с моим кодом!! Итак, я напишу шаги по созданию twitch бота двумя способами!

Первый способ :

  1. Вы должны создать учетную запись, чтобы дергаться

    import socket
    import re
    
    
    HOST = "irc.twitch.tv"
    
    PORT = 6667
    
    NICK = "botname" #The account Name
    
    PASS = "The password here" #http://www.twitchapps.com/tmi/
    
    CHAN = "#Channel"
    
    
    s = socket.socket()
    
    s.connect((HOST, PORT))
    
    s.send("PASS {}\r\n".format(PASS))
    
    s.send("NICK {}\r\n".format(NICK))
    
    s.send("JOIN {}\r\n".format(CHAN))
    
    while True:
        resp = s.recv(1024)
        print resp
        if resp == "PING :tmi.twitch.tv\r\n":
            s.send("PONG :tmi.twitch.tv\r\n")
        if resp.find("hi")!=-1:
            s.send("PRIVMSG "+CHAN+" :HELLO\r\n")
    
    
       resp = ""
    

Второй способ:

Я нашел pytwitcherapi. Вы можете прочитать документацию по адресу: http://pytwitcherapi.readthedocs.io/en/latest/

import pytwitcherapi
import time
import webbrowser
import threading
import queue

session = pytwitcherapi.TwitchSession()

url = session.get_auth_url()

session.start_login_server()

webbrowser.get("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s").open(url) #OAuth generator

while not session.authorized:
    time.sleep(1)

time.sleep(2)

print "Authorized"

session.shutdown_login_server()

channel = session.get_channel("ChannelName")

client =  pytwitcherapi.IRCClient(session,channel)

t = threading.Thread(target = client.process_forever)
t.start()

print "connected"

while True:
    try:
        m = client.messages.get(False)
        if m.text == "!ping":
            client.send_msg("pong!")
        if m.text =="hey":
            client.send_msg("Hey You!")
    except queue.Empty:
         pass

Надеюсь, все это поможет вам!!

person AlexDotis    schedule 18.01.2017

Насколько я могу судить по этой странице, HOST = "irc.twitch.tv" должно быть HOST = irc.chat.twitch.tv".

person Thelmund    schedule 12.01.2017
comment
У меня нет ничего, чтобы проверить это, но, возможно, удаление сообщения USER сработает. Я бы также перепроверил правильность имени пользователя и токена OAuth. - person Thelmund; 12.01.2017