# Group notice delivery with attachment

This example demonstrates the delivery of a group notice with an attachment using AdminBot for LSL.  
The attachment must be **uploaded to the bot** beforehand.


:::note
Make sure to upload your inventory item to the bot and replace the `UUID` in the script with your own.  
For details, see the `SB_NOTICE_SEND` command documentation.

:::

## What the Script Does

* Sets up the group on `state_entry`
* Handles group setup replies in `link_message`
* Sends the notice (with attachment) on `touch_start`

## Script

```csharp
// 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;

////////////////////////////////////////////////////
// Group Inviter Script example
////////////////////////////////////////////////////

default
{
  state_entry() {
    // Setup group inviter
    // We'll set our group on start up. Do not forget to place your own "Security Code" here
    llMessageLinked(LINK_SET, SB_SETUP_SETGROUP, "Your group name", "SECURITY CODE");

    // AdminBot will issue the link message on success or error - see link_message
  }

  // We will issue the direct group invitation on touch. Do that by sending group invite message.
  touch_start(integer detected) {
    // Deliver notice with attachment.
    // Make sure you change UUID to your own value!
    llMessageLinked(LINK_SET, SB_NOTICE_SEND,
      "Demo notice\n" +
      "This is the body of the notice,\n" +
      "multi-line",
      "ce67e6e0-c20b-fc29-62cb-4921273031a9");
  }

  // This event parses different replies from AdminBot (error messages)  
  link_message(integer sender, integer cmd, string data, key id) {
    // Group command failed
    if(cmd == SB_COMMAND_FAILED)
      llOwnerSay("AdminBot command failed, error code:\n" + data);

    // Group setup failed
    if(cmd == SB_SETUP_FAILED)
      llOwnerSay("AdminBot group setup failed:\n" + data);
  }
}
```