Untitled

 avatar
unknown
javascript
2 years ago
2.8 kB
2
Indexable
  // Constants for the time difference threshold (in milliseconds) and message limit
  const timeDifferenceThreshold = 2000;
  const messageLimit = 1;

  // Object to track user-specific data
  let userChatData = {};

  // Function to track and handle spam messages
  function banSpammer() {
    const currentTime = new Date().getTime();

    // Select the last p element in the chat
    const latestMessage = document.querySelector('.messages-content p:last-child');

    if (latestMessage) {
      // Select the span element with data-user attribute inside the latest p element
      const userIdElement = latestMessage.querySelector('span[data-user]');
      const userId = userIdElement ? userIdElement.getAttribute('data-user') : null;

      if (userId) {
        // Initialize user-specific data if not already present
        if (!userChatData[userId]) {
          userChatData[userId] = { count: 0, time: currentTime }; // Initialize time with current time
        }

        // Collect user information
        const userName = userIdElement ? userIdElement.textContent : 'Unknown User';

        // Calculate time difference
        const timeDifference = currentTime - userChatData[userId].time;

        if (timeDifference < timeDifferenceThreshold) {
          // Increment the user's message count for the chat
          userChatData[userId].count++;

          if (userChatData[userId].count > messageLimit) {
            // Remove all messages of the user if the limit is exceeded
            const userMessages = document.querySelectorAll(`.messages-content span[data-user="${userId}"]`);
            userMessages.forEach(message => {
              const pTag = message.closest('p');
              if (pTag) {
                pTag.remove();
              }
            });

            // Log the spam information with id, name, time difference, and count in a single string
            console.log(
              `%cSpam info: User ID: ${userId}, Name: ${userName}, Time Diff: ${timeDifference} ms, Msg Count: ${userChatData[userId].count}`,
              'color: red'
            );

            // Reset user's message count
            userChatData[userId].count = 0;
          }
        } else {
          // Update the user's time and reset the count if the time difference exceeds the threshold
          userChatData[userId].time = currentTime;
          userChatData[userId].count = 1;

          // Log the message information with id, name, time difference, and count in a single string
          console.log(
            `%cMsg info: User ID: ${userId}, Name: ${userName}, Time Diff: ${timeDifference} ms, Msg Count: ${userChatData[userId].count}`,
            'color: green'
          );
        }
      }
    }
  }
Editor is loading...
Leave a Comment