Cant login as bot in python


#1

Trying to receive messages from chat continuously, but noticed that twitch disconnects me after approximately 10 min, so I created app here https://dev.twitch.tv/console/apps and got access_token by sending client_id and client_secret to id.twitch.tv/oauth2/token. After that I try to send pass and nick using socket but I receive :tmi.twitch.tv NOTICE * :Login unsuccessful

import socket
import requests

r = requests.post(f'https://id.twitch.tv/oauth2/token'
                  f'?client_id={CLIENT_ID}'
                  f'&client_secret={CLIENT_SECRET}'
                  f'&grant_type=client_credentials'
                  f'&scope=chat:read chat:edit channel:moderate')

resp = r.json()

PASS = resp['access_token']

s = socket.socket()
s.connect((Host, Port))
s.send(f"PASS oauth:{PASS}\r\n".encode("utf-8"))
s.send(f"NICK {Nickname.lower()}\r\n".encode("utf-8"))
s.send(f"JOIN {Channel}\r\n".encode("utf-8"))

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

#2

You cannot use a token of type “client_credentials” to login to Twitch chat.

It doesn’t represent a user

You need a user Access Token:


#5

A token of type client_credentials won’t let you login to chat.

It doesn’t have scopes on it (even though you requested)

To login to chat you need a user token (response_type code) that has the relevant chat scopes on it, and the access_code you exchange for needs to be for the user of “nickname” in your code.

The oAuth loop is done separately to your main bot code flow, since it needs a web server (even a localhost one) and user interaction to validate/access the permission(s), and you just throw a refresh token loop in instead.