# Erebus IRC bot - Author: Erebus Team
-# simple module example
+# vim: fileencoding=utf-8
+# resource-usage module
# This file is released into the public domain; see http://unlicense.org/
# module info
modinfo = {
'author': 'Erebus Team',
'license': 'public domain',
- 'compatible': [1], # compatible module API versions
- 'depends': [], # other modules required to work properly?
+ 'compatible': [0],
+ 'depends': [],
+ 'softdeps': ['help'],
}
# preamble
modstop = lib.modstop
# module code
-import resource
+import resource, time
-@lib.hook(needchan=False, glevel=lib.MANAGER)
+@lib.hook(needchan=False, wantchan=True, glevel=lib.MANAGER)
+@lib.help(None, "show RAM usage")
def ram(bot, user, chan, realtarget, *args):
- if chan is not None and realtarget == chan.name: replyto = chan
+ if chan is not None: replyto = chan
else: replyto = user
try:
bot.fastmsg(replyto, "Memory usage (MiB): %r" % (res.ru_maxrss/1024.0))
-@lib.hook(needchan=False, glevel=lib.MANAGER)
+@lib.hook(needchan=False, wantchan=True, glevel=lib.MANAGER)
+@lib.help(None, "show resource usage")
def resources(bot, user, chan, realtarget, *args):
- if chan is not None and realtarget == chan.name: replyto = chan
+ if chan is not None: replyto = chan
else: replyto = user
+ uptime = time.time() - bot.parent.starttime
+ m, s = divmod(uptime, 60)
+ h, m = divmod(m, 60)
+ d, h = divmod(h, 24)
try:
res = resource.getrusage(resource.RUSAGE_BOTH)
except:
bot.slowmsg(replyto, "Resource usage:")
for i, v in (
+ ('uptime (s)', "%d (%d days %02d:%02d:%02d)" % (uptime, d, h, m, s)),
('utime (s)', res.ru_utime),
('stime (s)', res.ru_stime),
('memory (MiB)', (res.ru_maxrss/1024.0)),
('context switches (voluntary)', res.ru_nvcsw),
('context switches (involuntary)', res.ru_nivcsw),
):
- bot.slowmsg(replyto, "- %s: %r" % (i, v))
+ bot.slowmsg(replyto, "- %s: %s" % (i, v))
bot.slowmsg(replyto, "EOL.")