Advertisement
BDFD_Berk

[2/2] "$onInteraction" command | Poll system for Bot Designer For Discord!

Feb 15th, 2023
547
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $nomention
  2.  
  3. $c[ Join https://dsc.gg/codes | The place where you can share and get codes, ask for codes and get support from other BDFD Developers, we also have a Bot Labs server where you can add your bot, join us! :) ]
  4.  
  5. $c[ Below you can set the default limit of options a person can add in their polls, it must be atleast 2 and maximum 9, default is 9 ]
  6. $var[poll_options_limit;9]
  7.  
  8. $if[$checkContains[$customID || $message;poll_vote;poll_send-$authorID;poll_mng]==true]
  9.  
  10. $c[ Below you can change the formatting of the poll embed, using several placeholders available. ]
  11. $var[poll_format;```{poll_description}```
  12. > :bar_chart: There are **{options_amount}** options available in this poll.
  13. {options_list}]
  14.  
  15. $c[ Below you can change the formatting of the options list, using {option-name} and {option-votes} placeholders, this formatting will only apply if the poll has a minimum of 1 vote, if it has no votes yet it will show a raw list instead till someone votes. ]
  16. $var[list_format;``• {option-name} - {option-votes} votes``]
  17.  
  18. $c[ Below you can pick the embed color, must be a valid color hexcode value. ]
  19. $var[poll_color;#5865f2]
  20.  
  21. $endif
  22.  
  23.  
  24.  
  25. $if[$checkContains[$customID;poll_settings-$authorID]==true]
  26.  
  27. $textSplit[$customID;-]
  28. $if[$serverChannelExists[$splitText[3]]==true]
  29. $var[def_channel;$splitText[3]]
  30. $endif
  31.  
  32. $newModal[poll_modal;Poll settings]
  33. $addTextInput[title;short;Poll Title;3;40;no;;Title will be shown in the poll embed title.]
  34. $addTextInput[description;short;Poll Description;2;180;no;;Description will be shown in the poll embed description.]
  35. $addTextInput[options;paragraph;Options (One per line, max $var[poll_options_limit]);2;200;yes;Option 1
  36. Option 2
  37. Option 3
  38. Option 4...;List each option on a new line.]
  39. $addTextInput[channel;short;Channel ID or Name;3;40;no;$var[def_channel];Channel ID/name where the poll will start, or leave empty.]
  40. $endif
  41.  
  42. $if[$customID==poll_modal]
  43. $removeButtons
  44. $defer
  45.  
  46. $textSplit[$url[encode;$input[options]];%0A]
  47.  
  48. $if[$or[$getTextSplitLength<2;$getTextSplitLength==;$input[options]==]==true]
  49. $var[minimum;false]
  50. $else
  51. $var[minimum;true]
  52. $endif
  53.  
  54. $if[$splitText[1]==]
  55. $var[minimum;false]
  56. $else
  57. $var[minimum;true]
  58. $endif
  59. $if[$splitText[2]==]
  60. $var[minimum;false]
  61. $endif
  62.  
  63. $if[$var[minimum]==false]
  64. $title[Minimum 2 options.]
  65. $description[Hey <@$authorID>, you must add atleast 2 options in order to start a poll, please list each option on a new line, one under other, you can add up to **$var[poll_options_limit]** poll options.]
  66. $color[#ea003a]
  67. $ephemeral
  68. $stop
  69. $endif
  70.  
  71. $if[$getTextSplitLength>$var[poll_options_limit]]
  72. $title[Options limit exceeded.]
  73. $description[Sorry <@$authorID>, but there's a limit of how many options you can add in a poll, the maximal amount of options you can add is of **$var[poll_options_limit]**, in your poll you included **$getTextSplitLength** options, you must remove atleast **$sub[$getTextSplitLength;$var[poll_options_limit]]** options to continue. ]
  74. $color[#ea003a]
  75. $ephemeral
  76. $stop
  77. $endif
  78.  
  79. $var[channel;$findChannel[$input[channel]]]
  80. $if[$serverChannelExists[$var[channel]]==false]
  81. $var[channel;$channelID]
  82. $endif
  83.  
  84. $if[$input[title]==]
  85. $var[title;Title not given.]
  86. $else
  87. $var[title;$input[title]]
  88. $endif
  89. $if[$input[description]==]
  90. $var[description;Description not given.]
  91. $else
  92. $var[description;$input[description]]
  93. $endif
  94.  
  95. $var[options;$input[options]]
  96.  
  97. $setUserVar[poll_system;$input[options]ʃ$var[channel]ʃ$url[encode;$input[title]]ʃ$url[encode;$input[description]];$authorID]
  98.  
  99. $title[Settings successfully saved!]
  100. $description[> You can change these settings by pressing the **settings** button back, if you don't want to change anything else you can press the **Send Poll** button.]
  101. $addField[Title;```$var[title]```;yes]
  102. $addField[Description;```$var[description]```;yes]
  103. $addField[Channel;<#$var[channel]>;yes]
  104. $addField[Options;```$var[options]```;yes]
  105. $color[#08b278]
  106.  
  107. $ephemeral
  108. $endif
  109.  
  110. $if[$checkContains[$customID || $message;poll_mng]==true]
  111. $defer
  112. $removeButtons
  113. $removeComponent[pollmenu_vote]
  114.  
  115. $if[$checkContains[$customID || $message;$authorID]==true]
  116. $var[poll_owner;true]
  117. $else
  118. $var[poll_owner;false]
  119. $endif
  120.  
  121. $textSplit[$customID $message;-]
  122. $var[poll_id;$splitText[2]]
  123. $var[poll_author;$splitText[3]]
  124.  
  125. $if[$checkContains[$getUserVar[poll_system;$authorID];$messageID]==true]
  126. $textSplit[$getUserVar[poll_system;$authorID];$messageID]
  127. $var[data_1;$splitText[2]]
  128.  
  129. $textSplit[$var[data_1];,]
  130. $var[voted_option;$splitText[1]]
  131. $var[voted_unix;$splitText[2]]
  132. $var[voted;Yes]
  133. $var[bool;1]
  134.  
  135. $else
  136.  
  137. $var[voted;No]
  138. $var[bool;0]
  139. $endif
  140.  
  141. $if[$checkContains[$getUserVar[poll_system;$botID];$messageID]==true]
  142. $var[poll_state;Closed]
  143. $else
  144. $var[poll_state;Open]
  145. $endif
  146.  
  147. $if[$var[poll_owner]==true]
  148. $var[by;**you**]
  149.  
  150. $if[$checkContains[$getUserVar[poll_system;$botID];$messageID]==true]
  151. $addButton[no;poll_switch-$messageID;Reopen Poll;success;no;;]
  152. $else
  153. $addButton[no;poll_switch-$messageID;Close Poll;danger;no;;]
  154. $endif
  155.  
  156. $else
  157. $var[by;<@$var[poll_author]>]
  158. $endif
  159.  
  160. $title[Poll Information]
  161. $description[> :bar_chart: This poll was initiated on ``$creationDate[$messageID;January 2, 2006 3:04 PM]`` by $var[by]!]
  162. $addField[Started by;<@$var[poll_author]> ``( $username[$var[poll_author]]#$discriminator[$var[poll_author]] )``;yes]
  163. $addField[Channel;<#$channelID>;yes]
  164. $addField[Poll State;```$var[poll_state]```;yes]
  165. $addField[Creation date;```$creationDate[$messageID;January 2, 2006 3:04 PM]```;no]
  166. $addField[You voted?;```$var[voted]```;yes]
  167. $if[$var[bool]==1]
  168. $addField[You voted for...;```Option $var[voted_option]```;yes]
  169. $addField[Voted Timestamp;<t:$var[voted_unix]:F> (<t:$var[voted_unix]:R>);yes]
  170. $else
  171. $addButton[no;https://discord.com/channels/$guildID/$channelID/$messageID;Vote!;link;no;;]
  172. $endif
  173. $color[$var[poll_color]]
  174. $ephemeral
  175. $endif
  176.  
  177. $if[$checkContains[$customID;poll_switch-]==true]
  178. $defer
  179. $removeButtons
  180. $textSplit[$customID;-]
  181. $var[msg_id;$splitText[2]]
  182. $try
  183. $var[poll_title;$getEmbedData[$channelID;$var[msg_id];1;title]]
  184. $endtry
  185.  
  186. $title[Success!]
  187. $color[#08b278]
  188. $if[$checkContains[$getUserVar[poll_system;$botID];$var[msg_id]]==false]
  189. $description[
  190. Poll ``$var[poll_title]`` has been **closed**! Members are not able to vote anymore, you can open it again using the **Reopen again** button below.
  191. ]
  192. $addButton[no;poll_switch-$var[msg_id];Reopen again;success;no;;]
  193. $try
  194. $setUserVar[poll_system;$getUserVar[poll_system;$botID] $var[msg_id];$botID]
  195. $catch
  196. $setUserVar[poll_system;$var[msg_id];$botID]
  197. $endtry
  198. $else
  199. $description[Poll ``$var[poll_title]`` has been **reopened**! Members are able to vote again, you can close it back using the **Close again** button below.]
  200. $setUserVar[poll_system;$replaceText[$getUserVar[poll_system;$botID];$var[msg_id];;-1];$botID]
  201. $addButton[no;poll_switch-$var[msg_id];Close again;danger;no;;]
  202. $endif
  203.  
  204. $endif
  205.  
  206. $if[$customID==poll_send-$authorID]
  207. $removeButtons
  208.  
  209. $if[$charCount[$getUserVar[poll_system]]<5]
  210. $title[Not ready yet!]
  211. $description[Hey, it seems you didn't modify the settings for this poll yet, please hit the **Settings** button and add atleast 2 options for your poll before sending it.]
  212. $color[#ea003a]
  213. $ephemeral
  214. $stop
  215. $endif
  216.  
  217. $textSplit[$getUserVar[poll_system];ʃ]
  218. $var[channel;$replaceText[$splitText[2]; ;;-1]]
  219. $var[poll_title;$url[decode;$splitText[3]]]
  220. $var[poll_description;$url[decode;$splitText[4]]]
  221. $var[poll_options;$url[encode;$splitText[1]]]
  222.  
  223. $if[$serverChannelExists[$var[channel]]==true]
  224. $useChannel[$var[channel]]
  225. $endif
  226.  
  227. $if[$charCount[$var[poll_title]]<3]
  228. $var[poll_title;$username[$authorID]#$discriminator[$authorID]'s Poll]
  229. $endif
  230. $if[$charCount[$var[poll_description]]<3]
  231. $var[poll_description;This poll doesn't have a description set.]
  232. $endif
  233.  
  234. $c[ ... ]
  235.  
  236. $var[display_list;true]
  237. $var[default_data;0]
  238. $var[menu_appears_on;3]
  239.  
  240. $textSplit[$replaceText[$var[poll_options];%0D;%0A;-1];%0A]
  241. $var[options;$getTextSplitLength]
  242. $var[real_options_amount;0]
  243. $var[n;1]
  244. $var[n2;1]
  245. $var[correct_2;1]
  246.  
  247. $eval[$repeatMessage[2;$repeatMessage[5;%{DOL}%optOff[
  248. %{DOL}%if[%{DOL}%splitText[%{DOL}%var[n\]\]!=\]
  249. %{DOL}%var[real_options_amount\;%{DOL}%sum[%{DOL}%var[real_options_amount\]\;1\]\]
  250. %{DOL}%try
  251.  
  252. %{DOL}%var[labels\;%{DOL}%var[labels\]%0A %{DOL}%url[decode\;%{DOL}%splitText[%{DOL}%var[n\]\]\]\]
  253. %{DOL}%var[chart_labels\;%{DOL}%var[chart_labels\],"%{DOL}%splitText[%{DOL}%var[n\]\] - "\]
  254. %{DOL}%var[dataset\;%{DOL}%var[dataset\],%{DOL}%var[default_data\]\]
  255.  
  256. %{DOL}%endtry
  257. %{DOL}%endif
  258. %{DOL}%var[n\;%{DOL}%sum[%{DOL}%var[n\]\;1\]\]
  259. \]]]]
  260.  
  261. $c[ ... ]
  262.  
  263. $var[list;$var[labels]]
  264.  
  265. $if[$var[display_list]==true]
  266. $var[d_list;$url[decode;$var[list]]]
  267. $endif
  268.  
  269.  
  270. $var[dataset;$replaceText[ $var[dataset]; ,;;-1]]
  271.  
  272. $var[chart_labels;$replaceText[ $var[chart_labels]; ,;;-1]]
  273. $var[labels_output;$replaceText[$replaceText[$var[chart_labels];%0A;;-1];%0D;;-1]]
  274. $var[labels_output;$url[decode;$var[chart_labels]]]
  275.  
  276. $c[ CHART JSON ]
  277. $var[chart_url;$url[encode;{
  278. "type": "outlabeledPie",
  279. "data": {
  280. "labels": [ $var[labels_output] \],
  281. "datasets": [{
  282. "backgroundColor": ["#FF3784", "#36A2EB", "#4BC0C0", "#F77825", "#9966FF", "#08B278", "#BBC103", "#6674FF", "#007EDA", "#DC0752"\],
  283. "data": [$var[dataset]\]
  284. }\]
  285. },
  286. "options": {
  287. "plugins": {
  288. "legend": false,
  289. "outlabels": {
  290. "text": "%l %p",
  291. "color": "white",
  292. "stretch": 35,
  293. "font": {
  294. "resizable": true,
  295. "minSize": 12,
  296. "maxSize": 18
  297. }
  298. }
  299. }
  300. }
  301. }]]
  302.  
  303. $try
  304. $var[msg_id;$sendEmbedMessage[$var[channel];;$var[poll_title];
  305. ;$replaceText[$replaceText[$replaceText[$var[poll_format];{poll_description};$var[poll_description];-1];{options_amount};$var[real_options_amount];-1];{options_list};$var[d_list];-1]
  306. ;$var[poll_color]
  307. ;New Poll!
  308. ;$c[author icon]
  309. ;Poll started by $username[$authorID]#$discriminator[$authorID]$c[footer]
  310. ;$c[footer icon]
  311. ;$c[thumbnail]
  312. ;https://quickchart.io/chart?bkg=rgba(255%2C%20255%2C%20255%2C%200)&c=$var[chart_url]&poll_params=&sep=&poll_title=$url[encode;$var[poll_title]]&sep=&poll_desc=$url[encode;$var[poll_description]]&sep=&poll_author=$authorID&sep=&poll_amount=$var[real_options_amount]&sep=&poll_options=$url[encode;$var[d_list]]&sep=
  313. ;no
  314. ;yes]]
  315. $catch
  316. $title[Unexpected error!]
  317. $description[Hey <@$authorID>, there has been an unexpected error. Please ensure that you have set everything up correctly. Remember, polls must have a minimum of two and a maximum of ten valid options, listed one underneath the other. If the error persists, please notify a developer.]
  318. $color[#ea003a]
  319. $ephemeral
  320. $stop
  321. $endtry
  322. $setUserVar[poll_system;;$authorID]
  323.  
  324. $if[$var[real_options_amount]<$var[menu_appears_on]]
  325. $else
  326. $newSelectMenu[pollmenu_vote;1;1;Click here to vote!;$var[msg_id]]
  327. $addSelectMenuOption[pollmenu_vote;Manage;poll_mng-$var[msg_id]-$authorID;Pick this option to manage this poll!;;✏️;$var[msg_id]]
  328. $endif
  329.  
  330. $eval[$repeatMessage[2;$repeatMessage[5;%{DOL}%optOff[
  331. %{DOL}%if[%{DOL}%splitText[%{DOL}%var[n2\]\]!=\]
  332. %{DOL}%try
  333.  
  334. %{DOL}%if[%{DOL}%var[real_options_amount\]<%{DOL}%var[menu_appears_on\]\]
  335. %{DOL}%addButton[no\;poll_vote-%{DOL}%var[correct_2\]\;%{DOL}%cropText[%{DOL}%url[decode\;%{DOL}%splitText[%{DOL}%var[n2\]\]\]\;58\;...\]\;primary\;no\;\;%{DOL}%var[msg_id\]\]
  336. %{DOL}%var[type\;buttons\]
  337. %{DOL}%else
  338. %{DOL}%addSelectMenuOption[pollmenu_vote\;%{DOL}%cropText[%{DOL}%url[decode\;%{DOL}%splitText[%{DOL}%var[n2\]\]\]\;58\;...\]\;poll_vote-%{DOL}%var[correct_2\]\;Vote for option number %{DOL}%var[correct_2\]\;\;\;%{DOL}%var[msg_id\]\]
  339. %{DOL}%var[type\;menu\]
  340. %{DOL}%endif
  341. %{DOL}%var[correct_2\;%{DOL}%sum[%{DOL}%var[correct_2\]\;1\]\]
  342.  
  343. %{DOL}%endtry
  344. %{DOL}%endif
  345. %{DOL}%var[n2\;%{DOL}%sum[%{DOL}%var[n2\]\;1\]\]
  346. \]]]]
  347.  
  348. $if[$var[real_options_amount]<$var[menu_appears_on]]
  349. $addButton[no;poll_mng-$var[msg_id]-$authorID;Manage;success;no;✏️;$var[msg_id]]
  350. $endif
  351.  
  352. $title[Successfully sent!]
  353. $description[Hey <@$authorID>, your poll has been successfully sent to <#$var[channel]>]
  354. $color[#08b278]
  355. $endif
  356.  
  357. $if[$checkContains[$customID || $message;poll_vote]==true]
  358. $defer
  359.  
  360. $if[$checkContains[$getUserVar[poll_system;$botID];$messageID]==true]
  361. $removeButtons
  362. $removeComponent[pollmenu_vote]
  363. $title[This poll is closed!]
  364. $description[Sorry **$username**, but you can't vote in this poll since it has been flagged as **closed** by its author, you can ask the author to reopen it at anytime.]
  365. $color[#ea003a]
  366. $ephemeral
  367. $stop
  368. $endif
  369.  
  370. $try
  371. $cooldown[1m;]
  372. $catch
  373. $removeButtons
  374. $removeComponent[pollmenu_vote]
  375. $description[Hey **$username**, you will be able to change your vote <t:$sum[$getTimestamp;$getCooldown[normal]]:R>!]
  376. $color[#ea003a]
  377. $ephemeral
  378. $stop
  379. $endtry
  380.  
  381. $textSplit[$customID $message;-]
  382. $var[voted_option;$splitText[2]]
  383. $var[msg_id;$messageID]
  384.  
  385. $if[$checkContains[$getUserVar[poll_system];$messageID]==true]
  386. $textSplit[$getUserVar[poll_system];$messageID]
  387. $var[data_1;$splitText[2]]
  388. $textSplit[$var[data_1];,]
  389. $var[last_voted;$splitText[1]]
  390. $var[voted_before;true]
  391. $setUserVar[poll_system;$replaceText[$getUserVar[poll_system];$messageID;;-1]]
  392. $else
  393. $var[voted_before;false]
  394. $endif
  395.  
  396. $if[$var[last_voted]==$var[voted_option]]
  397. $setUserVar[poll_system;$replaceText[$getUserVar[poll_system];$messageID;;-1]]
  398. $endif
  399.  
  400. $try
  401. $setUserVar[poll_system;$getUserVar[poll_system]-$messageID$var[voted_option],$getTimestamp$messageID;$authorID]
  402. $catch
  403. $setUserVar[poll_system;$messageID$var[voted_option],$getTimestamp$messageID;$authorID]
  404. $endtry
  405.  
  406. $try
  407. $var[title;$getEmbedData[$channelID;$var[msg_id];1;title]]
  408. $endtry
  409. $try
  410. $var[footer;$getEmbedData[$channelID;$messageID;1;footer]]
  411. $endtry
  412. $var[description;$getEmbedData[$channelID;$var[msg_id];1;description]]
  413. $var[img_url;$getEmbedData[$channelID;$var[msg_id];1;image]]
  414. $textSplit[$var[img_url];&poll_params=]
  415. $var[poll_params;&poll_params=$splitText[2]]
  416. $var[image;$replaceText[$replaceText[$var[img_url];$var[poll_params];;1];https://quickchart.io/chart?bkg=rgba(255%2C%20255%2C%20255%2C%200)&c=;;1]]
  417.  
  418. $var[json;$url[decode;$replaceText[$var[image];\];\\];-1]]]
  419.  
  420. $textSplit[$var[json];"data": ]
  421. $var[2;$splitText[3]]
  422. $textSplit[$var[2];\]]
  423. $var[raw;$splitText[1]\]]
  424. $var[output;$replaceText[$splitText[1];[;;-1]]
  425.  
  426. $textSplit[$var[output];,]
  427. $var[current;$splitText[$var[voted_option]]]
  428. $if[$var[voted_before]==true]
  429. $var[past;$splitText[$var[last_voted]]]
  430. $endif
  431.  
  432. $textSplit[$var[output];,]
  433. $editSplitText[$var[voted_option];$sum[$var[current];1]]
  434. $if[$var[voted_before]==true]
  435. $editSplitText[$var[last_voted];$sub[$var[past];1]]
  436. $endif
  437. $var[changed_output;$joinSplitText[,]]
  438. $var[final_json;$replaceText[$var[json]; "data": $var[raw]; "data": [$var[changed_output]\];1]]
  439.  
  440. $textSplit[$var[poll_params];&poll_params=]
  441. $var[raw_params;$splitText[2]]
  442. $textSplit[$var[raw_params];&sep=]
  443.  
  444. $var[desc;$replaceText[$url[decode;$splitText[3]];&poll_desc=;;-1]]
  445. $var[options_amount;$replaceText[$splitText[5];&poll_amount=;;-1]]
  446. $var[list_raw;$replaceText[$splitText[6];&poll_options=;;-1]]
  447.  
  448. $textSplit[$var[changed_output];,]
  449. $var[ops;0]
  450.  
  451. $eval[$repeatMessage[2;$repeatMessage[5;%{DOL}%optOff[
  452. %{DOL}%try
  453. %{DOL}%if[%{DOL}%splitText[%{DOL}%var[ops\]\]!=\]
  454. %{DOL}%var[op%{DOL}%sum[%{DOL}%var[ops\]\;1\]\;%{DOL}%splitText[%{DOL}%var[ops\]\]\]
  455. %{DOL}%endif
  456. %{DOL}%endtry
  457. %{DOL}%var[ops\;%{DOL}%sum[%{DOL}%var[ops\]\;1\]\]
  458. \]]]]
  459.  
  460. $textSplit[$var[list_raw];%0A]
  461. $var[explored;0]
  462.  
  463. $var[final_image;https://quickchart.io/chart?bkg=rgba(255%2C%20255%2C%20255%2C%200)&c=$url[encode;$var[final_json]]&poll_params=$var[raw_params]]
  464.  
  465. $eval[$repeatMessage[2;$repeatMessage[6;%{DOL}%optOff[
  466. %{DOL}%try
  467. %{DOL}%if[%{DOL}%splitText[%{DOL}%var[explored\]\]!=\]
  468. %{DOL}%var[list_looped\;%{DOL}%var[list_looped\]
  469. %{DOL}%replaceText[%{DOL}%replaceText[%{DOL}%var[list_format\]\;{option-name}\;%{DOL}%splitText[%{DOL}%var[explored\]\]\;-1\]\;{option-votes}\;%{DOL}%numberSeparator[%{DOL}%var[op%{DOL}%var[explored\]\]\]\;-1\]\]
  470. %{DOL}%endif
  471. %{DOL}%endtry
  472. %{DOL}%var[explored\;%{DOL}%sum[%{DOL}%var[explored\]\;1\]\]
  473. \]]]]
  474.  
  475. $title[$var[title]]
  476. $description[$replaceText[$replaceText[$replaceText[$var[poll_format];{poll_description};$var[desc];-1];{options_amount};$var[options_amount];-1];{options_list};$url[decode;$var[list_looped]];-1]]
  477. $if[$var[footer]!=]
  478. $footer[$var[footer]]
  479. $endif
  480. $image[$var[final_image]]
  481. $color[$var[poll_color]]
  482.  
  483. $if[$var[voted_before]==true]
  484. $if[$var[last_voted]==$var[voted_option]]
  485. $var[dm_msg;You successfully **removed** your vote from the ``$var[title]`` poll in the server ``$serverName[$guildID]``!]
  486. $else
  487. $var[dm_msg;You successfully **changed** your vote from option **$var[last_voted]** to option **$var[voted_option]** for the ``$var[title]`` poll in the server ``$serverName[$guildID]``!]
  488. $endif
  489. $else
  490. $var[dm_msg;You successfully **voted** for the option number **$var[voted_option]** in the "``$var[title]``" poll in the server ``$serverName[$guildID]``!]
  491. $endif
  492.  
  493. $try
  494. $sendEmbedMessage[$dmChannelID[$authorID];;Success!;;$var[dm_msg];#08b278;;;;;;;yes;no]
  495. $endtry
  496.  
  497. $endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement