Clean up
This commit is contained in:
parent
1f5fc58e06
commit
a971b7e064
3 changed files with 35 additions and 100 deletions
|
|
@ -1,65 +0,0 @@
|
||||||
import asyncio
|
|
||||||
|
|
||||||
__all__ = ["Callbacks"]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Callbacks():
|
|
||||||
"""
|
|
||||||
Manage callbacks asynchronously
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
self._callbacks = {}
|
|
||||||
|
|
||||||
def add(self, event, callback):
|
|
||||||
"""
|
|
||||||
add(event, callback) -> None
|
|
||||||
|
|
||||||
Add a function to be called on event.
|
|
||||||
"""
|
|
||||||
|
|
||||||
if not event in self._callbacks:
|
|
||||||
self._callbacks[event] = []
|
|
||||||
self._callbacks[event].append(callback)
|
|
||||||
|
|
||||||
def remove(self, event):
|
|
||||||
"""
|
|
||||||
remove(event) -> None
|
|
||||||
|
|
||||||
Remove all callbacks attached to that event.
|
|
||||||
"""
|
|
||||||
|
|
||||||
if event in self._callbacks:
|
|
||||||
del self._callbacks[event]
|
|
||||||
|
|
||||||
async def call(self, event, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
await call(event) -> None
|
|
||||||
|
|
||||||
Call all callbacks subscribed to the event with *args and **kwargs".
|
|
||||||
"""
|
|
||||||
|
|
||||||
tasks = [asyncio.ensure_future(callback(*args, **kwargs))
|
|
||||||
for callback in self._callbacks.get(event, [])]
|
|
||||||
|
|
||||||
for task in tasks:
|
|
||||||
await task
|
|
||||||
|
|
||||||
def exists(self, event):
|
|
||||||
"""
|
|
||||||
exists(event) -> bool
|
|
||||||
|
|
||||||
Are any functions subscribed to this event?
|
|
||||||
"""
|
|
||||||
|
|
||||||
return event in self._callbacks
|
|
||||||
|
|
||||||
def list(self):
|
|
||||||
"""
|
|
||||||
list() -> callbacks
|
|
||||||
|
|
||||||
Returns a list of current callbacks
|
|
||||||
"""
|
|
||||||
|
|
||||||
return list(self._callbacks.keys())
|
|
||||||
|
|
@ -65,7 +65,7 @@ class Connection:
|
||||||
self._stopped = True
|
self._stopped = True
|
||||||
await self.reconnect() # _run() does the cleaning up now.
|
await self.reconnect() # _run() does the cleaning up now.
|
||||||
await self._runtask
|
await self._runtask
|
||||||
|
|
||||||
async def reconnect(self):
|
async def reconnect(self):
|
||||||
"""
|
"""
|
||||||
Reconnect to the url.
|
Reconnect to the url.
|
||||||
|
|
|
||||||
|
|
@ -17,14 +17,14 @@ __all__ = [
|
||||||
# """
|
# """
|
||||||
# Helper function to run a singular controller.
|
# Helper function to run a singular controller.
|
||||||
# """
|
# """
|
||||||
#
|
#
|
||||||
# async def run():
|
# async def run():
|
||||||
# task, reason = await controller.connect(room)
|
# task, reason = await controller.connect(room)
|
||||||
# if task:
|
# if task:
|
||||||
# await task
|
# await task
|
||||||
# else:
|
# else:
|
||||||
# logger.warn(f"Could not connect to &{room}: {reason!r}")
|
# logger.warn(f"Could not connect to &{room}: {reason!r}")
|
||||||
#
|
#
|
||||||
# asyncio.get_event_loop().run_until_complete(run())
|
# asyncio.get_event_loop().run_until_complete(run())
|
||||||
#
|
#
|
||||||
#def run_bot(bot_class, room, *args, **kwargs):
|
#def run_bot(bot_class, room, *args, **kwargs):
|
||||||
|
|
@ -32,7 +32,7 @@ __all__ = [
|
||||||
# Helper function to run a bot. To run Multibots, use the MultibotKeeper.
|
# Helper function to run a bot. To run Multibots, use the MultibotKeeper.
|
||||||
# This restarts the bot when it is explicitly restarted through Bot.restart().
|
# This restarts the bot when it is explicitly restarted through Bot.restart().
|
||||||
# """
|
# """
|
||||||
#
|
#
|
||||||
# async def run():
|
# async def run():
|
||||||
# while True:
|
# while True:
|
||||||
# logger.info(f"Creating new instance and connecting to &{room}")
|
# logger.info(f"Creating new instance and connecting to &{room}")
|
||||||
|
|
@ -42,12 +42,12 @@ __all__ = [
|
||||||
# await task
|
# await task
|
||||||
# else:
|
# else:
|
||||||
# logger.warn(f"Could not connect to &{room}: {reason!r}")
|
# logger.warn(f"Could not connect to &{room}: {reason!r}")
|
||||||
#
|
#
|
||||||
# if bot.restarting:
|
# if bot.restarting:
|
||||||
# logger.info(f"Restarting in &{room}")
|
# logger.info(f"Restarting in &{room}")
|
||||||
# else:
|
# else:
|
||||||
# break
|
# break
|
||||||
#
|
#
|
||||||
# asyncio.get_event_loop().run_until_complete(run())
|
# asyncio.get_event_loop().run_until_complete(run())
|
||||||
|
|
||||||
def mention(nick):
|
def mention(nick):
|
||||||
|
|
@ -70,28 +70,28 @@ def format_time_delta(delta):
|
||||||
result = "-"
|
result = "-"
|
||||||
else:
|
else:
|
||||||
result = ""
|
result = ""
|
||||||
|
|
||||||
delta = int(delta)
|
delta = int(delta)
|
||||||
|
|
||||||
second = 1
|
second = 1
|
||||||
minute = second*60
|
minute = second*60
|
||||||
hour = minute*60
|
hour = minute*60
|
||||||
day = hour*24
|
day = hour*24
|
||||||
|
|
||||||
if delta >= day:
|
if delta >= day:
|
||||||
result += f"{delta//day}d "
|
result += f"{delta//day}d "
|
||||||
delta = delta%day
|
delta = delta%day
|
||||||
|
|
||||||
if delta >= hour:
|
if delta >= hour:
|
||||||
result += f"{delta//hour}h "
|
result += f"{delta//hour}h "
|
||||||
delta = delta%hour
|
delta = delta%hour
|
||||||
|
|
||||||
if delta >= minute:
|
if delta >= minute:
|
||||||
result += f"{delta//minute}m "
|
result += f"{delta//minute}m "
|
||||||
delta = delta%minute
|
delta = delta%minute
|
||||||
|
|
||||||
result += f"{delta}s"
|
result += f"{delta}s"
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
class Session:
|
class Session:
|
||||||
|
|
@ -106,23 +106,23 @@ class Session:
|
||||||
self.is_manager = is_manager
|
self.is_manager = is_manager
|
||||||
self.client_address = client_address
|
self.client_address = client_address
|
||||||
self.real_address = real_address
|
self.real_address = real_address
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def uid(self):
|
def uid(self):
|
||||||
return self.user_id
|
return self.user_id
|
||||||
|
|
||||||
@uid.setter
|
@uid.setter
|
||||||
def uid(self, new_uid):
|
def uid(self, new_uid):
|
||||||
self.user_id = new_uid
|
self.user_id = new_uid
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def sid(self):
|
def sid(self):
|
||||||
return self.session_id
|
return self.session_id
|
||||||
|
|
||||||
@sid.setter
|
@sid.setter
|
||||||
def sid(self, new_sid):
|
def sid(self, new_sid):
|
||||||
self.session_id = new_sid
|
self.session_id = new_sid
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_dict(cls, d):
|
def from_dict(cls, d):
|
||||||
return cls(
|
return cls(
|
||||||
|
|
@ -136,7 +136,7 @@ class Session:
|
||||||
d.get("client_address", None),
|
d.get("client_address", None),
|
||||||
d.get("real_address", None)
|
d.get("real_address", None)
|
||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def client_type(self):
|
def client_type(self):
|
||||||
# account, agent or bot
|
# account, agent or bot
|
||||||
|
|
@ -145,16 +145,16 @@ class Session:
|
||||||
class Listing:
|
class Listing:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._sessions = {}
|
self._sessions = {}
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
return len(self._sessions)
|
return len(self._sessions)
|
||||||
|
|
||||||
def add(self, session):
|
def add(self, session):
|
||||||
self._sessions[session.session_id] = session
|
self._sessions[session.session_id] = session
|
||||||
|
|
||||||
def remove(self, session_id):
|
def remove(self, session_id):
|
||||||
self._sessions.pop(session_id)
|
self._sessions.pop(session_id)
|
||||||
|
|
||||||
def remove_combo(self, server_id, server_era):
|
def remove_combo(self, server_id, server_era):
|
||||||
removed = [ses for ses in self._sessions.items()
|
removed = [ses for ses in self._sessions.items()
|
||||||
if ses.server_id == server_id and ses.server_era == server_era]
|
if ses.server_id == server_id and ses.server_era == server_era]
|
||||||
|
|
@ -163,34 +163,34 @@ class Listing:
|
||||||
if ses.server_id != server_id and ses.server_era != server_era}
|
if ses.server_id != server_id and ses.server_era != server_era}
|
||||||
|
|
||||||
return removed
|
return removed
|
||||||
|
|
||||||
def by_sid(self, session_id):
|
def by_sid(self, session_id):
|
||||||
return self._sessions.get(session_id);
|
return self._sessions.get(session_id);
|
||||||
|
|
||||||
def by_uid(self, user_id):
|
def by_uid(self, user_id):
|
||||||
return [ses for ses in self._sessions if ses.user_id == user_id]
|
return [ses for ses in self._sessions if ses.user_id == user_id]
|
||||||
|
|
||||||
def get(self, types=["agent", "account", "bot"], lurker=None):
|
def get(self, types=["agent", "account", "bot"], lurker=None):
|
||||||
sessions = []
|
sessions = []
|
||||||
for uid, ses in self._sessions.items():
|
for uid, ses in self._sessions.items():
|
||||||
if ses.client_type not in types:
|
if ses.client_type not in types:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
is_lurker = not ses.nick # "" or None
|
is_lurker = not ses.nick # "" or None
|
||||||
if lurker is None or lurker == is_lurker:
|
if lurker is None or lurker == is_lurker:
|
||||||
sessions.append(ses)
|
sessions.append(ses)
|
||||||
|
|
||||||
return sessions
|
return sessions
|
||||||
|
|
||||||
#def get_people(self):
|
#def get_people(self):
|
||||||
#return self.get(types=["agent", "account"])
|
#return self.get(types=["agent", "account"])
|
||||||
|
|
||||||
#def get_accounts(self):
|
#def get_accounts(self):
|
||||||
#return self.get(types=["account"])
|
#return self.get(types=["account"])
|
||||||
|
|
||||||
#def get_agents(self):
|
#def get_agents(self):
|
||||||
#return self.get(types=["agent"])
|
#return self.get(types=["agent"])
|
||||||
|
|
||||||
#def get_bots(self):
|
#def get_bots(self):
|
||||||
#return self.get(types=["bot"])
|
#return self.get(types=["bot"])
|
||||||
|
|
||||||
|
|
@ -207,15 +207,15 @@ class Message():
|
||||||
self.edited = edited
|
self.edited = edited
|
||||||
self.deleted = deleted
|
self.deleted = deleted
|
||||||
self.truncated = truncated
|
self.truncated = truncated
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def mid(self):
|
def mid(self):
|
||||||
return self.message_id
|
return self.message_id
|
||||||
|
|
||||||
@mid.setter
|
@mid.setter
|
||||||
def mid(self, new_mid):
|
def mid(self, new_mid):
|
||||||
self.message_id = new_mid
|
self.message_id = new_mid
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_dict(cls, d):
|
def from_dict(cls, d):
|
||||||
return cls(
|
return cls(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue