Paste #131009: Discord connection

Date: 2025/02/18 17:32:00 UTC-08:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


Character_RPC_AppSend:
    type: task
    script:
    - if !<player.has_flag[character.rpc.name]>:
      - define fail:->:name
    - if !<player.has_flag[character.rpc.description]>:
      - define fail:->:description
    - if !<player.has_flag[character.rpc.lore]>:
      - define fail:->:lore
    - if !<player.has_flag[character.rpc.age]>:
      - define fail:->:age
    - if !<player.has_flag[character.rpc.height]>:
      - define fail:->:height
    - if !<player.has_flag[character.rpc.profession]>:
      - define fail:->:profession
    - if <[fail]||null> != null:
      - narrate "<red>You are missing these features<&co><&sp><gold><[fail].comma_separated.to_titlecase>"
      - stop
    - definemap app_data:
        player_name: <player.name>
        name: <player.flag[character.rpc.name]>
        description: <player.flag[character.rpc.description]>
        lore: <player.flag[character.rpc.lore]>
        age: <player.flag[character.rpc.age]>
        height: <player.flag[character.rpc.height]>
        profession: <player.flag[character.rpc.profession]>

    - narrate "<green>Processing Application..."

    - define formatted "Character Name<&co><&sp><[app_data].get[name]><n>
      Basic Description<&co><&sp><[app_data].get[description]><n>
      Character Lore<&co><&sp><[app_data].get[lore].get[1].strip_color>...<n>
      Character Age<&co><&sp><[app_data].get[age]><n>
      Character Height<&co><&sp><[app_data].get[height]><n>
      Character Profession<&co><&sp><[app_data].get[profession]>"

    - definemap options:
        1:
            label: Accepted
            value: accept
            description: Applicant has been accepted.
            emoji: 🙂
        2:
            label: Needs Info
            value: info_needed
            description: Applicant needs to add more information.
            emoji: 😃
        3:
            label: Denied
            value: deny
            description: Applicant has been denied. They need to ask staff for more information.
            emoji: 🤩

    - define menu <discord_selection.with[id].as[application_menu].with[options].as[<[options]>]>

    - define embed <discord_embed.with_map[title=<[app_data].get[player_name]><&sq>s<&sp>Application;description=<[formatted]>;timestamp=<util.time_now>;color=#00FFFF]>
    - discordmessage id:mybot channel:1341502905554964550 <[embed]> rows:<[menu]> save:application_message
    #- run Character_RPC_Discord_Menu def:<entry[application_message].message>
    - wait 15s
    - narrate "<green>Application Sent!"

Character_RPC_Discord_Menu_Events:
    type: world
    events:
        on discord selection used id:application_menu:
        - ~discordinteraction defer interaction:<context.interaction>

        - define player_name <context.message.embed.get[1].map.get[title].before[context.message.embed.get[1].map.get[title].before[']>

        - choose <context.option.get[value]>:
            - case accept:
                - define message "Application was Accepted!"
                - flag <server.match_player[<[player_name]>].if_null[<server.match_offline_player[<[player_name]>]>]> character.rpc.status:accepted
                - if <server.match_player[<[player_name]>]||null> != null:
                  - narrate targets:<server.match_player[<[player_name]>]||null> "<green>Your application has been accepted!"
            - case info_needed:
                - define message "Application needs more information."
                - flag <server.match_player[<[player_name]>].if_null[<server.match_offline_player[<[player_name]>]>]> character.rpc.status:info_needed
                - if <server.match_player[<[player_name]>]||null> != null:
                  - narrate targets:<server.match_player[<[player_name]>]||null> "<yellow>Your application needs more information, please ask staff for more information."
            - case deny:
                - define message "Application was Denied."
                - flag <server.match_player[<[player_name]>].if_null[<server.match_offline_player[<[player_name]>]>]> character.rpc.status:denied
                - if <server.match_player[<[player_name]>]||null> != null:
                  - narrate targets:<server.match_player[<[player_name]>]||null> "<red>Your application has been denied, please ask staff for more information."

        - ~discordinteraction reply interaction:<context.interaction> "<[player_name]>'s <[message]> ; Reviewed by<&co><context.user>"