bitbot-3.11-fork/modules/seen.py

48 lines
1.7 KiB
Python
Raw Normal View History

#--depends-on commands
2019-06-19 21:14:13 +00:00
#--depends-on format_activity
2016-03-29 11:56:58 +00:00
import time
from src import ModuleManager, utils
2016-03-29 11:56:58 +00:00
class Module(ModuleManager.BaseModule):
def _change_seen(self, channel, user, action):
user.set_setting("seen", time.time())
channel.set_user_setting(user.get_id(), "seen-info", {"action": action})
@utils.hook("formatted.message.channel")
@utils.hook("formatted.notice.channel")
def on_formatted(self, event):
line = event["minimal"] or event["line"]
if event["channel"]:
self._change_seen(event["channel"], event["user"], line)
elif event["user"]:
for channel in event["user"].channels:
self._change_seen(channel, event["user"], line)
2016-03-29 11:56:58 +00:00
@utils.hook("received.command.seen", min_args=1)
2016-03-29 11:56:58 +00:00
def seen(self, event):
"""
:help: Find out when a user was last seen
:usage: <nickname>
"""
user = event["server"].get_user(event["args_split"][0])
seen_seconds = user.get_setting("seen")
2016-03-29 11:56:58 +00:00
if seen_seconds:
seen_info = None
if event["is_channel"]:
seen_info = event["target"].get_user_setting(
user.get_id(), "seen-info", None)
if seen_info:
seen_info = " (%s%s)" % (seen_info["action"],
utils.consts.RESET)
since = utils.datetime.to_pretty_time(time.time()-seen_seconds,
2018-08-29 14:52:04 +00:00
max_units=2)
event["stdout"].write("%s was last seen %s ago%s" % (
event["args_split"][0], since, seen_info or ""))
2016-03-29 11:56:58 +00:00
else:
event["stderr"].write("I have never seen %s before." % (
event["args_split"][0]))