From 6b2b3d71c8fc7bc5d32fd139693c8864d4f35d62 Mon Sep 17 00:00:00 2001 From: jesopo Date: Tue, 28 Apr 2020 00:35:32 +0100 Subject: [PATCH] add send_nick() - optionally await success --- ircrobots/server.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/ircrobots/server.py b/ircrobots/server.py index 36d4bd8..d78b930 100644 --- a/ircrobots/server.py +++ b/ircrobots/server.py @@ -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