twitchPlaysDarkFilterChat

A script to filter out the chat commands in Twitch Plays Dark Souls

  1. // ==UserScript==
  2. // @name twitchPlaysDarkFilterChat
  3. // @namespace twitchPlaysDarkFilterChat
  4. // @include *.twitch.tv/twitchplaysdark
  5. // @include *.twitch.tv/twitchplaysdark/chat?popout=
  6. // @version 0.95
  7. // @description A script to filter out the chat commands in Twitch Plays Dark Souls
  8. // ==/UserScript==
  9. //
  10. var filterActive = false;
  11. var toBeFiltered= [
  12. "arl",
  13. "ar",
  14. "al",
  15. "d",
  16. "ard",
  17. "aru",
  18. "arr",
  19. "m",
  20. "e",
  21. "bs",
  22. // hold
  23. "hold",
  24. "holdx2",
  25. "holdx3",
  26. "thold",
  27. "tholdx2",
  28. "tholdx3",
  29. // running
  30. "run",
  31. "runt",
  32. // flong
  33. "tflong",
  34. "tflongx2",
  35. "tflongx3",
  36. "tfshort",
  37. "tfshortx2",
  38. "tfshortx3",
  39. "flong",
  40. "flongx2",
  41. "flongx3",
  42. "fshort",
  43. "fshortx2",
  44. "fshortx3",
  45. // walking movement
  46. "tfx3",
  47. "tfrx3",
  48. "tflx3",
  49. "tbx3",
  50. "tbrx3",
  51. "tblx3",
  52. "tlx3",
  53. "trx3",
  54. "tfx2",
  55. "tfrx2",
  56. "tflx2",
  57. "tbx2",
  58. "tbrx2",
  59. "tblx2",
  60. "tlx2",
  61. "trx2",
  62. "tf",
  63. "tfr",
  64. "tfl",
  65. "tb",
  66. "tbr",
  67. "tbl",
  68. "tl",
  69. "tr",
  70. "fx3",
  71. "frx3",
  72. "flx3",
  73. "bx3",
  74. "brx3",
  75. "blx3",
  76. "lx3",
  77. "rx3",
  78. "fx2",
  79. "frx2",
  80. "flx2",
  81. "bx2",
  82. "brx2",
  83. "blx2",
  84. "lx2",
  85. "rx2",
  86. "f",
  87. "fr",
  88. "fl",
  89. "b",
  90. "br",
  91. "bl",
  92. "l",
  93. "r",
  94. // rolling movement
  95. "rf",
  96. "rb",
  97. "rl",
  98. "rr",
  99. "rfx2",
  100. "rbx2",
  101. "rlx2",
  102. "rrx2",
  103. "rfx3",
  104. "rbx3",
  105. "rlx3",
  106. "rrx3",
  107. "trf",
  108. "trb",
  109. "trl",
  110. "trr",
  111. "trfx2",
  112. "trbx2",
  113. "trlx2",
  114. "trrx2",
  115. "trfx3",
  116. "trbx3",
  117. "trlx3",
  118. "trrx3",
  119. // face buttons
  120. "u",
  121. "tu",
  122. "g",
  123. "d",
  124. "a",
  125. "ax2",
  126. "ax3",
  127. "ta",
  128. "tax2",
  129. "tax3",
  130. // D-pad
  131. "du",
  132. "dd",
  133. "dl",
  134. "dr",
  135. "lr",
  136. // kicks
  137. "kick",
  138. "k",
  139. "kx2",
  140. "kx3",
  141. "tk",
  142. "tkx2",
  143. "tkx3",
  144. // jump attacks
  145. "jumpattack",
  146. "ja",
  147. "jax2",
  148. "jax3",
  149. "tja",
  150. "tjax2",
  151. "tjax3",
  152. // shoulder buttons
  153. "tr1t",
  154. "tr2t",
  155. "tr1x2t",
  156. "tr1x3t",
  157. "tr2x2t",
  158. "tr2x3t",
  159. "r1t",
  160. "r2t",
  161. "r1x2t",
  162. "r2x2t",
  163. "r1x3t",
  164. "r2x3t",
  165. "tl1t",
  166. "tl2t",
  167. "tl1x2t",
  168. "tl1x3t",
  169. "tl2x2t",
  170. "tl2x3t",
  171. "l1t",
  172. "l2t",
  173. "l1x2t",
  174. "l2x2t",
  175. "l1x3t",
  176. "l2x3t",
  177. "tr1",
  178. "tr2",
  179. "tr1x2",
  180. "tr1x3",
  181. "tr2x2",
  182. "tr2x3",
  183. "r1",
  184. "r2",
  185. "r1x2",
  186. "r2x2",
  187. "r1x3",
  188. "r2x3",
  189. "tl1",
  190. "tl2",
  191. "tl1x2",
  192. "tl1x3",
  193. "tl2x2",
  194. "tl2x3",
  195. "l1",
  196. "l2",
  197. "l1x2",
  198. "l2x2",
  199. "l1x3",
  200. "l2x3",
  201. //
  202. "left",
  203. "right",
  204. "fwd",
  205. "back",
  206. "democracy",
  207. "order",
  208. "demo",
  209. "anarchy",
  210. "menubutton",
  211. "banmenu",
  212. "unbanmenu",
  213. "banm",
  214. "chaos",
  215. "unbanm",
  216. "delaydn",
  217. "delayup"
  218. ];
  219. var chatParent = document.getElementsByClassName("chat-lines")[0];
  220. var interval;
  221.  
  222. function filterChat(event){
  223. if(event.target.children == undefined)
  224. {
  225. return;
  226. }
  227. var message = event.target.children[0].children[5].innerHTML;
  228. message = message.toUpperCase().replace(/\s+/g, '');
  229. var compare;
  230. for(x=0;x<toBeFiltered.length;x++)
  231. {
  232. compare = toBeFiltered[x].toUpperCase().replace(/\s+/g, '').substr(0,message.length);
  233. if(message === compare){
  234. chatParent.removeChild(event.target);
  235. break;
  236. }
  237. }
  238. }
  239.  
  240. function checkIfLoaded()
  241. {
  242. chatParent = document.getElementsByClassName("chat-lines")[0];
  243. try{chatParent.children}
  244. catch(err)
  245. {
  246. return;
  247. }
  248. chatParent.addEventListener("DOMNodeInserted",filterChat);
  249. window.clearInterval(interval);
  250. }
  251.  
  252. interval = window.setInterval(checkIfLoaded,20);