Source code for errbot.core_plugins.utils
from os import path
from errbot import BotPlugin, botcmd
[docs]def tail(f, window=20):
return "".join(f.readlines()[-window:])
[docs]class Utils(BotPlugin):
# noinspection PyUnusedLocal
[docs] @botcmd
def echo(self, _, args):
"""A simple echo command. Useful for encoding tests etc ..."""
return args
[docs] @botcmd
def whoami(self, msg, args):
"""A simple command echoing the details of your identifier. Useful to debug identity problems."""
if args:
frm = self.build_identifier(str(args).strip('"'))
else:
frm = msg.frm
resp = ""
if self.bot_config.GROUPCHAT_NICK_PREFIXED:
resp += "\n\n"
resp += "| key | value\n"
resp += "| -------- | --------\n"
resp += f"| person | `{frm.person}`\n"
resp += f"| nick | `{frm.nick}`\n"
resp += f"| fullname | `{frm.fullname}`\n"
resp += f"| client | `{frm.client}`\n"
resp += f"| email | `{frm.email}`\n"
# extra info if it is a MUC
if hasattr(frm, "room"):
resp += f"\n`room` is {frm.room}\n"
resp += f"\n\n- string representation is '{frm}'\n"
resp += f"- class is '{frm.__class__.__name__}'\n"
return resp
# noinspection PyUnusedLocal
[docs] @botcmd(historize=False)
def history(self, msg, args):
"""display the command history"""
answer = []
user_cmd_history = self._bot.cmd_history[msg.frm.person]
length = len(user_cmd_history)
for i in range(0, length):
c = user_cmd_history[i]
answer.append(f"{length - i:2d}:{self._bot.prefix}{c[0]} {c[1]}")
return "\n".join(answer)
# noinspection PyUnusedLocal
[docs] @botcmd(admin_only=True)
def log_tail(self, msg, args):
"""Display a tail of the log of n lines or 40 by default
use : !log tail 10
"""
n = 40
if args.isdigit():
n = int(args)
if self.bot_config.BOT_LOG_FILE:
with open(self.bot_config.BOT_LOG_FILE) as f:
return "```\n" + tail(f, n) + "\n```"
return "No log is configured, please define BOT_LOG_FILE in config.py"
[docs] @botcmd
def render_test(self, _, args):
"""Tests / showcases the markdown rendering on your current backend"""
with open(path.join(path.dirname(path.realpath(__file__)), "test.md")) as f:
return f.read()