Omegle Group Chat

Make a group of strangers in Omegle chat with each other

当前为 2016-09-06 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Omegle Group Chat
  3. // @namespace http://omeglegroup.edu/
  4. // @version 1.4
  5. // @description Make a group of strangers in Omegle chat with each other
  6. // @match http://www.omegle.com
  7. // @require http://code.jquery.com/jquery-latest.js
  8. // @author Streak324
  9. // ==/UserScript==
  10.  
  11. var inputHTML = "strangermsg";
  12. var running = false;
  13. var amount;
  14. var omegleWindows = {};
  15. var chatbox = 'textarea.chatmsg';
  16. var sendButton = 'button.sendbtn';
  17. var startButton = 'textbtn';
  18. var interval;
  19. var kickIdlers = false;
  20. var idleDelay = 60000;
  21. var ownerNick = "OVERLORD";
  22. var counter = 1;
  23.  
  24. if(window.name == '') {
  25. $(document).ready(function () {
  26. document.getElementById('header').insertAdjacentHTML('afterend', "<div style='background-color:white' id='omegle-settings'></div>");
  27. $('#omegle-settings').append('<h2>Group Chat Options</h2>');
  28. $('#omegle-settings').append("<label for='idle'>Autokick idlers</label><br />");
  29. $('#omegle-settings').append('<input id="idleBox" type="checkbox" name="idle">');
  30. $('#omegle-settings').append("<input id='idleText' type='text' name='idle' placeholder='In Milliseconds' disabled></br />");
  31. $('#omegle-settings').append("<label for='numPeeps'>Type number of people in conversation</label><br />");
  32. $('#omegle-settings').append("<input id='numPeeps' type='text' name='numPeeps' placeholder='Limit is 6. DONT GO ABOVE'>");
  33. $('#omegle-settings').append("<div id='group-buttons'></div>");
  34. $('#group-buttons').append('<form></form>');
  35. $('#group-buttons').append("<input id='start-group' type='submit', value='Start'>");
  36. $('#group-buttons').append("<input id='stop-group' type='submit', value='Stop' disabled><br /><br /><br />");
  37. $('#omegle-settings').append("<textarea id='group-log' rows='20', cols='150' disabled></textarea><br /><br />");
  38. $('#omegle-settings').append("<label for='addInput'>Send your own messages here</label><br />");
  39. $('#omegle-settings').append("<input id='addInput' name='addInput' type='text' disabled>");
  40.  
  41. $('#idleBox').on('click', function() {
  42. if(document.getElementById('idleBox').checked) {
  43. kickIdlers = true;
  44. document.getElementById('idleText').disabled = false;
  45. } else {
  46. kickIdlers = false;
  47. document.getElementById('idleText').disabled = true;
  48. }
  49. });
  50. $('#start-group').on('click', function () {
  51. var num = $('#numPeeps').val();
  52. var _idleDelay = $('#idleText').val();
  53. if (isNumeric(num) && parseInt(num) > 0 && ($('#idleBox').is(':checked') && isNumeric(_idleDelay) || !$('#idleBox').is(':checked'))) {
  54. idleDelay = parseInt(_idleDelay);
  55. setupGroup(parseInt(num));
  56. $('#group-log').val('');
  57. $('#start-group').prop('disabled', true);
  58. $('#stop-group').prop('disabled', false);
  59. $('#addInput').prop('disabled', false);
  60. }
  61. });
  62. $('#stop-group').on('click', function () {
  63. closeGroup();
  64. $('#start-group').prop('disabled', false);
  65. $('#stop-group').prop('disabled', true);
  66. $('#addInput').prop('disabled', true);
  67. });
  68.  
  69. $('#addInput').keypress(function(e) {
  70. if(e.which == 13) {
  71. broadcast(ownerNick + ': ' + $('#addInput').val());
  72. $('#addInput').val('');
  73. }
  74. });
  75. });
  76. }
  77.  
  78. function runGroup() {
  79. for(var name in omegleWindows) {
  80. if(omegleWindows[name].connected) {
  81. var messages = omegleWindows[name].document.getElementsByClassName(inputHTML);
  82. for(i=omegleWindows[name].messageIndex; i < messages.length; i++) {
  83. var message = messages[i].getElementsByTagName('span')[0].innerHTML;
  84. if(!sendingCommands(message, name)){
  85. broadcast(name + ": " + message, { sender: name });
  86. }
  87. }
  88. if(omegleWindows[name].messageIndex != messages.length) { //check if idling
  89. omegleWindows[name].messageIndex = messages.length;
  90. omegleWindows[name].idleCount = Date.now() + idleDelay;
  91. }
  92. if(kickIdlers && omegleWindows[name].idleCount < Date.now()) { //kick idlers
  93. console.log("Kicking " + name);
  94. omegleWindows[name].document.querySelector('button.disconnectbtn').click();
  95. omegleWindows[name].document.querySelector('button.disconnectbtn').click();
  96. }
  97. if(omegleWindows[name].document.querySelector('button.disconnectbtn').innerHTML == "New<div class=\"btnkbshortcut\">Esc</div>") { //find new people
  98. omegleWindows[name].connected = false;
  99. broadcast(name + " has left the group chat. Looking for a new person", { sender: name, connection: true });
  100. omegleWindows[name].document.querySelector('button.disconnectbtn').click();
  101. }
  102. } else if(omegleWindows[name].document.getElementById(startButton)) { //starting
  103. omegleWindows[name].document.getElementById(startButton).click();
  104. } else if(omegleWindows[name].document.getElementsByClassName('statuslog').length > 0) {
  105. var status = omegleWindows[name].document.getElementsByClassName('statuslog')[0].innerHTML;
  106. if(status == "You're now chatting with a random stranger. Say hi!") {
  107. var newName = "Stranger "+ (counter++);
  108. omegleWindows[name].connected = true;
  109. omegleWindows[name].idleCount = Date.now() + idleDelay;
  110. var welcome = "Welcome to Omegle Group Chat. Your nick is " + newName + ". Type !help for options. EXPECT BUGS";
  111. if(kickIdlers) welcome += " You will be kicked if you dont send messages at least every " + idleDelay/1000 + " seconds";
  112. omegleWindows[name].document.querySelector(chatbox).value = welcome;
  113. omegleWindows[name].document.querySelector(sendButton).click();
  114. omegleWindows[newName] = omegleWindows[name];
  115. delete omegleWindows[name];
  116. broadcast(newName + " has connected to the group chat", { sender: newName, connection: true });
  117. } else if(status == "<div><div>Looking for someone you can chat with...</div></div>") {
  118. omegleWindows[name].document.querySelector('button.disconnectbtn').click();
  119. omegleWindows[name].document.querySelector('button.disconnectbtn').click();
  120. }
  121. }
  122. checkCaptcha(omegleWindows[name]);
  123. }
  124. }
  125.  
  126. function broadcast(message, opts) {
  127. if(!opts) {
  128. opts = {
  129. sender : null,
  130. connection : false
  131. };
  132. }
  133. for(var name in omegleWindows) {
  134. if(omegleWindows[name].connected) {
  135. omegleWindows[name].document.querySelector(chatbox).value = "";
  136. if(opts.sender && name == opts.sender)
  137. omegleWindows[name].document.querySelector(chatbox).value += "(YOU) ";
  138.  
  139. if((opts.connection && omegleWindows[name].logConnections) || !opts.connection) {
  140. omegleWindows[name].document.querySelector(chatbox).value += message;
  141. omegleWindows[name].document.querySelector(sendButton).click();
  142. }
  143. }
  144. }
  145. document.getElementById('group-log').value += message + '\n';
  146. $('#group-log').scrollTop($('#group-log')[0].scrollHeight);
  147. }
  148.  
  149. function sendingCommands(message, user) {
  150. if(message.substring(0, 6) == '!nick ') {
  151. var newNick = message.substring(6, (message.length < 30) ? message.length : 30);
  152. if (newNick != user) {
  153. for(var name in omegleWindows) {
  154. if(name == newNick || newNick == ownerNick) {
  155. omegleWindows[user].document.querySelector(chatbox).value = "That nickname has been taken";
  156. omegleWindows[user].document.querySelector(sendButton).click();
  157. return true;
  158. }
  159. }
  160. omegleWindows[newNick] = omegleWindows[user];
  161. delete omegleWindows[user];
  162. message = user + " has changed his name to " + newNick;
  163. broadcast(message, { sender: newNick });
  164. }
  165. return true;
  166. } else if(message.substring(0, 12) == '!toggle-logs') {
  167. omegleWindows[user].logConnections = (omegleWindows[user].logConnections) ? false : true;
  168. if(omegleWindows[user].logConnections) { omegleWindows[user].document.querySelector(chatbox).value = "Notices have been enabled"; }
  169. else { omegleWindows[user].document.querySelector(chatbox).value = "Notices have been disabled"; }
  170. omegleWindows[user].document.querySelector(sendButton).click();
  171. return true;
  172. } else if(message.substring(0, 5) == '!help') {
  173. omegleWindows[user].document.querySelector(chatbox).value = "************************************COMMAND OPTIONS************************************";
  174. omegleWindows[user].document.querySelector(chatbox).value += "!nick newname --- Allows you to set your nickname";
  175. omegleWindows[user].document.querySelector(chatbox).value += "\n!toggle-logs --- Enable/Disable notices on people who enter and leave the group chat";
  176. omegleWindows[user].document.querySelector(sendButton).click();
  177. return true;
  178. }
  179. return false;
  180. }
  181.  
  182. function setupGroup(num) {
  183. running = true;
  184. amount = num;
  185. console.log(amount);
  186. for(i=0; i < amount; i++) {
  187. omegleWindows[i] = window.open('http://omegle.com/', 'window '+i);
  188. $(omegleWindows[i].document).ready(function() {
  189. omegleWindows[i].document.title = 'window '+i;
  190. omegleWindows[i].connected = false;
  191. omegleWindows[i].messageIndex = 0;
  192. omegleWindows[i].logConnections = true;
  193. });
  194. }
  195. interval = setInterval(runGroup, 1000);
  196. }
  197.  
  198. function closeGroup() {
  199. broadcast('DISCONNECTING THE GROUP CHAT. GOODBYE LOSERS');
  200. running = false;
  201. for(var name in omegleWindows) {
  202. omegleWindows[name].close();
  203. }
  204. clearInterval(interval);
  205. omegleWindows = {};
  206. }
  207.  
  208. function checkCaptcha(omegleWindow) {
  209. if(omegleWindow.document.getElementById('recaptcha_area') && !omegleWindow.captchaNotice) {
  210. omegleWindow.captchaNotice = true;
  211. omegleWindows[name].document.querySelector(chatbox).value = "HEYY!!!! WE HAVE A CAPTCHA AT " + omegleWindow.name;
  212. omegleWindows[name].document.querySelector(sendButton).click();
  213. } else if(!omegleWindow.document.getElementById('recaptcha_area')) {
  214. omegleWindow.captchaNotice = false;
  215. }
  216. }
  217.  
  218. function isNumeric(n) {
  219. return !isNaN(parseFloat(n)) && isFinite(n);
  220. }