Advertisement
Eutherin

Untitled

Feb 13th, 2022
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.01 KB | None | 0 0
  1.  
  2. #annonymous sender
  3. #pong list
  4. #expiration
  5. #votestats
  6. #how long left on vote
  7. #unvote somehow?
  8.  
  9. rachela_create_vote:
  10. type: task
  11. script:
  12. - definemap options:
  13. 1:
  14. type: string
  15. name: topic
  16. description: Thing to vote for
  17. required: true
  18. 2:
  19. type: string
  20. name: title
  21. description: (Optional) Title of vote
  22. required: false
  23. 3:
  24. type: boolean
  25. name: threaded
  26. description: (Optional) Creates the vote in a new thread
  27. required: false
  28. 4:
  29. type: mentionable
  30. name: ping
  31. description: (Optional) Input users and roles to ping
  32. required: false
  33.  
  34. - ~discordcommand id:rachela create name:vote "description:Creates a topic for upvoting or downvoting" group:626078288556851230 options:<[options]>
  35.  
  36. rachela_vote_handle:
  37. type: world
  38. events:
  39. on discord slash command name:vote:
  40. - ~discordinteraction defer interaction:<context.interaction>
  41.  
  42. - define embed <discord_embed[color=#1abc9c]>
  43. - define user <context.interaction.user>
  44. - define embed <[embed].with[author_name].as[<[user].nickname[<context.interaction.channel.group>].if_null[<[user].name>]>]>
  45. # todo:fallback for if they don't have an avatar?
  46. # - if <[user].avatar_url.exists>:
  47. - define embed <[embed].with[author_icon_url].as[<[user].avatar_url>]>
  48. - define embed <[embed].with[description].as[<context.options.get[topic]>]>
  49. - if <context.options.contains[title]>:
  50. #check if too long
  51. - define embed <[embed].with[title].as[<context.options.get[title]>]>
  52. - if <context.options.contains[threaded]> && <context.options.get[threaded]>:
  53. - ~discordcreatethread id:rachela name:<context.options.get[title].if_null[Vote!]> parent:<context.interaction.channel> save:thread
  54. - define message "Your vote was made here<&co> <&lt>#<entry[thread].created_thread.id><&gt>"
  55. - ~discordinteraction reply interaction:<context.interaction> <[message]> ephemeral:true
  56. - define channel <entry[thread].created_thread>
  57. #- ~discordmessage id:rachela channel:<[channel]> <[embed]> save:message
  58. - else:
  59. - define channel <context.interaction.channel>
  60. #- ~discordmessage id:rachela channel:<[channel]> <[embed]> save:message
  61. - ~discordinteraction delete interaction:<context.interaction> ephemeral:true
  62.  
  63. - if <context.options.contains[ping]>:
  64. - ~discordmessage id:rachela channel:<[channel]> <context.options.get[ping].mention> save:message
  65. - else:
  66. - ~discordmessage id:rachela channel:<[channel]> <[embed]> save:message
  67.  
  68. - definemap buttons:
  69. 1:
  70. id: vote_yes_<entry[message].message.id>
  71. label: 0
  72. style: secondary
  73. emoji: <&lt>:upvote_green:740606478880211065<&gt>
  74. 2:
  75. id: vote_no_<entry[message].message.id>
  76. label: 0
  77. style: secondary
  78. emoji: <&lt>:downvote_red:740606479035400215<&gt>
  79.  
  80. - ~discordmessage id:rachela edit:<entry[message].message> channel:<[channel]> <[embed]> rows:<[buttons]>
  81. - flag server discord.open_votes.<entry[message].message.id>.message:<entry[message].message>
  82. - flag server discord.open_votes.<entry[message].message.id>.author:<[user]>
  83. - flag server discord.open_votes.<entry[message].message.id>.active expire:15m
  84.  
  85.  
  86. discord_vote_buttons:
  87. type: world
  88. check_if_expired:
  89. - define message_id <context.button.map.get[id].after_last[_]>
  90. - if !<server.has_flag[discord.open_votes.<[message_id]>.active]>:
  91. - define embed "<discord_embed[color=<color[100,0,0]>;description=This vote has expired.]>"
  92. - ~discordinteraction reply interaction:<context.interaction> <[embed]> ephemeral:true
  93. - stop
  94. - define player_flag_name discord.votes.<[message_id]>
  95. - define user <context.interaction.user>
  96.  
  97. refresh_votes:
  98. - definemap buttons:
  99. 1:
  100. id: vote_yes_<[message_id]>
  101. label: <server.flag[discord.open_votes.<[message_id]>.upvotes].if_null[0]>
  102. style: secondary
  103. emoji: <&lt>:upvote_green:740606478880211065<&gt>
  104. 2:
  105. id: vote_no_<[message_id]>
  106. label: <server.flag[discord.open_votes.<[message_id]>.downvotes].if_null[0]>
  107. style: secondary
  108. emoji: <&lt>:downvote_red:740606479035400215<&gt>
  109. - define message <server.flag[discord.open_votes.<[message_id]>.message]>
  110. # change the button integers
  111. - ~discordmessage id:rachela edit:<[message]> <[message].embed.first.if_null[<[message].text>]> rows:<[buttons]>
  112. #/vote topic:thing to vote for
  113. events:
  114. on discord button clicked id:vote_yes_*:
  115. - inject discord_vote_buttons.check_if_expired
  116.  
  117. # check if voted
  118. - if <[user].has_flag[<[player_flag_name]>]>:
  119. # check if upvoted
  120. - if <[user].flag[<[player_flag_name]>]> == upvote:
  121. # already upvoted
  122. - define embed "<discord_embed[color=<color[100,0,0]>;description=You've already voted.]>"
  123. - else:
  124. # changed upvote to downvote
  125. - define embed "<discord_embed[color=#1abc9c;description=Your vote was accepted and changed.]>"
  126. - flag server discord.open_votes.<[message_id]>.upvotes:++
  127. - flag server discord.open_votes.<[message_id]>.downvotes:--
  128. - else:
  129. # upvoted
  130. - define embed "<discord_embed[color=#1abc9c;description=Your vote was accepted.]>"
  131. - flag server discord.open_votes.<[message_id]>.upvotes:++
  132.  
  133. - flag <[user]> <[player_flag_name]>:upvote
  134. - ~discordinteraction reply interaction:<context.interaction> <[embed]> ephemeral:true
  135. - inject discord_vote_buttons.refresh_votes
  136.  
  137. on discord button clicked id:vote_no_*:
  138. - inject discord_vote_buttons.check_if_expired
  139.  
  140. # check if voted
  141. - if <[user].has_flag[<[player_flag_name]>]>:
  142. # check if downvoted
  143. - if <[user].flag[<[player_flag_name]>]> == downvote:
  144. # already downvoted
  145. - define embed "<discord_embed[color=<color[100,0,0]>;description=You've already voted.]>"
  146. - else:
  147. # changed downvote to upvote
  148. - define embed "<discord_embed[color=#1abc9c;description=Your vote was accepted and changed.]>"
  149. - flag server discord.open_votes.<[message_id]>.upvotes:--
  150. - flag server discord.open_votes.<[message_id]>.downvotes:++
  151. - else:
  152. # downvoted
  153. - define embed "<discord_embed[color=#1abc9c;description=Your vote was accepted.]>"
  154. - flag server discord.open_votes.<[message_id]>.downvotes:++
  155.  
  156. - flag <[user]> <[player_flag_name]>:downvote
  157. - ~discordinteraction reply interaction:<context.interaction> <[embed]> ephemeral:true
  158. - inject discord_vote_buttons.refresh_votes
  159.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement