Be more lenient with iterables sent to msg(text=..)

This will enforce that the text argument must either
be a string or a tuple.
This commit is contained in:
Griatch 2018-02-08 20:35:00 +01:00
parent 70dbaf8bf4
commit 2e1ca526c6
2 changed files with 17 additions and 2 deletions

View file

@ -21,7 +21,7 @@ from evennia.objects.models import ObjectDB
from evennia.comms.models import ChannelDB
from evennia.commands import cmdhandler
from evennia.utils import logger
from evennia.utils.utils import (lazy_property,
from evennia.utils.utils import (lazy_property, to_str,
make_iter, to_unicode, is_iter,
variable_from_module)
from evennia.typeclasses.attributes import NickHandler
@ -421,6 +421,13 @@ class DefaultAccount(with_metaclass(TypeclassBase, AccountDB)):
kwargs["options"] = options
if text and not (isinstance(text, basestring) or isinstance(text, tuple)):
# sanitize text before sending across the wire
try:
text = to_str(text, force_string=True)
except Exception:
text = repr(text)
# session relay
sessions = make_iter(session) if session else self.sessions.all()
for session in sessions: