add send_nick() - optionally await success

This commit is contained in:
jesopo 2020-04-28 00:35:32 +01:00
parent c06068bf2c
commit 6b2b3d71c8

View file

@ -295,6 +295,26 @@ class Server(IServer):
return False
# /CAP-related
def send_nick(self, new_nick: str) -> Awaitable[bool]:
fut = self.send(build("NICK", [new_nick]))
async def _assure() -> bool:
await fut
line = await self.wait_for({
Response("NICK", [Folded(new_nick)], source=SELF),
Responses([
ERR_BANNICKCHANGE,
ERR_NICKTOOFAST,
ERR_CANTCHANGENICK
], [ANY]),
Responses([
ERR_NICKNAMEINUSE,
ERR_ERRONEUSNICKNAME,
ERR_UNAVAILRESOURCE
], [ANY, Folded(new_nick)])
})
return line.command == "NICK"
return MaybeAwait(_assure)
def send_join(self,
name: str,
key: Optional[str]=None