evennia.comms.managers

These managers define helper methods for accessing the database from Comm system components.

exception evennia.comms.managers.CommError[source]

Bases: Exception

Raised by comm system, to allow feedback to player when caught.

evennia.comms.managers.identify_object(inp)[source]

Helper function. Identifies if an object is an account or an object; return its database model

Parameters

inp (any) – Entity to be idtified.

Returns

identified (tuple)

This is a tuple with (inp, identifier)

where identifier is one of “account”, “object”, “channel”, “string”, “dbref” or None.

evennia.comms.managers.to_object(inp, objtype='account')[source]

Locates the object related to the given accountname or channel key. If input was already the correct object, return it.

Parameters
  • inp (any) – The input object/string

  • objtype (str) – Either ‘account’ or ‘channel’.

Returns

obj (object) – The correct object related to inp.

class evennia.comms.managers.MsgManager(*args, **kwargs)[source]

Bases: evennia.typeclasses.managers.TypedObjectManager

This MsgManager implements methods for searching and manipulating Messages directly from the database.

These methods will all return database objects (or QuerySets) directly.

A Message represents one unit of communication, be it over a Channel or via some form of in-game mail system. Like an e-mail, it always has a sender and can have any number of receivers (some of which may be Channels).

identify_object(inp)[source]

Wrapper to identify_object if accessing via the manager directly.

Parameters

inp (any) – Entity to be idtified.

Returns

identified (tuple)

This is a tuple with (inp, identifier)

where identifier is one of “account”, “object”, “channel”, “string”, “dbref” or None.

get_message_by_id(idnum)[source]

Retrieve message by its id.

Parameters

idnum (int or str) – The dbref to retrieve.

Returns

message (Msg) – The message.

get_messages_by_sender(sender)[source]

Get all messages sent by one entity - this could be either a account or an object

Parameters

sender (Account or Object) – The sender of the message.

Returns

QuerySet – Matching messages.

Raises

CommError – For incorrect sender types.

get_messages_by_receiver(recipient)[source]

Get all messages sent to one given recipient.

Parameters

recipient (Object, Account or Channel) – The recipient of the messages to search for.

Returns

Queryset – Matching messages.

Raises

CommError – If the recipient is not of a valid type.

search_message(sender=None, receiver=None, freetext=None, dbref=None)[source]

Search the message database for particular messages. At least one of the arguments must be given to do a search.

Parameters
  • sender (Object, Account or Script, optional) – Get messages sent by a particular sender.

  • receiver (Object, Account or Channel, optional) – Get messages received by a certain account,object or channel

  • freetext (str) – Search for a text string in a message. NOTE: This can potentially be slow, so make sure to supply one of the other arguments to limit the search.

  • dbref (int) – The exact database id of the message. This will override all other search criteria since it’s unique and always gives only one match.

Returns

Queryset – Iterable with 0, 1 or more matches.

Search the message database for particular messages. At least one of the arguments must be given to do a search.

Parameters
  • sender (Object, Account or Script, optional) – Get messages sent by a particular sender.

  • receiver (Object, Account or Channel, optional) – Get messages received by a certain account,object or channel

  • freetext (str) – Search for a text string in a message. NOTE: This can potentially be slow, so make sure to supply one of the other arguments to limit the search.

  • dbref (int) – The exact database id of the message. This will override all other search criteria since it’s unique and always gives only one match.

Returns

Queryset – Iterable with 0, 1 or more matches.

create_message(senderobj, message, receivers=None, locks=None, tags=None, header=None, **kwargs)[source]

Create a new communication Msg. Msgs represent a unit of database-persistent communication between entites.

Parameters
  • senderobj (Object, Account, Script, str or list) – The entity (or entities) sending the Msg. If a str, this is the id-string for an external sender type.

  • message (str) – Text with the message. Eventual headers, titles etc should all be included in this text string. Formatting will be retained.

  • receivers (Object, Account, Script, str or list) – An Account/Object to send to, or a list of them. If a string, it’s an identifier for an external receiver.

  • locks (str) – Lock definition string.

  • tags (list) – A list of tags or tuples (tag[,category[,data]]).

  • header (str) – Mime-type or other optional information for the message

Notes

The Comm system is created to be very open-ended, so it’s fully possible to let a message both go several receivers at the same time, it’s up to the command definitions to limit this as desired.

class evennia.comms.managers.ChannelDBManager(*args, **kwargs)[source]

Bases: evennia.typeclasses.managers.TypedObjectManager

This ChannelManager implements methods for searching and manipulating Channels directly from the database.

These methods will all return database objects (or QuerySets) directly.

A Channel is an in-game venue for communication. It’s essentially representation of a re-sender: Users sends Messages to the Channel, and the Channel re-sends those messages to all users subscribed to the Channel.

get_all_channels()[source]

Get all channels.

Returns

channels (list) – All channels in game.

get_channel(channelkey)[source]

Return the channel object if given its key. Also searches its aliases.

Parameters

channelkey (str) – Channel key to search for.

Returns

channel (Channel or None) – A channel match.

get_subscriptions(subscriber)[source]

Return all channels a given entity is subscribed to.

Parameters

subscriber (Object or Account) – The one subscribing.

Returns

subscriptions (list) – Channel subscribed to.

search_channel(ostring, exact=True)[source]

Search the channel database for a particular channel.

Parameters
  • ostring (str) – The key or database id of the channel.

  • exact (bool, optional) – Require an exact (but not case sensitive) match.

Returns

Queryset – Iterable with 0, 1 or more matches.

create_channel(key, aliases=None, desc=None, locks=None, keep_log=True, typeclass=None, tags=None, attrs=None)[source]

Create A communication Channel. A Channel serves as a central hub for distributing Msgs to groups of people without specifying the receivers explicitly. Instead accounts may ‘connect’ to the channel and follow the flow of messages. By default the channel allows access to all old messages, but this can be turned off with the keep_log switch.

Parameters

key (str) – This must be unique.

Keyword Arguments
  • aliases (list of str) – List of alternative (likely shorter) keynames.

  • desc (str) – A description of the channel, for use in listings.

  • locks (str) – Lockstring.

  • keep_log (bool) – Log channel throughput.

  • typeclass (str or class) – The typeclass of the Channel (not often used).

  • tags (list) – A list of tags or tuples (tag[,category[,data]]).

  • attrs (list) – List of attributes on form (name, value[,category[,lockstring]])

Returns

channel (Channel) – A newly created channel.

Search the channel database for a particular channel.

Parameters
  • ostring (str) – The key or database id of the channel.

  • exact (bool, optional) – Require an exact (but not case sensitive) match.

Returns

Queryset – Iterable with 0, 1 or more matches.

class evennia.comms.managers.ChannelManager(*args, **kwargs)[source]

Bases: evennia.comms.managers.ChannelDBManager, evennia.typeclasses.managers.TypeclassManager

Wrapper to group the typeclass manager to a consistent name.