[cat] New module performing cat like action
This commit is contained in:
parent
277d55d521
commit
1d13d56dce
55
modules/cat.py
Normal file
55
modules/cat.py
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
"""Concatenate commands"""
|
||||||
|
|
||||||
|
# PYTHON STUFFS #######################################################
|
||||||
|
|
||||||
|
from nemubot import context
|
||||||
|
from nemubot.exception import IMException
|
||||||
|
from nemubot.hooks import hook
|
||||||
|
from nemubot.message import Command, DirectAsk, Text
|
||||||
|
|
||||||
|
from more import Response
|
||||||
|
|
||||||
|
|
||||||
|
# MODULE CORE #########################################################
|
||||||
|
|
||||||
|
def cat(msg, *terms):
|
||||||
|
res = Response(channel=msg.to_response, server=msg.server)
|
||||||
|
for term in terms:
|
||||||
|
m = context.subparse(msg, term)
|
||||||
|
if isinstance(m, Command) or isinstance(m, DirectAsk):
|
||||||
|
for r in context.subtreat(m):
|
||||||
|
if isinstance(r, Response):
|
||||||
|
for t in range(len(r.messages)):
|
||||||
|
res.append_message(r.messages[t],
|
||||||
|
title=r.rawtitle if not isinstance(r.rawtitle, list) else r.rawtitle[t])
|
||||||
|
|
||||||
|
elif isinstance(r, Text):
|
||||||
|
res.append_message(r.message)
|
||||||
|
|
||||||
|
elif isinstance(r, str):
|
||||||
|
res.append_message(r)
|
||||||
|
|
||||||
|
else:
|
||||||
|
res.append_message(term)
|
||||||
|
|
||||||
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
# MODULE INTERFACE ####################################################
|
||||||
|
|
||||||
|
@hook.command("cat",
|
||||||
|
help="Concatenate responses of commands given as argument",
|
||||||
|
help_usage={"!SUBCMD [!SUBCMD [...]]": "Concatenate response of subcommands"},
|
||||||
|
keywords={
|
||||||
|
"merge": "Merge messages into the same",
|
||||||
|
})
|
||||||
|
def cmd_cat(msg):
|
||||||
|
if len(msg.args) < 1:
|
||||||
|
raise IMException("No subcommand to concatenate")
|
||||||
|
|
||||||
|
r = cat(msg, *msg.args)
|
||||||
|
|
||||||
|
if "merge" in msg.kwargs and len(r.messages) > 1:
|
||||||
|
r.messages = [ r.messages ]
|
||||||
|
|
||||||
|
return r
|
Loading…
Reference in New Issue
Block a user