Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 29 additions & 16 deletions discordrpc/presence.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,13 @@ def set_activity(
if not self.ipc.connected:
return

self.ipc._send(payload, OP_FRAME)
self.is_running = True
log.info('RPC set')
try:
self.ipc._send(payload, OP_FRAME)
self.is_running = True
log.info('RPC set')
except Exception as e:
log.error('Failed to set RPC')
self.disconnect()

def disconnect(self):
if not self.ipc.connected:
Expand Down Expand Up @@ -146,16 +150,19 @@ def __init__(self, app_id, exit_if_discord_close, exit_on_disconnect):
try:
self.socket = open(path, "w+b")
except OSError as e:
if not self.exit_if_discord_close:
raise Error("Failed to open {!r}: {}".format(path, e))
if self.exit_if_discord_close:
log.debug("Failed to open {!r}: {}".format(path, e))
raise DiscordNotOpened()
else:
log.debug("Discord seems to be close.")
else:
break

else:
if not self.exit_if_discord_close:
if self.exit_if_discord_close:
raise DiscordNotOpened()
else:
log.debug("Discord seems to be close.")
log.warning("Discord is closed")
self.connected = False

if self.connected:
Expand Down Expand Up @@ -208,9 +215,12 @@ def handshake(self):
raise InvalidID

def disconnect(self):
self._send({}, OP_CLOSE)

self.socket.close()
try:
self._send({}, OP_CLOSE)
self.socket.close()
except Exception as e:
log.debug("Socket closed before command was received")

self.socket = None

log.warning("Closing RPC")
Expand Down Expand Up @@ -239,10 +249,10 @@ def __init__(self, app_id, exit_if_discord_close, exit_on_disconnect):
pass

else:
if not self.exit_if_discord_close:
if self.exit_if_discord_close:
raise DiscordNotOpened()
else:
log.debug("Discord seems to be close.")
log.warning("Discord is closed")
self.connected = False

if self.connected:
Expand Down Expand Up @@ -285,12 +295,15 @@ def handshake(self):
raise InvalidID

def disconnect(self):
self._send({}, OP_CLOSE)
try:
self._send({}, OP_CLOSE)
self.socket.shutdown(socket.SHUT_RDWR)
self.socket.close()
except Exception as e:
log.debug("Socket closed before command was received")

self.socket.shutdown(socket.SHUT_RDWR)
self.socket.close()
self.socket = None

log.warning("Closing RPC")
if self.exit_on_disconnect:
sys.exit()
sys.exit()