Twitch Chat Cleverbot

try to take over the world!

  1. // ==UserScript==
  2. // @name Twitch Chat Cleverbot
  3. // @namespace http://twitchspam.edu/
  4. // @version 0.1
  5. // @description try to take over the world!
  6. // @author You
  7. // @match https://www.twitch.tv/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. var victimButton = ".button.float-right.qa-chat-buttons__submit.js-chat-buttons__submit";
  12. var victimChatbox = ".js-chat_input.chat_text_input.mousetrap.ember-view.ember-text-area";
  13. var msg = '';
  14. var author = '';
  15. var minDelay = 10000;
  16. var maxDelay = 15000;
  17. var inputTimer;
  18. var isResponding = false;
  19. var atMessage = false;
  20. var optionsWindow;
  21. var cleverbot_window;
  22.  
  23. $(document).ready(function() {
  24. $(document).keypress(function(e) {
  25. if(e.keyCode == 96) {
  26. loadOptionWindow();
  27. }
  28. });
  29. cleverbot_window = window.open('http://www.cleverbot.com/', 'cleverbot');
  30. $(cleverbot_window.document).ready(function() {
  31. inputTimer = Date.now() + getRandInt(minDelay, maxDelay);
  32. setInterval(spamCleverbot, 1000);
  33. });
  34. });
  35.  
  36. function spamCleverbot() {
  37. if(Date.now() > inputTimer && !isResponding) {
  38. var chat = document.getElementsByClassName('chat-line');
  39. msg = chat[chat.length - 1];
  40.  
  41. author = msg.getElementsByClassName('from')[0];
  42. var txt = msg.getElementsByClassName('message')[0];
  43. var mentions = txt.getElementsByClassName('user-mention');
  44. var imgs = txt.getElementsByTagName('img');
  45. var links = txt.getElementsByTagName('a');
  46. while (mentions[0]) {
  47. mentions[0].parentNode.removeChild(mentions[0]);
  48. }
  49. while (imgs[0]) {
  50. imgs[0].parentNode.removeChild(imgs[0]);
  51. }
  52. while(links[0]) {
  53. links[0].parentNode.removeChild(links[0]);
  54. }
  55.  
  56. cleverbot_window.document.querySelector('input[name=stimulus]').value = txt.innerHTML;
  57. cleverbot_window.document.querySelector('input[name=thinkaboutitbutton]').click();
  58. console.log(author.innerHTML + ':' + txt.innerHTML);
  59.  
  60. isResponding = true;
  61. } else if (isResponding && cleverbot_window.document.querySelector('span#snipTextIcon.yellow')) {
  62. var response = cleverbot_window.document.getElementById('line1').getElementsByClassName('bot')[0].innerHTML;
  63. if(atMessage) {
  64. document.querySelector(victimChatbox).value = '@' + author.innerHTML + ' ' + response;
  65. } else {
  66. document.querySelector(victimChatbox).value = response;
  67. }
  68. document.querySelector(victimButton).click();
  69. console.log('CLEVERBOT:' + response);
  70.  
  71. isResponding = false;
  72. inputTimer = Date.now() + getRandInt(minDelay, maxDelay);
  73. }
  74. }
  75.  
  76. function loadOptionWindow() {
  77. optionsWindow = window.open('', 'Cleverbot Options');
  78. optionsWindow.document.write("<div id='cleverbot-opts'></div>");
  79. optionsWindow.document.write("<h2>Cleverbot Options</h2>");
  80.  
  81. optionsWindow.document.write("<input type='checkbox' name='atMessage' id='atMessage' value='atMessage'>Use the @ when sending a response<br>");
  82.  
  83. optionsWindow.document.write("<label for='min-delay'>Min Input Delay</label><br>");
  84. optionsWindow.document.write("<input type='text' name='min-delay'><br>");
  85.  
  86. optionsWindow.document.write("<label for='max-delay'>Max Input Delay</label><br>");
  87. optionsWindow.document.write("<input type='text' name='max-delay'><br>");
  88.  
  89. optionsWindow.document.getElementById('atMessage').checked = atMessage;
  90. optionsWindow.document.getElementsByName('min-delay')[0].value = minDelay;
  91. optionsWindow.document.getElementsByName('max-delay')[0].value = maxDelay;
  92.  
  93. $(optionsWindow.document).ready( function() {
  94. $(optionsWindow).unload(saveOptions);
  95. });
  96. }
  97.  
  98. function saveOptions() {
  99. console.log('Saving options...');
  100.  
  101. atMessage = optionsWindow.document.getElementById('atMessage').checked;
  102. var _minDelay = optionsWindow.document.getElementsByName('min-delay')[0].value;
  103. var _maxDelay = optionsWindow.document.getElementsByName('max-delay')[0].value;
  104. if(isNumeric(_minDelay) && isNumeric(_maxDelay) && Number(_maxDelay) > Number(_minDelay)) {
  105. minDelay = Number(_minDelay);
  106. maxDelay = Number(_maxDelay);
  107. }
  108. console.log("atMessage:"+atMessage+" minDelay:"+minDelay+" maxDelay:"+maxDelay);
  109. }
  110.  
  111. function isNumeric(n) {
  112. return !isNaN(parseFloat(n)) && isFinite(n);
  113. }
  114.  
  115. function getRandInt(min, max) {
  116. min = Math.ceil(min);
  117. max = Math.floor(max);
  118. return Math.floor(Math.random() * (max-min)) + min;
  119. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址