Group chat listener

This example demonstrates how to reply to each IM that appears on group chat using AdminBot for LSL.

Script

// SmartBots AdminBot for Groups, https://www.mysmartbots.com
// Documentation and help: https://www.mysmartbots.com/dev/docs/AdminBot_for_LSL

string SB_VERSION = "2.0";

// Setup and startup

integer SB_SETUP_SETGROUP        = 180101;
integer SB_SETUP_SETGROUPUUID   = 180102;
integer SB_SETUP_DEBUG          = 180103;
integer SB_STATUS_QUERY         = 180104;
integer SB_SETUP_DEVICENAME     = 180111;
integer SB_SETUP_BOTNAME        = 180112;
integer SB_SETUP_SETOPTIONS     = 180113;

// Group members control

integer SB_INVITE_SEND          = 180105;
integer SB_GROUP_EJECT          = 180107;
integer SB_AVATAR_GROUP         = 180114;
integer SB_ADJUST_GROUP_ROLE    = 180120;
integer SB_GET_GROUP_ROLES      = 180121;

// Group chat

integer SB_CHAT_SAY             = 180106;
integer SB_CHAT_LISTEN          = 180108;
integer SB_CHAT_MUTE            = 180115;

// Notices

integer SB_NOTICE_SEND          = 180109;

// Misc. commands

integer SB_RESET_ADMINBOT       = 9996660;
integer SB_SETUP_SETLINK        = 180110;

// EVENTS

integer SB_COMMAND_FAILED       = 180201;
integer SB_STATUS_REPLY         = 180202;
integer SB_CHAT_MESSAGE         = 180203;
integer SB_SETUP_SUCCESS        = 180204;
integer SB_SETUP_FAILED         = 180205;
integer SB_CHAT_SUCCESS         = 180206;
integer SB_GROUP_CHECKED        = 180207;

default
{
  state_entry() {
    llMessageLinked(LINK_SET, SB_SETUP_SETGROUP, "Your group name", "SECURITY CODE");
  }

  // This event parses different replies from AdminBot    
  link_message(integer sender, integer cmd, string data, key id) {

    // Group command failed
    if(cmd == SB_COMMAND_FAILED) {
      list parts = llParseString2List(data, ["\n"], []);
      string status = llList2String(parts, 0);
      string expires = llList2String(parts, 1);

      llOwnerSay("AdminBot command failed, error code: " + status);
    }

    // Group setup failed
    if(cmd == SB_SETUP_FAILED) {
      list parts = llParseString2List(data, ["\n"], []);
      string status = llList2String(parts, 0);
      string expires = llList2String(parts, 1);

      llOwnerSay("AdminBot group setup failed:\n" +
                 "status: " + status + "\n" +
                 "expired: " + expires);
    }

    // Group setup successful
    if(cmd == SB_SETUP_SUCCESS) {
      llOwnerSay("AdminBot group successfully set, asking to listen to group chat");

      // Start listening to group chat
      llMessageLinked(LINK_SET, SB_CHAT_LISTEN, "1", NULL_KEY);

      // Say something in group chat
      llMessageLinked(LINK_SET, SB_CHAT_SAY, "I'm listening on group chat, please talk to me!", NULL_KEY);
    }

    // Group chat message received
    if(cmd == SB_CHAT_MESSAGE) {
      llOwnerSay("We've got the group chat message: " + data);
      llMessageLinked(LINK_SET, SB_CHAT_SAY, "Magic box replies to you, master!", NULL_KEY);
    }
  }
}