<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE muclient [
  <!ENTITY prefix "#" > 
]>

<!-- Plugin "Chat" adapted by Nick from the VBscript version -->

<!-- Change the "prefix" entity above to change the chat alias prefix.
     The default is "#", so you would enter "#chat Nick Hi", but you 
     could make it "-" for instance. -->

<muclient>
<plugin
   name="Chat"
   author="Nick Gammon"
   id="03ca99c4e98d2a3e6d655c7d"
   language="Lua"
   purpose="Support for chat feature"
   date_written="2005-12-18 07:32:00"
   date_modified="2005-12-21 13:26:00"
   requires="3.72"
   version="1.0"
   >
<!--
Version 1 - initial release.
-->

<description trim="y">
Provides an interface to the chat functions.

Commands
========

chat:help     &lt;-- show this help screen

For commands affecting a chat connection you can either use their name
(eg. Nick) or their connection number (eg. 5). Both appear when you type
&quot;&prefix;chats&quot;.

General
-------

&prefix;chats        &lt;-- get connected chat list (note chat ID on left)
&prefix;chatdetails [who]  &lt;-- shows full details for one or all connections
&prefix;info         &lt;-- shows chat status and chat list

Accept calls
------------

&prefix;accept       &lt;-- accept connections on current port
&prefix;accept port  &lt;-- accept connections on 'port' eg. &prefix;accept 4052
&prefix;nocalls      &lt;-- stop accepting incoming calls

Calling someone
---------------

&prefix;call ip port &lt;-- attempts to call user on at IP address and port
&prefix;call ip      &lt;-- attempts to call user on at IP address, port 4050
&prefix;hangup who   &lt;-- hangs up a call
&prefix;hangupall    &lt;-- hangs up all calls


Chatting
--------

&prefix;chat who xxx  &lt;-- sends message to person, eg. &prefix;chat Nick Hi there
&prefix;chatall xxxx  &lt;-- sends message to all connections
&prefix;cg group xxxx &lt;-- sends message to everyone in group 'group'
&prefix;emote who xx  &lt;-- emotes to one person, eg. &prefix;emote Nick laughs
&prefix;emoteall xxx  &lt;-- emotes to all, eg. &prefix;emoteall sighs
&prefix;eg group xxxx &lt;-- emotes to everyone in group 'group'

Other
-----

&prefix;command who xxx    &lt;-- send command "xxx" to that person
&prefix;group who xxx      &lt;-- places this person into group &quot;xxx&quot;
&prefix;name newname       &lt;-- change your chat name, eg. &prefix;name Nick
&prefix;peek  who          &lt;-- peek this person's connections
&prefix;paste who          &lt;-- paste clipboard to this connection
&prefix;pasteall           &lt;-- paste clipboard to everybody
&prefix;ping  who          &lt;-- ping this connection
&prefix;request who        &lt;-- try to connect to this person's connections
&prefix;sendfile who       &lt;-- send a file to this connection
&prefix;stopfile who       &lt;-- stop sending a file to this connection
&prefix;snoop who          &lt;-- start/stop snooping this connection

Flags
-----

&prefix;allowcommands   who      &lt;-- allow them to send me commands
&prefix;allowfiles      who      &lt;-- allow them to send me files
&prefix;allowsnoop      who      &lt;-- allow them to snoop me
&prefix;ignore          who      &lt;-- ignore them
&prefix;private         who      &lt;-- mark connection private
&prefix;served          who      &lt;-- mark them as incoming

&prefix;noallowcommands who      &lt;-- turn off above options
&prefix;noallowfiles    who    
&prefix;noallowsnoop    who    
&prefix;noignore        who     
&prefix;noprivate       who     
&prefix;noserved        who      

</description>

</plugin>


<!--  Aliases  -->

<aliases>
  <alias
   match="&prefix;snoop *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>ChatMessage (ChatGetID (&quot;%1&quot;), 30, &quot;&quot;)</send>
  </alias>

  <alias
   match="&prefix;command * *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>ChatMessage (ChatGetID (&quot;%1&quot;), 105, &quot;%2&quot;)</send>
  </alias>

  <alias
   match="&prefix;allowsnoop *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>if SetChatOption (ChatGetID (&quot;%1&quot;), &quot;can_snoop&quot;, 1) == 0 then
  Note &quot;Snooping for %1 enabled&quot;
end -- if</send>
  </alias>

  <alias
   match="&prefix;group * *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>if SetChatOption (ChatGetID (&quot;%1&quot;), &quot;group&quot;, "%2") == 0 then
  Note &quot;%1 is now in group '%2'&quot;
end -- if</send>
  </alias>

  <alias
   match="&prefix;noallowsnoop *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
   >
  <send>if SetChatOption (ChatGetID (&quot;%1&quot;), &quot;can_snoop&quot;, 0) == 0 then
  Note &quot;Snooping for %1 disabled&quot;
end -- if</send>
  </alias>

  <alias
   match="&prefix;allowfiles *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>if SetChatOption (ChatGetID (&quot;%1&quot;), &quot;can_send_files&quot;, 1) == 0 then
  Note &quot;File sending for %1 enabled&quot;
end -- if</send>
  </alias>
  <alias
   match="&prefix;noallowfiles *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>if SetChatOption (ChatGetID (&quot;%1&quot;), &quot;can_send_files&quot;, 0) == 0 then
  Note &quot;File sending for %1 disabled&quot;
end -- if</send>
  </alias> 

  <alias
   match="&prefix;allowcommands *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>if SetChatOption (ChatGetID (&quot;%1&quot;), &quot;can_send_commands&quot;, 1) == 0 then
  Note &quot;Command sending for %1 enabled&quot;
end -- if</send>
  </alias>

  <alias
   match="&prefix;noallowcommands *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>if SetChatOption (ChatGetID (&quot;%1&quot;), &quot;can_send_commands&quot;, 0) == 0 then
  Note &quot;Command sending for %1 disabled&quot;
end -- if</send>
  </alias> 

  <alias
   match="&prefix;ignore *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>if SetChatOption (ChatGetID (&quot;%1&quot;), &quot;ignore&quot;, 1) == 0 then
  Note &quot;Now ignoring %1&quot;
end -- if</send>
  </alias>

  <alias
   match="&prefix;noignore *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>if SetChatOption (ChatGetID (&quot;%1&quot;), &quot;ignore&quot;, 0) == 0 then
  Note &quot;Not ignoring %1&quot;
end -- if</send>
  </alias> 

  <alias
   match="&prefix;private *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>if SetChatOption (ChatGetID (&quot;%1&quot;), &quot;private&quot;, 1) == 0 then
  Note &quot;%1 is now marked private&quot;
end -- if</send>
  </alias>

  <alias
   match="&prefix;noprivate *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>if SetChatOption (ChatGetID (&quot;%1&quot;), &quot;private&quot;, 0) == 0 then
  Note &quot;%1 is now NOT private&quot;
end -- if</send>
  </alias> 

 <alias
   match="&prefix;served *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>if SetChatOption (ChatGetID (&quot;%1&quot;), &quot;served&quot;, 1) == 0 then
  Note &quot;%1 is now marked as served (incoming)&quot;
end -- if</send>
  </alias>

  <alias
   match="&prefix;noserved *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>if SetChatOption (ChatGetID (&quot;%1&quot;), &quot;served&quot;, 0) == 0 then
  Note &quot;%1 is now NOT marked as served (ie. now outgoing)&quot;
end -- if</send>
  </alias> 

 <alias
   match="&prefix;paste *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>ChatPasteText (ChatGetID (&quot;%1&quot;))</send>
  </alias>

 <alias
   match="&prefix;pasteall"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>ChatPasteEverybody ()</send>
  </alias>

  <alias
   match="&prefix;ping *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>ChatPing (ChatGetID (&quot;%1&quot;))</send>
  </alias>

  <alias
   match="&prefix;sendfile *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>ChatSendFile (ChatGetID (&quot;%1&quot;), "")</send>
  </alias>

 <alias
   match="&prefix;stopfile *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>ChatStopFileTransfer (ChatGetID (&quot;%1&quot;))</send>
  </alias>

  <alias
   match="&prefix;peek *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>ChatPeekConnections (ChatGetID (&quot;%1&quot;))</send>
  </alias>
  <alias
   match="&prefix;request *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>ChatRequestConnections (ChatGetID (&quot;%1&quot;))</send>
  </alias>
  <alias
   match="&prefix;accept *"
   enabled="y"
   send_to="12"
   sequence="90"
   echo_alias="y"
  >
  <send>ChatAcceptCalls (%1)</send>
  </alias>
  <alias
   match="&prefix;accept"
   enabled="y"
   send_to="12"
   sequence="90"
   echo_alias="y"
  >
  <send>ChatAcceptCalls (0)</send>
  </alias>
  <alias
   match="&prefix;name *"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>ChatNameChange &quot;%1&quot;</send>
  </alias>
  <alias
   match="&prefix;nocalls"
   enabled="y"
   send_to="12"
   sequence="90"
   echo_alias="y"
  >
  <send>ChatStopAcceptingCalls ()</send>
  </alias>

  <alias
   match="&prefix;chat * *"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>ChatPersonal (&quot;%1&quot;, &quot;%2&quot;, 0)</send>
  </alias>

  <alias
   match="&prefix;cg * *"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>ChatGroup (&quot;%1&quot;, &quot;%2&quot;, 0)</send>
  </alias>

  <alias
   match="&prefix;eg * *"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>ChatGroup (&quot;%1&quot;, &quot;%2&quot;, 1)</send>
  </alias>

  <alias
   match="&prefix;chatall *"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>ChatEverybody (&quot;%1&quot;, 0)</send>
  </alias>
  <alias
   match="&prefix;chats"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>ChatList ()</send>
  </alias>
  <alias
   match="&prefix;emoteall *"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>ChatEverybody (&quot;%1&quot;, 1)</send>
  </alias>
  <alias
   match="&prefix;hangup *"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>ChatDisconnect (ChatGetID (&quot;%1&quot;))</send>
  </alias>
  <alias
   match="&prefix;hangupall"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>ChatDisconnectAll ()</send>
  </alias>
  <alias
   match="&prefix;info"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>ChatInfo ()</send>
  </alias>
  <alias
   match="&prefix;emote * *"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>ChatPersonal (&quot;%1&quot;, &quot;%2&quot;, 1)</send>
  </alias>
  <alias
   match="&prefix;call *"
   enabled="y"
   send_to="12"
   sequence="100"
  >
  <send>ChatCall (&quot;%1&quot;, 0)</send>
  </alias>
  <alias
   match="&prefix;call * *"
   enabled="y"
   send_to="12"
   sequence="90"
   echo_alias="y"
  >
  <send>ChatCall (&quot;%1&quot;, %2)</send>
  </alias>
  <alias
   match="&prefix;chatdetails *"
   enabled="y"
   send_to="12"
   sequence="90"
   echo_alias="y"
  >
  <send>ChatDetails (ChatGetID (&quot;%1&quot;))</send>
  </alias>
  <alias
   match="&prefix;chatdetails"
   enabled="y"
   send_to="12"
   sequence="100"
   echo_alias="y"
  >
  <send>ShowChats ()</send>
  </alias>
</aliases>

<!--  Script  -->


<script>
<![CDATA[

function YesNo (what)

  if what then
    return "Yes"
  else
    return "No"
  end -- if

end -- function

function ConvertDate (what)

  if what and what > 0 then
    return os.date ("%x %X", what)
  end -- if

  return "(no date)"

end -- function

function ChatDetails (id)
local sType

--
-- no id - give up
--

  if id == 0 then  
    return         
  end -- if no id

  if GetChatInfo (id, 10) == 0 then
    sType = "MudMaster"
  else
    sType = "zChat"
  end -- if
 
  Note ("----------------------------------------")
  Note ("Server         : " .. GetChatInfo (id, 1))
  Note ("User           : " .. GetChatInfo (id, 2))
  Note ("Group          : " .. GetChatInfo (id, 3))
  Note ("Version        : " .. GetChatInfo (id, 4))
  Note ("Call IP        : " .. GetChatInfo (id, 5))
  Note ("Address        : " .. GetChatInfo (id, 6))
  Note ("Port           : " .. GetChatInfo (id, 7))
  Note ("Call port      : " .. GetChatInfo (id, 8))
  Note ("Status         : " .. GetChatInfo (id, 9))
  Note ("Type           : " .. sType)
  Note ("ID             : " .. GetChatInfo (id, 11) )
  Note ("Incoming       : " .. YesNo (GetChatInfo (id, 12)))
  Note ("Can snoop      : " .. YesNo (GetChatInfo (id, 13)) )
  Note ("Snooping       : " .. YesNo (GetChatInfo (id, 14)) )
  Note ("They snoop     : " .. YesNo (GetChatInfo (id, 15)) )
  Note ("Send commands  : " .. YesNo (GetChatInfo (id, 16)) )
  Note ("Private        : " .. YesNo (GetChatInfo (id, 17)) )
  Note ("Can send files : " .. YesNo (GetChatInfo (id, 18)) )
  Note ("Ignore them    : " .. YesNo (GetChatInfo (id, 19)) )
  Note ("Recent ping    : " .. ConvertDate (GetChatInfo (id, 20) ))
  Note ("Started at     : " .. ConvertDate (GetChatInfo (id, 21) ))
  Note ("Last in        : " .. ConvertDate (GetChatInfo (id, 22) ))
  Note ("Last out       : " .. ConvertDate (GetChatInfo (id, 23) ))
  Note ("Started file   : " .. ConvertDate (GetChatInfo (id, 24) ))
  Note ("Xfer file      : " .. YesNo (GetChatInfo (id, 25)) )
  Note ("Xfer is send   : " .. YesNo (GetChatInfo (id, 26)) )
  Note ("File name      : " .. GetChatInfo (id, 27) )
  Note ("Full file path : " .. GetChatInfo (id, 28) )
  Note ("File size bytes: " .. GetChatInfo (id, 29) )
  Note ("File blocks    : " .. GetChatInfo (id, 30) )
  Note ("Blocks xferred : " .. GetChatInfo (id, 31))
  Note ("Block size     : " .. GetChatInfo (id, 32))
  Note ("Count of incoming:" .. 
       " Personal : " .. GetChatInfo (id, 33) .. 
       ", All : " .. GetChatInfo (id, 34) .. 
       ", Group : " .. GetChatInfo (id, 35) .. 
       ", Messages : " .. GetChatInfo (id, 39) )

  Note ("Count of outgoing:" .. 
       " Personal : " .. GetChatInfo (id, 36) .. 
       ", All : " .. GetChatInfo (id, 37) .. 
       ", Group : " .. GetChatInfo (id, 38))
  Note ""

end -- function 

function ShowChats ()

local mylist

mylist = GetChatList ()

if mylist then

  Note ""
  ColourNote ("white", "blue", "---- Chat List ----")
  Note ""
 
  for _, id in pairs (mylist) do 
    ChatDetails (id)
  end -- for

else
  ColourNote ("white", "red", "No chat sessions")
end -- if

end -- function ShowChats

function ChatList ()

local mylist, flags, id

mylist = GetChatList ()

local function addflag (id, which, str)

  if GetChatInfo (id, which) then
    if flags ~= "" then 
      flags = flags .. ", "
    end -- if
    flags = flags .. str
  end -- if

end -- function addflag

if mylist then

  Note ""
  ColourNote ("white", "blue", "---- Chats ----")
  Note ""
 
  for _, id in ipairs (mylist) do 

    flags = ""

    -- look for flags
    addflag (id, 17, "private")
    addflag (id, 12, "served")
    addflag (id, 13, "can snoop")
    addflag (id, 14, "snooping")
    addflag (id, 16, "can send commands")
    addflag (id, 18, "can send files")
    addflag (id, 19, "ignore")

    if flags ~= "" then
       flags = " (" .. flags .. ")"
    end -- if

	Note (id .. ": " .. 
               GetChatInfo (id, 2) .. " (" .. 
               GetChatInfo (id, 5) .. ", " .. 
               GetChatInfo (id, 8) .. ")" .. 
               flags )

  end -- for

else
  ColourNote ("white", "red", "No chat sessions")

end -- if

Note ""

end -- function ChatList

function ChatInfo ()

  Note ""
  ColourNote ("white", "blue", "---- Chat Configuration ----")
  Note ""

  Note ("Accepting incoming connections: " .. 
       YesNo (GetOption ("accept_chat_connections")))
  Note ("Incoming connections port: " .. 
       	GetOption ("chat_port"))
  Note ("Our chat name: " .. 
       GetAlphaOption ("chat_name"))

  ChatList ()

end -- function ChatInfo

--
--  Chat callbacks
--  --------------
--

-- OnPluginChatAccept 
-- ------------------
--
--  MUSHclient has received a connection from IP,name
--  Return TRUE to accept it, FALSE to reject it
--
function OnPluginChatAccept (sText)
local theList
local username, ip, domain

  theList = utils.split (sText, ",")
  ip = theList [1]
  username = theList [2]

--
--  Example of looking up their domain name:
--

--  domain = GetHostName (ip)


--
--  Example user notifications:
--
--  Note "** Received chat call from " .. username .. " at address " .. ip
--
--  Note "** Received chat call from " .. username .. " at domain " .. domain


--
--  Example of rejecting someone (uncomment and change address):
--
--  if ip == "111.222.10.3" then 
--   return false
--  end -- if
--

  return true  -- accept it

end -- function
 
-- OnPluginChatMessage
-- ------------------
--
--  MUSHclient has received chat message: id, type, text
--  Return TRUE to use the default processing, FALSE to ignore it
--
--
--  The "id" argument supplies the chat id of the connection which sent the
--  message.
--
--  The message code indicating the chat message, where these are likely
--         to be received:
--

--   1    Name_change				  
--   2    Request_connections 
--   3    Connection_list	 		
--   4    Text_everybody			
--   5    Text_personal			  
--   6    Text_group				  
--   7    Message					    
--   8    Do_not_disturb			
--   9    Send_action				  
--  10    Send_alias				  
--  11    Send_macro				  
--  12    Send_variable				
--  13    Send_event			    
--  14    Send_gag				    
--  15    Send_highlight			
--  16    Send_list				    
--  17    Send_array				  
--  18    Send_baritem			  
--  19    Version					    
--  20    File_start				  
--  21    File_deny				    
--  22    File_block_request	
--  23    File_block			    
--  24    File_end				    
--  25    File_cancel				  
--  26    Ping_request				
--  27    Ping_response				
--  28    Peek_connections		
--  29    Peek_list			    	
--  30    Snoop					      
--  31    Snoop_data		
-- 105    Send_command		  

function OnPluginChatMessage (id, message, sText)

--
--  Example of rejecting a message:
--
--  if message == 26 then 
--     return false -- ignore pings
--  end -- if
--

  return true  -- process it

end -- function


-- OnPluginChatDisplay
-- ------------------
--
--  MUSHclient is about to display message: type, text
--  Return TRUE to use the default display, FALSE to not display
--
--  Note - the message type number, which groups types
--         of messages, as follows:
--

--   0 Connection attempt    
--   1 Session start, end          
--   2 Name Change        
--   3 Message           
--   4 Incoming Personal  
--   5 Incoming Everybody 
--   6 Incoming Group     
--   7 Outgoing Personal  
--   8 Outgoing Everybody 
--   9 Outgoing Group     
--  10 Peek List          
--  11 Connection List    
--  12 Ping              
--  13 Information       
--  14 File              
--  15 Snoop Data         
--  16 Command

function OnPluginChatDisplay (message, sText)

--
--  Example of rejecting a message:
--
--  if message == 10 then 
--    return false -- ignore peek lists
--  end -- if
--

--
--  Example of timestamping messages
--
--  If an incoming message type is not 1000 we prepend the date and re-display it
--  If it is 1000 (our user-assigned type) we simply let MUSHclient display it.
--

--  if message ~= 1000 then
--    ChatNote (1000,  os.date ("%X %x") .. ": " .. sText)
--    return false
--  end -- if  

--
--  Example of doing something different with it.
--
--  We will take normal incoming and outgoing chats and emotes, and
--  display them in a notepad window, and omit them from the main window
--

--   if message >= 4 and message <= 9 then
--     AppendToNotepad ("Chats", 
--                      os.date ("%X %x") .. ": " ..  -- optional date/timestamp
--                      Replace (StripANSI (sText), "\n", "\r\n"), "\r\n")
--     return false
--   end -- if 
  
-- If you want to timestamp AND display in the notepad, simply put the date at
-- the start of the AppendToNotepad line by uncommenting the line above with os.date in it.


  return true -- display it

end -- function


-- OnPluginChatNewUser
-- -------------------
--
-- A new plugin user has been accepted on: id, name
--
--
-- This script callback has been provided so you can take action if
-- you want (such as allowing file transfers).
--

function OnPluginChatNewUser (id, name)

--
--  Example of notifying yourself of a new chat user.
--
-- Note ("New chat user: " .. name)
--

--
-- Example of taking special action
--
--  If Bruce connects let him send files, and mark as private
--

--  if string.lower (name) == "bruce" then
--     SetChatOption (id, "can_send_files", 1)
--     SetChatOption (id, "private", 1)
--  end -- if

end -- function 


-- OnPluginChatUserDisconnect
-- --------------------------
--
-- This chat user has disconnected for one reason or another.
--
-- This callback lets you take action (eg. notify others) however
-- you cannot send messages to this connection or change any options
-- once they have disconnected. The chat id is supplied so you can 
-- match the id to the one that connected.
--
-- For each call to OnPluginChatNewUser there should eventually be a
-- corresponding call to OnPluginChatUserDisconnect.
--
function OnPluginChatUserDisconnect (id, name)

--  Example of notifying yourself someone has left ...
--
--  Note ("Chat user: " .. name .. " has left the chat system.")
--

end -- function 


-- use local date format

os.setlocale ("", "time")

]]>
</script>


<!--  Plugin help  -->

<aliases>
  <alias
   script="OnHelp"
   match="Chat:help"
   enabled="y"
   ignore_case = "y"
  >
  </alias>
</aliases>

<script>
<![CDATA[
function OnHelp (sName, sLine, wildcards)
  Note (GetPluginInfo (GetPluginID, 3))
end -- function 
]]>
</script> 

</muclient>

