promote

Privateunrated

Content

34 lines
{=(comment):This works by making a list of all the role id's associated with every role in a set group that a target can be promoted to, in reverse order (lowest role first, highest role last).
The tag finds their highest role, then gives them the role that comes after that role in the list if the tag user has a role in the promotableroles group at least 2 roles higher than the target. If the user's highest role is not in the list, they will be given the first role in the role list (so persons in the chain of command can use this tag to induct new members as well). Replace the example role ids in (promotableroles): with your own.}

{=(promotableroles): 
912413566290780180 
912412837660475515 
912412793620291614 
912412746954444881 
912412706026422313 
912406706338791424 
912406633324371999 
912406584003538994 
912406275625721877 
912397321818484756 
912397274984882280 
912397213638983771 
912396997837873243}

{=(comment):Don't touch this section}
{=(SRlength):{index({promotableroles(0)}):{promotableroles}}}
{=(URs):{user(roleids)}}
{=(TRs):{target(roleids)}}
{=(nextrole):{if({contains({TRs(0)}):{promotableroles}}==true):{promotableroles({m:trunc({index({TRs(0)}):{promotableroles}}+1)})}|{promotableroles(1)}}}

{=(comment):Don't touch this section}

{=(checks):{if({contains({URs(0)}):{promotableroles}}==false):1|{if({target(id)}=={user(id)}):2|{if({index({TRs(0)}):{promotableroles}}=={SRlength}):3|{if({m:trunc({index({URs(0)}):{promotableroles}}-1)}<={index({TRs(0)}):{promotableroles}}):4|false}}}}}
{if({contains({TRs(0)}):{promotableroles}}==true): -{TRs(0)}}
{=(error):You do not have a role within the list of promotable roles.$You did not mention a user. You cannot promote yourself.${target} already has the highest role in the promotable role list.$You must be at least 2 ranks higher than {target} to promote them.}

{=(comment):If you would like the target to lose their current highest role upon promotion provided that role is in the promotion role list, put at the end of the role custom statement, before the "|error"}
{{if({checks}==false):c:role custom {target(id)} +{nextrole}|error({checks}):$}}
{if({checks}==false): I, {user(mention)} hereby promote {target(mention)} to {<@&{nextrole}>(mention)} for completing the requirements.}
{override}{silence}
Raw JSON
{
  "id": 1208763,
  "created_at": "2021-12-26T16:00:39.000Z",
  "tag_name": "promote",
  "nsfw": false,
  "owner_id": "538405898830348308",
  "uses": 59,
  "description": null,
  "restricted": false,
  "shared": false,
  "deleted": false,
  "safe": "unrated",
  "hidden": false,
  "guild_id": "912379231198126150",
  "sharer": "538405898830348308",
  "content": "{=(comment):This works by making a list of all the role id's associated with every role in a set group that a target can be promoted to, in reverse order (lowest role first, highest role last).\nThe tag finds their highest role, then gives them the role that comes after that role in the list if the tag user has a role in the promotableroles group at least 2 roles higher than the target. If the user's highest role is not in the list, they will be given the first role in the role list (so persons in the chain of command can use this tag to induct new members as well). Replace the example role ids in (promotableroles): with your own.}\n\n{=(promotableroles): \n912413566290780180 \n912412837660475515 \n912412793620291614 \n912412746954444881 \n912412706026422313 \n912406706338791424 \n912406633324371999 \n912406584003538994 \n912406275625721877 \n912397321818484756 \n912397274984882280 \n912397213638983771 \n912396997837873243}\n\n{=(comment):Don't touch this section}\n{=(SRlength):{index({promotableroles(0)}):{promotableroles}}}\n{=(URs):{user(roleids)}}\n{=(TRs):{target(roleids)}}\n{=(nextrole):{if({contains({TRs(0)}):{promotableroles}}==true):{promotableroles({m:trunc({index({TRs(0)}):{promotableroles}}+1)})}|{promotableroles(1)}}}\n\n{=(comment):Don't touch this section}\n\n{=(checks):{if({contains({URs(0)}):{promotableroles}}==false):1|{if({target(id)}=={user(id)}):2|{if({index({TRs(0)}):{promotableroles}}=={SRlength}):3|{if({m:trunc({index({URs(0)}):{promotableroles}}-1)}<={index({TRs(0)}):{promotableroles}}):4|false}}}}}\n{if({contains({TRs(0)}):{promotableroles}}==true): -{TRs(0)}}\n{=(error):You do not have a role within the list of promotable roles.$You did not mention a user. You cannot promote yourself.${target} already has the highest role in the promotable role list.$You must be at least 2 ranks higher than {target} to promote them.}\n\n{=(comment):If you would like the target to lose their current highest role upon promotion provided that role is in the promotion role list, put at the end of the role custom statement, before the \"|error\"}\n{{if({checks}==false):c:role custom {target(id)} +{nextrole}|error({checks}):$}}\n{if({checks}==false): I, {user(mention)} hereby promote {target(mention)} to {<@&{nextrole}>(mention)} for completing the requirements.}\n{override}{silence}",
  "embed": "{}",
  "last_fetched": "2026-10-20T18:12:41.985Z"
}