makirocker: Did you know /me is in World of Warcraft too?
me: wow...


/me actions

There are many ways to deliver action descriptions in PSYC. The traditional one would be to let the user type /me which is to be encoded in an _action variable. You can combine this variable with any _message method. In this case the message body would be empty.

Messages that show up as:

kuchn testet.
:_target	psyc://
:_source	psyc://localhorst:4711
:_source_identification	psyc://

:_action	testet
:_source	psyc://
:_context	psyc://

:_time_raw	1125241327
:_nick	kuchn
:_action	testet
:_nick_verbatim	kuchn
:_nick_place	PSYC

By the way, the /me command was inspired from Shakespeare... «Methinks the lady doth protest too much.»

Speak actions

Should the message body not be empty, then we have the case of a so-called speakaction (see also profiles), which is a decorative way of describing how you say things. Here's an example:


:_nick   Joe
:_action explains
Life can be so good

This would in traditional PSYC be displayed as

Joe explains: Life can be so good

Then again some people hate speakactions and prefer to just display

<Joe> Life can be so good

So you can't be completely sure the other side will see what you chose. This is in particular popular with IRC users whose clients often do not display actions in a pleasant way.

Currently speakactions are limited to the same choice of characters as nicknames so you cannot do internationalized/localized speakactions for now.

Presence actions

We used to also support _action in presence packets (for funny webchat reasons they used to call it the redline), but had to realize that half of the users didn't get it, so now we have _description_presence instead, which is also more compatible to other presence protocols.

... then again Facebook and Twitter essentially provide a /me as the interface to their microblogging functionality, and run into the same problem of users not getting it.

Prefabricated actions

PSYC also provides a series of standard actions which can be triggered by a graphical user interface and may be displayed on the receiving side in form of graphic animations rather than plain text. They are also displayed in the person's native tongue, so you can do basic communications even if you have no language in common. For simplicity, here is the list of actions. You can look-up the textdb for their plain text equivalents.

agree apologize applaud beck beckon beg bite blush blush_amorous blush_erotic blush_shame bounce bow cackle caress cheer chuckle comfort confuse confuse_doubt cough cuddle curtsy dance dance_disco dance_feet dance_head detect_doubt disagree disgust drool embrace envious find_bad find_good fondle frown frown_angry frown_cry frown_mad frown_tired gasp get_drink get_food giggle gnash grin groan growl hiccup hug jealous kiss kiss_hand laugh laugh_floor laugh_out laugh_tears listen love moan mourn neutral_blind neutral_mean nod obscene ponder pout purr rant revoke rule scratch_head scream shake_hand shake_head shiver shriek shrug shudder sigh sing sleep smack_head smile smile_cry smile_cute smile_mean smile_mean_cute smile_smart smile_stoned smile_tired smile_wink_smart smirk sneeze sniff snore snuffle snuggle sprawl stay_cool stretch stroke strut suck surprise swear thank tickle tongue tremble troll twinkle wait weep wink wish_luck worship yawn yell

You can issue them by sending a _request_do_action_whatever as a client or by typing /stay_cool as a user (not sure if the interface will stay this way). Your client will receive this as _notice_action_stay_cool or whatever.

The dot at the end

_action does not contain periods or colons, as it may be used in a terminating sentence, or as a speakaction with text following. Yet it is PSYC tradition to terminate an action in the output. It is however on the TODO list to suppress the closing period if the user did type special characters at the end of a /me command. psyced doesn't do it yet, but your client could go ahead and do it right.

See also

The presence document lists the MUD feelings where actions historically originated from.

Actions are not commands.

Embedded actions

Okay, it is unavoidable. Too many chat systems love to have smileys embedded in chat text. At least let's be the first that

  • does not make wild guessing at character sequences a part of the protocol
If you want to detect a user's :-) do it in your client and replace it with a {_smile}, but never interpret an incoming text string. If a user sent you a :-) he intended to send you a :-).
  • does not introduce unreadable codes like MSN's (K) or Skype's (o)
  • does not have a syntax stupid enough to mess with other useful text
like gaim which used to put a smiley into mailto:something or xmpp:something URLs because of the :s
  • has a syntax which is actually extensible by the magic means of inheritance: If your client doesn't know {_smile_obnoxious} yet, it can simply show a {_smile}!

So my suggestion would be to embed {_action} into text, where _action is one of the prefabricated actions listed above. The { } is already the textdb syntax for text inclusions. Using the normal psyctext syntax [_action] may or may not work so fabulously, since psyctext is supposed to fill its fields with packet variables, and we don't want to send a text representation along. Other possibility would be to have something like *_sigh* which is very close to the traditional way to embed something like this (but not close enough).

Behaviour: It is okay to leave the thing untreated, as it is essentially readable and writable. You can also map a graphic icon to it, output an entire prefab action message or play an action animation. See how far your users' patience takes you. {_grin}

We should probably provide a content type for this encoding, like text/x-psyc.

Note: This syntax does not really take into account embedded objects, like the image of a birthday cake. This is still left to be solved. Maybe embedding images into text is enough, anyway? So every sender can embed his choice of objects into text without depending on the software running on the other side.

Here are some ircII scripts to produce embedded actions: and

Is mIRC scripting still compatible to ircII's? Maybe.