From: John Runyon Date: Sat, 23 Mar 2024 07:35:41 +0000 (-0600) Subject: add user.bind_bot method X-Git-Url: https://jfr.im/git/erebus.git/commitdiff_plain/5f5d669f59db6e2156db1e529cada7a353430087 add user.bind_bot method recommended usage: - `user.bind_bot(bot)` - `user.bind_bot(lib.parent.randbot())` Wraps a User object in a new object which sends all .msg() through that bot, instead of through a random bot each time. --- diff --git a/erebus.py b/erebus.py index 5ebb39e..61dd1c9 100644 --- a/erebus.py +++ b/erebus.py @@ -33,6 +33,9 @@ class Erebus(object): #singleton to pass around self.chans = [] + def bind_bot(self, bot): + return main._BoundUser(self, bot) + def msg(self, *args, **kwargs): main.randbot().msg(self, *args, **kwargs) def slowmsg(self, *args, **kwargs): @@ -95,6 +98,22 @@ class Erebus(object): #singleton to pass around def __str__(self): return self.nick def __repr__(self): return "" % (self.nick, self.glevel) + class _BoundUser(object): + def __init__(self, user, bot): + self.__dict__['_bound_user'] = user + self.__dict__['_bound_bot'] = bot + def __getattr__(self, name): + return getattr(self._bound_user, name) + def __setattr__(self, name, value): + setattr(self._bound_user, name, value) + def msg(self, *args, **kwargs): + self._bound_bot.msg(self._bound_user, *args, **kwargs) + def slowmsg(self, *args, **kwargs): + self._bound_bot.slowmsg(self._bound_user, *args, **kwargs) + def fastmsg(self, *args, **kwargs): + self._bound_bot.fastmsg(self._bound_user, *args, **kwargs) + def __repr__(self): return "<_BoundUser %r %r>" % (self._bound_user, self._bound_bot) + class Channel(object): def __init__(self, name, bot): self.name = name