Я пишу приложение, которое взаимодействует с Lichess.Однако, когда я использую API для получения состояния игры, я должен использовать
for event in client.bots.stream_game_state(game_id):
, как указано в документации.Фактически, это именно тот код, который они используют в своем примере.Однако я получаю следующую ошибку:
runfile('C:/Users/David/.spyder-py3/robot.py', wdir='C:/Users/David/.spyder-py3')
The game has started!
Traceback (most recent call last):
File "<ipython-input-31-24ee75ee6f26>", line 1, in <module>
runfile('C:/Users/David/.spyder-py3/robot.py', wdir='C:/Users/David/.spyder-py3')
File "C:\Users\David\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 786, in runfile
execfile(filename, namespace)
File "C:\Users\David\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/David/.spyder-py3/robot.py", line 42, in <module>
for event in client.bots.stream_game_state(game_id):
File "C:\Users\David\Anaconda3\lib\site-packages\berserk\clients.py", line 423, in stream_game_state
converter=models.GameState.convert)
File "C:\Users\David\Anaconda3\lib\site-packages\berserk\session.py", line 49, in get
return self.request('GET', *args, **kwargs)
File "C:\Users\David\Anaconda3\lib\site-packages\berserk\session.py", line 42, in request
response.raise_for_status()
File "C:\Users\David\Anaconda3\lib\site-packages\requests\models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
HTTPError: 400 Client Error: Bad Request for url: https://lichess.org/api/bot/game/stream/8Kjolz4k
Вот мой код:
# Type "!pip install berserk" in Console to get berserk module
import berserk
import time
import threading
# Initiate a session with my personal API token
token = "***************"
session = berserk.TokenSession(token)
client = berserk.Client(session)
# Stream whats happening and continue when we are challenged
in_game = False
while(not in_game):
time.sleep(0.5)
for event in client.bots.stream_incoming_events():
if event['type'] == 'gameStart':
game_id = event['game']['id']
in_game = True
break
elif event['type'] == 'challenge':
game_id = event['challenge']['id']
client.bots.accept_challenge(game_id)
in_game = True
print("The game has started!")
# Stream the events of the game and respond accordingly
playing = True
while(playing):
for event in client.bots.stream_game_state(game_id):
if event['type'] == 'gameFull':
if client.account.get()['username'] == event['white']['id']:
client.bots.post_message(game_id, "I got first, nerd!")
else:
client.bots.post_message(game_id, "You got first, nerd!")