$ git clone https://ion.nu/git/relaybot
commit bf846776f441e470da2955369296a0fdd2a39751
Author: Alicia <...>
Date: Sun Feb 11 17:22:33 2018 +0100
Added a 'lastseen' module.
diff --git a/modules/lastseen.sh b/modules/lastseen.sh
new file mode 100644
index 0000000..1975090
--- /dev/null
+++ b/modules/lastseen.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# relaybot, the message-passing bot that grew into so much more
+# Copyright (C) 2018 alicia@ion.nu
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, version 3 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+mkdir -p "${DATADIR}/lastseen"
+lastseen_msg()
+{
+ from="`echo "$2" | tr -d '/'`"
+ date '+%s' > "${DATADIR}/lastseen/${from}"
+}
+
+lastseen_lastseen()
+{
+ who="$2"
+ if [ -e "${DATADIR}/lastseen/${who}" ]; then
+ time="`cat "${DATADIR}/lastseen/${who}"`"
+ now="`date '+%s'`"
+ time="`expr "$now" - "$time"`"
+ days="`expr "$time" / 86400`"
+ hours="`expr "$time" '%' 86400 / 3600`"
+ minutes="`expr "$time" '%' 3600 / 60`"
+ seconds="`expr "$time" '%' 60`"
+ msg=""
+ sep=''
+ if [ "$days" != "0" ]; then msg="${msg}${sep}${days} day"; if [ "$days" != "1" ]; then msg="${msg}s"; fi; sep=', '; fi
+ if [ "$hours" != "0" ]; then msg="${msg}${sep}${hours} hour"; if [ "$hours" != "1" ]; then msg="${msg}s"; fi; sep=', '; fi
+ if [ "$minutes" != "0" ]; then msg="${msg}${sep}${minutes} minute"; if [ "$minutes" != "1" ]; then msg="${msg}s"; fi; sep=', '; fi
+ if [ "$seconds" != "0" -o -z "$sep" ]; then
+ msg="${msg}${sep}${seconds} second"
+ if [ "$seconds" != "1" ]; then msg="${msg}s"; fi;
+ fi
+ say "${who} was last seen ${msg} ago"
+ else
+ say "Who is ${who}?"
+ fi
+}
+
+addeventhandler chatmsg lastseen_msg
+addcmd '!lastseen' lastseen_lastseen