evennia.comms.comms¶
Base typeclass for in-game Channels.
-
class
evennia.comms.comms.DefaultChannel(*args, **kwargs)[source]¶ Bases:
evennia.comms.models.ChannelDBThis is the base class for all Channel Comms. Inherit from this to create different types of communication channels.
-
objects= <evennia.comms.managers.ChannelManager object>¶
-
at_first_save()[source]¶ Called by the typeclass system the very first time the channel is saved to the database. Generally, don’t overload this but the hooks called by this method.
-
has_connection(subscriber)[source]¶ Checks so this account is actually listening to this channel.
- Parameters
subscriber (Account or Object) – Entity to check.
- Returns
has_sub (bool) –
- Whether the subscriber is subscribing to
this channel or not.
Notes
- This will first try Account subscribers and only try Object
if the Account fails.
-
property
mutelist¶
-
property
wholist¶
-
mute(subscriber, **kwargs)[source]¶ Adds an entity to the list of muted subscribers. A muted subscriber will no longer see channel messages, but may use channel commands.
- Parameters
subscriber (Object or Account) – Subscriber to mute.
**kwargs (dict) – Arbitrary, optional arguments for users overriding the call (unused by default).
-
unmute(subscriber, **kwargs)[source]¶ Removes an entity to the list of muted subscribers. A muted subscriber will no longer see channel messages, but may use channel commands.
- Parameters
subscriber (Object or Account) – The subscriber to unmute.
**kwargs (dict) – Arbitrary, optional arguments for users overriding the call (unused by default).
-
connect(subscriber, **kwargs)[source]¶ Connect the user to this channel. This checks access.
- Parameters
subscriber (Account or Object) – the entity to subscribe to this channel.
**kwargs (dict) – Arbitrary, optional arguments for users overriding the call (unused by default).
- Returns
success (bool) –
- Whether or not the addition was
successful.
-
disconnect(subscriber, **kwargs)[source]¶ Disconnect entity from this channel.
- Parameters
subscriber (Account of Object) – the entity to disconnect.
**kwargs (dict) – Arbitrary, optional arguments for users overriding the call (unused by default).
- Returns
success (bool) –
- Whether or not the removal was
successful.
-
access(accessing_obj, access_type='listen', default=False, no_superuser_bypass=False, **kwargs)[source]¶ Determines if another object has permission to access.
- Parameters
accessing_obj (Object) – Object trying to access this one.
access_type (str, optional) – Type of access sought.
default (bool, optional) – What to return if no lock of access_type was found
no_superuser_bypass (bool, optional) – Turns off superuser lock bypass. Be careful with this one.
**kwargs (dict) – Arbitrary, optional arguments for users overriding the call (unused by default).
- Returns
return (bool) – Result of lock check.
-
classmethod
create(key, account=None, *args, **kwargs)[source]¶ Creates a basic Channel with default parameters, unless otherwise specified or extended.
Provides a friendlier interface to the utils.create_channel() function.
- Parameters
key (str) – This must be unique.
account (Account) – Account to attribute this object to.
- Keyword Arguments
aliases (list of str) – List of alternative (likely shorter) keynames.
description (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).
ip (str) – IP address of creator (for object auditing).
- Returns
channel (Channel) – A newly created Channel. errors (list): A list of errors in string form, if any.
-
message_transform(msgobj, emit=False, prefix=True, sender_strings=None, external=False, **kwargs)[source]¶ Generates the formatted string sent to listeners on a channel.
- Parameters
msgobj (Msg) – Message object to send.
emit (bool, optional) – In emit mode the message is not associated with a specific sender name.
prefix (bool, optional) – Prefix msg with a text given by self.channel_prefix.
sender_strings (list, optional) – Used by bots etc, one string per external sender.
external (bool, optional) – If this is an external sender or not.
**kwargs (dict) – Arbitrary, optional arguments for users overriding the call (unused by default).
-
distribute_message(msgobj, online=False, **kwargs)[source]¶ Method for grabbing all listeners that a message should be sent to on this channel, and sending them a message.
- Parameters
Notes
This is also where logging happens, if enabled.
-
msg(msgobj, header=None, senders=None, sender_strings=None, keep_log=None, online=False, emit=False, external=False)[source]¶ Send the given message to all accounts connected to channel. Note that no permission-checking is done here; it is assumed to have been done before calling this method. The optional keywords are not used if persistent is False.
- Parameters
msgobj (Msg, TempMsg or str) – If a Msg/TempMsg, the remaining keywords will be ignored (since the Msg/TempMsg object already has all the data). If a string, this will either be sent as-is (if persistent=False) or it will be used together with header and senders keywords to create a Msg instance on the fly.
header (str, optional) – A header for building the message.
senders (Object, Account or list, optional) – Optional if persistent=False, used to build senders for the message.
sender_strings (list, optional) – Name strings of senders. Used for external connections where the sender is not an account or object. When this is defined, external will be assumed.
keep_log (bool or None, optional) – This allows to temporarily change the logging status of this channel message. If None, the Channel’s keep_log Attribute will be used. If True or False, that logging status will be used for this message only (note that for unlogged channels, a True value here will create a new log file only for this message).
online (bool, optional) – online. Otherwise, messages all accounts connected. This can make things faster, but may not trigger listeners on accounts that are offline.
emit (bool, optional) – not to be directly associated with a name.
external (bool, optional) – Treat this message as being agnostic of its sender.
- Returns
success (bool) –
- Returns True if message sending was
successful, False otherwise.
-
tempmsg(message, header=None, senders=None)[source]¶ A wrapper for sending non-persistent messages.
- Parameters
message (str) – Message to send.
header (str, optional) – Header of message to send.
senders (Object or list, optional) – Senders of message to send.
-
channel_prefix(msg=None, emit=False, **kwargs)[source]¶ Hook method. How the channel should prefix itself for users.
- Parameters
msg (str, optional) – Prefix text
emit (bool, optional) – Switches to emit mode, which usually means to not prefix the channel’s info.
**kwargs (dict) – Arbitrary, optional arguments for users overriding the call (unused by default).
- Returns
prefix (str) – The created channel prefix.
-
format_senders(senders=None, **kwargs)[source]¶ Hook method. Function used to format a list of sender names.
- Parameters
senders (list) – Sender object names.
**kwargs (dict) – Arbitrary, optional arguments for users overriding the call (unused by default).
- Returns
formatted_list (str) – The list of names formatted appropriately.
Notes
This function exists separately so that external sources can use it to format source names in the same manner as normal object/account names.
-
pose_transform(msgobj, sender_string, **kwargs)[source]¶ Hook method. Detects if the sender is posing, and modifies the message accordingly.
- Parameters
- Returns
string (str) –
- A message that combines the sender_string
component with msg in different ways depending on if a pose was performed or not (this must be analyzed by the hook).
-
format_external(msgobj, senders, emit=False, **kwargs)[source]¶ Hook method. Used for formatting external messages. This is needed as a separate operation because the senders of external messages may not be in-game objects/accounts, and so cannot have things like custom user preferences.
- Parameters
- Returns
transformed (str) – A formatted string.
-
format_message(msgobj, emit=False, **kwargs)[source]¶ Hook method. Formats a message body for display.
-
pre_join_channel(joiner, **kwargs)[source]¶ Hook method. Runs right before a channel is joined. If this returns a false value, channel joining is aborted.
- Parameters
joiner (object) – The joining object.
**kwargs (dict) – Arbitrary, optional arguments for users overriding the call (unused by default).
- Returns
should_join (bool) – If False, channel joining is aborted.
-
post_join_channel(joiner, **kwargs)[source]¶ Hook method. Runs right after an object or account joins a channel.
- Parameters
joiner (object) – The joining object.
**kwargs (dict) – Arbitrary, optional arguments for users overriding the call (unused by default).
-
pre_leave_channel(leaver, **kwargs)[source]¶ Hook method. Runs right before a user leaves a channel. If this returns a false value, leaving the channel will be aborted.
- Parameters
leaver (object) – The leaving object.
**kwargs (dict) – Arbitrary, optional arguments for users overriding the call (unused by default).
- Returns
should_leave (bool) – If False, channel parting is aborted.
-
post_leave_channel(leaver, **kwargs)[source]¶ Hook method. Runs right after an object or account leaves a channel.
- Parameters
leaver (object) – The leaving object.
**kwargs (dict) – Arbitrary, optional arguments for users overriding the call (unused by default).
-
pre_send_message(msg, **kwargs)[source]¶ Hook method. Runs before a message is sent to the channel and should return the message object, after any transformations. If the message is to be discarded, return a false value.
-
at_init()[source]¶ Hook method. This is always called whenever this channel is initiated – that is, whenever it its typeclass is cached from memory. This happens on-demand first time the channel is used or activated in some way after being created but also after each server restart or reload.
-
web_get_admin_url()[source]¶ Returns the URI path for the Django Admin page for this object.
ex. Account#1 = ‘/admin/accounts/accountdb/1/change/’
- Returns
path (str) – URI path to Django Admin page for object.
-
classmethod
web_get_create_url()[source]¶ Returns the URI path for a View that allows users to create new instances of this object.
ex. Chargen = ‘/characters/create/’
For this to work, the developer must have defined a named view somewhere in urls.py that follows the format ‘modelname-action’, so in this case a named view of ‘channel-create’ would be referenced by this method.
ex. url(r’channels/create/’, ChannelCreateView.as_view(), name=’channel-create’)
If no View has been created and defined in urls.py, returns an HTML anchor.
This method is naive and simply returns a path. Securing access to the actual view and limiting who can create new objects is the developer’s responsibility.
- Returns
path (str) – URI path to object creation page, if defined.
-
web_get_detail_url()[source]¶ Returns the URI path for a View that allows users to view details for this object.
ex. Oscar (Character) = ‘/characters/oscar/1/’
For this to work, the developer must have defined a named view somewhere in urls.py that follows the format ‘modelname-action’, so in this case a named view of ‘channel-detail’ would be referenced by this method.
ex. url(r’channels/(?P<slug>[wd-]+)/$’,
ChannelDetailView.as_view(), name=’channel-detail’)
If no View has been created and defined in urls.py, returns an HTML anchor.
This method is naive and simply returns a path. Securing access to the actual view and limiting who can view this object is the developer’s responsibility.
- Returns
path (str) – URI path to object detail page, if defined.
-
web_get_update_url()[source]¶ Returns the URI path for a View that allows users to update this object.
ex. Oscar (Character) = ‘/characters/oscar/1/change/’
For this to work, the developer must have defined a named view somewhere in urls.py that follows the format ‘modelname-action’, so in this case a named view of ‘channel-update’ would be referenced by this method.
ex. url(r’channels/(?P<slug>[wd-]+)/(?P<pk>[0-9]+)/change/$’,
ChannelUpdateView.as_view(), name=’channel-update’)
If no View has been created and defined in urls.py, returns an HTML anchor.
This method is naive and simply returns a path. Securing access to the actual view and limiting who can modify objects is the developer’s responsibility.
- Returns
path (str) – URI path to object update page, if defined.
-
web_get_delete_url()[source]¶ Returns the URI path for a View that allows users to delete this object.
ex. Oscar (Character) = ‘/characters/oscar/1/delete/’
For this to work, the developer must have defined a named view somewhere in urls.py that follows the format ‘modelname-action’, so in this case a named view of ‘channel-delete’ would be referenced by this method.
ex. url(r’channels/(?P<slug>[wd-]+)/(?P<pk>[0-9]+)/delete/$’,
ChannelDeleteView.as_view(), name=’channel-delete’)
If no View has been created and defined in urls.py, returns an HTML anchor.
This method is naive and simply returns a path. Securing access to the actual view and limiting who can delete this object is the developer’s responsibility.
- Returns
path (str) – URI path to object deletion page, if defined.
-
get_absolute_url()¶ Returns the URI path for a View that allows users to view details for this object.
ex. Oscar (Character) = ‘/characters/oscar/1/’
For this to work, the developer must have defined a named view somewhere in urls.py that follows the format ‘modelname-action’, so in this case a named view of ‘channel-detail’ would be referenced by this method.
ex. url(r’channels/(?P<slug>[wd-]+)/$’,
ChannelDetailView.as_view(), name=’channel-detail’)
If no View has been created and defined in urls.py, returns an HTML anchor.
This method is naive and simply returns a path. Securing access to the actual view and limiting who can view this object is the developer’s responsibility.
- Returns
path (str) – URI path to object detail page, if defined.
-
exception
DoesNotExist¶
-
exception
MultipleObjectsReturned¶ Bases:
evennia.comms.models.ChannelDB.MultipleObjectsReturned
-
path= 'evennia.comms.comms.DefaultChannel'¶
-
typename= 'DefaultChannel'¶
-