hwm_spam

hwm spam script

目前为 2025-03-10 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name hwm_spam
  3. // @namespace http://tampermonkey.net/
  4. // @version 2.3.1
  5. // @author Лосось
  6. // @description hwm spam script
  7. // @match /^https{0,1}:\/\/((www|qrator|my)\.(heroeswm|lordswm)\.(ru|com)|178\.248\.235\.15)\/(sms|sms-create|home).php*/
  8. // @include /^https{0,1}:\/\/((www|qrator|my)\.(heroeswm|lordswm)\.(ru|com)|178\.248\.235\.15)\/(sms|sms-create|home).php*/
  9. // @license MIT
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function () {
  14. 'use strict';
  15. const create_el = (el, style, innerText, className, placeholder) => {
  16. let element = document.createElement(el);
  17. if (style) element.style = style;
  18. if (innerText) element.innerText = innerText;
  19. if (className) element.className = className;
  20. if (placeholder) element.placeholder = placeholder;
  21. return element;
  22. }
  23.  
  24. const randomIntegerFunc = (min, max) => {
  25. return Math.floor(Math.random() * (max - min + 1)) + min;
  26. }
  27.  
  28. const links = ['https://my.lordswm.com', 'https://www.heroeswm.ru'];
  29. const link = location.href.slice(0, 22) === 'https://my.lordswm.com' ? links[0] : links[1];
  30.  
  31. //common styles
  32. const common_btn_style = 'border: none; padding:5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #592c08; font-family: verdana,geneva,arial cyr; text-align: center; font-weight: 700; background: url(../i/homeico/art_btn_bg_gold.png) #dab761; background-size: 100% 100%; border-radius: 5px; box-shadow: inset 0 0 0 1px #fce6b0,inset 0 0 0 2px #a78750,0 0 0 1px rgba(0,0,0,.13); line-height: 25px; cursor: pointer; transition: -webkit-filter .15s;transition: filter .15s;'
  33.  
  34. // local storage vars
  35. let spam_list = JSON.parse(localStorage.getItem('spam_list'));
  36. let subjectLS = JSON.parse(localStorage.getItem('subjectLS'));
  37. let msgLS = JSON.parse(localStorage.getItem('msgLS'));
  38. let timerLS = Number(JSON.parse(localStorage.getItem('timerLS')));
  39. let randomInteger = JSON.parse(localStorage.getItem('randomInteger'));
  40. let toogleStopSpam = JSON.parse(localStorage.getItem('toogleStopSpam'));
  41. let toogleStopSpamVar = toogleStopSpam;
  42. let isShowScriptLS = JSON.parse(localStorage.getItem('hwmSpamScriptToogle'));
  43. let isShowScript = isShowScriptLS;
  44.  
  45. if (!spam_list) {
  46. localStorage.setItem('spam_list', JSON.stringify([]));
  47. location.reload();
  48. }
  49. if (randomInteger === null) {
  50. localStorage.setItem('randomInteger', JSON.stringify(false));
  51. location.reload();
  52. }
  53. if (!subjectLS) {
  54. localStorage.setItem('subjectLS', JSON.stringify('введите тему'));
  55. location.reload();
  56. }
  57. if (!msgLS) {
  58. localStorage.setItem('msgLS', JSON.stringify('введите сообщение'));
  59. location.reload();
  60. }
  61. if (!timerLS) {
  62. localStorage.setItem('timerLS', JSON.stringify(75000));
  63. location.reload();
  64. }
  65. if (toogleStopSpam === null) {
  66. localStorage.setItem('toogleStopSpam', JSON.stringify(false));
  67. location.reload();
  68. }
  69. if (!isShowScriptLS) {
  70. localStorage.setItem('hwmSpamScriptToogle', JSON.stringify(false));
  71. }
  72.  
  73. // ui buttons
  74.  
  75. let showScriptBtn = create_el('button', `position: absolute; left: 10px; top: 2px; z-index: 999997; ${common_btn_style}`, `${isShowScript ? 'Hide script' : 'Show script'}`);
  76.  
  77. let stopSpamBtn = create_el('div', `position: absolute; left: 120px; top: 2px; z-index: 999997; ${common_btn_style}`, `${toogleStopSpam ? 'Остановить спам' : 'Продолжить спам'}`);
  78.  
  79. let block = create_el('div', 'position: absolute; left: 10px; top: 40px; z-index: 999999; width: 400px; min-height: 50px; background: #f5f3ea; display: flex; flex-direction: column; align-items: center; padding: 5px;');
  80. block.style.visibility = `${isShowScript ? 'visible' : 'hidden'}`
  81.  
  82. let addInputNicks = create_el('input', 'width: 400px; height: 50px; background: transparent; border: 1px solid black; color: black; font-size: 16px; margin-bottom: 3px;','','','вставьте или введите никнеймы');
  83. let addInputNicksBtn = create_el('div', `${common_btn_style} width: 98%`, 'добавить ники');
  84.  
  85. let timerBlock = create_el('div', 'display: flex; flex-direction: column; align-items: center; gap: 5px');
  86.  
  87. let timer = create_el('div', 'color: black', `Таймер ${timerLS / 1000} сек`);
  88.  
  89. let randomIntegerBtn = create_el('div', `${common_btn_style} width: 98%`, `${randomInteger ? 'Выключить рандом таймера +30 сек' : 'Включить рандом таймера +30 сек'}`);
  90. randomIntegerBtn.style.background = randomInteger ? '#ff4d4d' : '#4dff88';
  91. randomIntegerBtn.title="При включении рандома, таймер на сообщения будет в случайном порядке выбирать число между заданым Вами таймером и числом таймера, к которому добавлено 30 сек."
  92.  
  93. let setTimerInput = create_el('input', 'border: 1px solid black; width: 120px; height: 30px; background: transparent; color: black; border-radius: 10px; margin-top: 5px;', '','','введите таймер');
  94.  
  95. let setTimerBtn = create_el('div', `${common_btn_style} width: 100%`, 'задать таймер')
  96.  
  97. let subjectInput = create_el('input', 'width: 400px; height: 50px; background: transparent; border: 1px solid black; color: black; font-size: 16px; margin-bottom: 3px;', '','','введите тему');
  98. subjectInput.value = subjectLS;
  99. let subjectInputBtn = create_el('div', `${common_btn_style} width: 98%`, 'добавить/изменить тему');
  100.  
  101. let msgInput = create_el('textarea', 'width: 400px; height: 150px; background: transparent; border: 1px solid black; black: white; font-size: 16px; margin-bottom: 3px;', '','','введите сообщение');
  102. msgInput.value = msgLS;
  103.  
  104. let addMessageBtn = create_el('button', `${common_btn_style} margin: 5px; width: 100%`, 'Добавить/изменить сообщение');
  105.  
  106. let uiList = create_el('ol');
  107.  
  108. let deleteAllNicksBtn = create_el('button', `${common_btn_style} margin: 5px; width: 100%`, 'удалить весь список');
  109.  
  110. addInputNicksBtn.addEventListener('click', () => {
  111. let text = addInputNicks.value;
  112. text = text.split(',');
  113. text = text.filter(el => el.length !== 0);
  114. text = text.map(el => el.trim());
  115. spam_list = [...spam_list, ...text];
  116. localStorage.setItem('spam_list', JSON.stringify(spam_list));
  117. location.reload();
  118. });
  119.  
  120. subjectInputBtn.addEventListener('click', (e) => {
  121. localStorage.setItem('subjectLS', JSON.stringify(subjectInput.value));
  122. location.reload();
  123. })
  124.  
  125. deleteAllNicksBtn.addEventListener('click', () => {
  126. let conf = confirm('точно удалить весь список?');
  127. if (!conf) return;
  128. spam_list = [];
  129. localStorage.setItem('spam_list', JSON.stringify(spam_list));
  130. location.reload();
  131. });
  132.  
  133. showScriptBtn.addEventListener('click', () => {
  134. isShowScript = !isShowScript;
  135. localStorage.setItem('hwmSpamScriptToogle', isShowScript);
  136. block.style.visibility = isShowScript ? 'visible' : 'hidden';
  137. showScriptBtn.innerText = `${isShowScript ? 'Hide script' : 'Show script'}`;
  138. })
  139.  
  140. stopSpamBtn.addEventListener('click', () => {
  141. toogleStopSpamVar = !toogleStopSpamVar
  142. localStorage.setItem('toogleStopSpam', toogleStopSpamVar);
  143. location.reload();
  144. })
  145.  
  146. setTimerInput.addEventListener('keypress', (e) => {
  147. if (e.key === 'Enter') {
  148. localStorage.setItem('timerLS', JSON.stringify(Number(setTimerInput.value) * 1000));
  149. location.reload();
  150. }
  151. })
  152.  
  153. setTimerBtn.addEventListener('click', (e) => {
  154. localStorage.setItem('timerLS', JSON.stringify(Number(setTimerInput.value) * 1000));
  155. location.reload();
  156. })
  157.  
  158. subjectInput.addEventListener('keypress', (e) => {
  159. if (e.key === 'Enter') {
  160. localStorage.setItem('subjectLS', JSON.stringify(subjectInput.value));
  161. location.reload();
  162. }
  163. })
  164.  
  165. addMessageBtn.addEventListener('click', () => {
  166. localStorage.setItem('msgLS', JSON.stringify(msgInput.value));
  167. location.reload();
  168. })
  169.  
  170. addInputNicks.addEventListener('keypress', (e) => {
  171. if (e.key === 'Enter') {
  172. let text = addInputNicks.value;
  173. text = text.split(',');
  174. text = text.filter(el => el.length !== 0);
  175. text = text.map(el => el.trim());
  176. spam_list = [...spam_list, ...text];
  177. localStorage.setItem('spam_list', JSON.stringify(spam_list));
  178. location.reload();
  179. }
  180. });
  181.  
  182. randomIntegerBtn.addEventListener('click', () => {
  183. randomInteger = !randomInteger;
  184. localStorage.setItem('randomInteger', JSON.stringify(randomInteger));
  185. randomIntegerBtn.innerText = randomInteger ? 'Выключить рандом таймера +30 сек' : 'Включить рандом таймера +30 сек';
  186. randomIntegerBtn.style.background = randomInteger ? '#ff4d4d' : '#4dff88';
  187. })
  188.  
  189. spam_list.forEach(el => {
  190. let li = create_el('li');
  191. let nickname = create_el('span','color: black;', el);
  192. let deleteNickBtn = create_el('button', 'cursor: pointer; margin-left: 5px; background-color: transparent; border: none;','χ');
  193. deleteNickBtn.addEventListener('click', () => {
  194. spam_list = spam_list.filter(nick => nick !== el);
  195. localStorage.setItem('spam_list', JSON.stringify(spam_list));
  196. location.reload();
  197. })
  198. li.appendChild(nickname);
  199. li.appendChild(deleteNickBtn);
  200. uiList.appendChild(li);
  201. })
  202. timerBlock.appendChild(setTimerInput);
  203. timerBlock.appendChild(setTimerBtn);
  204. timerBlock.appendChild(timer);
  205.  
  206. block.appendChild(addInputNicks);
  207. block.appendChild(addInputNicksBtn);
  208. block.appendChild(subjectInput);
  209. block.appendChild(subjectInputBtn);
  210. block.appendChild(msgInput);
  211. block.appendChild(addMessageBtn);
  212. block.appendChild(deleteAllNicksBtn);
  213. block.appendChild(randomIntegerBtn);
  214. block.appendChild(timerBlock);
  215. block.appendChild(uiList);
  216.  
  217. document.body.appendChild(showScriptBtn);
  218. document.body.appendChild(stopSpamBtn);
  219. document.body.appendChild(block);
  220.  
  221. if (toogleStopSpam === false) return;
  222.  
  223. if (location.href === `${link}/sms.php`) {
  224. if (spam_list.length === 0) return;
  225. location.replace(`${link}/sms-create.php`);
  226. }
  227.  
  228. if (location.href === `${link}/sms-create.php`) {
  229. if (spam_list.length === 0) return;
  230. let nickInput = document.getElementsByName("mailto")[0].value = spam_list[0];
  231.  
  232. let subjectInput = document.getElementsByName("subject")[0].value = subjectLS;
  233.  
  234. let msgInput = document.getElementsByName("msg")[0].value = msgLS;
  235.  
  236. setTimeout(() => {
  237. spam_list.shift();
  238. localStorage.setItem('spam_list', JSON.stringify(spam_list));
  239. let submitBtn = document.getElementsByName("subm")[0].click();
  240. }, randomInteger ? randomIntegerFunc(timerLS, timerLS + 30000) : timerLS);
  241. }
  242.  
  243. })();