Как остановить скрипт, когда я запускаю игру на своем компьютере? - PullRequest
0 голосов
/ 19 июня 2020

привет друзья, я пытаюсь сделать парового часового бота. Я запускаю этого бота в своей системе ubuntu, например, на "screen -S idle python3 xxx.py". Что я хочу сделать, так это закрыть экран, когда я вхожу в игру на своем компьютере, я хочу, чтобы бот закрывался сам ... Код, который я использую, приведен ниже.

import logging
from steam.client import SteamClient
from steam.enums import EResult
from steam.enums import EFriendRelationship, EPersonaState, EChatEntryType
from steam.client import user
# setup logging
logging.basicConfig(format="%(asctime)s | %(message)s", level=logging.INFO)
LOG = logging.getLogger()

client = SteamClient()
client.set_credential_location(".")  # where to store sentry files and other stuff
server_ip=client.current_server_addr
@client.on("error")
def handle_error(result):
    LOG.info("Logon result: %s", repr(result))

@client.on("channel_secured")
def send_login():
    if client.relogin_available:
        client.relogin()

@client.on("connected")
def handle_connected():
    LOG.info("Connected to %s", client.current_server_addr)
@client.on("reconnect")
def handle_reconnect(delay):
    LOG.info("Out...")
    LOG.info("Reconnect in %ds...", delay)
    client.logout()
    raise SystemExit

@client.on("disconnected")
def handle_disconnect():
    LOG.info("Disconnected.")
    client.disconnect()


    if client.relogin_available:
        LOG.info("Reconnecting...")
        client.reconnect(maxdelay=30)


@client.on("logged_on")
def handle_after_logon():
    LOG.info("-"*30)
    LOG.info("Logged on as: %s", client.user.name)
    LOG.info("Community profile: %s", client.steam_id.community_url)
    LOG.info("Last logon: %s", client.user.last_logon)
    LOG.info("Last logoff: %s", client.user.last_logoff)
    LOG.info("-"*30)
    LOG.info("Press ^C to exit")


# main bit
LOG.info("Persistent logon recipe")
LOG.info("-"*30)

try:
    result = client.cli_login("username","password")
    if result != EResult.OK:
        LOG.info("Failed to login: %s" % repr(result))
        raise SystemExit

    else:
        client.get_web_session("English")
        client.games_played([730])
        client.change_status(persona_state=EPersonaState.Online, player_name='xxx')
        client.run_forever()

except KeyboardInterrupt:
    if client.connected:
        LOG.info("Logout")
        client.logout()

документация библиотеки, которую я использую; https://steam.readthedocs.io/en/latest/api/steam.client.html#steam .client.SteamClient.set_credential_location
Когда я вхожу в игру из Steam на моем собственном компьютере, он улавливает мое соединение и продолжает scirpt Я хочу его закрыть.

...