Actually check connection during ping command
This commit is contained in:
parent
ee8b0a2fca
commit
2143282195
@ -79,8 +79,10 @@ async def whoami(evt: CommandEvent) -> None:
|
|||||||
help_text="Check if you're connected to KakaoTalk chats",
|
help_text="Check if you're connected to KakaoTalk chats",
|
||||||
)
|
)
|
||||||
async def ping(evt: CommandEvent) -> None:
|
async def ping(evt: CommandEvent) -> None:
|
||||||
|
assert evt.sender.client
|
||||||
|
is_connected = evt.sender.is_connected and await evt.sender.client.is_connected()
|
||||||
await evt.reply(
|
await evt.reply(
|
||||||
f"You are {'connected to' if evt.sender.is_connected else '**disconnected** from'} KakaoTalk chats."
|
f"You are {'connected to' if is_connected else '**disconnected** from'} KakaoTalk chats."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -261,6 +261,9 @@ class Client:
|
|||||||
await self._rpc_client.request("disconnect", mxid=self.user.mxid)
|
await self._rpc_client.request("disconnect", mxid=self.user.mxid)
|
||||||
await self._on_disconnect(None)
|
await self._on_disconnect(None)
|
||||||
|
|
||||||
|
def is_connected(self) -> Awaitable[bool]:
|
||||||
|
return self._rpc_client.request("is_connected", mxid=self.user.mxid)
|
||||||
|
|
||||||
def get_settings(self) -> Awaitable[SettingsStruct]:
|
def get_settings(self) -> Awaitable[SettingsStruct]:
|
||||||
return self._api_user_request_result(SettingsStruct, "get_settings")
|
return self._api_user_request_result(SettingsStruct, "get_settings")
|
||||||
|
|
||||||
|
@ -389,6 +389,10 @@ class UserClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isConnected() {
|
||||||
|
return this.#talkClient?.logon || false
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a user-specific command with (optional) data to the socket.
|
* Send a user-specific command with (optional) data to the socket.
|
||||||
*
|
*
|
||||||
@ -644,6 +648,14 @@ export default class PeerClient {
|
|||||||
this.#tryGetUser(req.mxid)?.disconnect()
|
this.#tryGetUser(req.mxid)?.disconnect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Object} req
|
||||||
|
* @param {string} req.mxid
|
||||||
|
*/
|
||||||
|
isConnected = (req) => {
|
||||||
|
return this.#tryGetUser(req.mxid)?.isConnected()
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Object} req
|
* @param {Object} req
|
||||||
* @param {string} req.mxid
|
* @param {string} req.mxid
|
||||||
@ -1054,6 +1066,7 @@ export default class PeerClient {
|
|||||||
stop: this.userStop,
|
stop: this.userStop,
|
||||||
connect: this.handleConnect,
|
connect: this.handleConnect,
|
||||||
disconnect: this.handleDisconnect,
|
disconnect: this.handleDisconnect,
|
||||||
|
is_connected: this.isConnected,
|
||||||
get_settings: this.getSettings,
|
get_settings: this.getSettings,
|
||||||
get_own_profile: this.getOwnProfile,
|
get_own_profile: this.getOwnProfile,
|
||||||
get_profile: this.getProfile,
|
get_profile: this.getProfile,
|
||||||
|
Loading…
Reference in New Issue
Block a user