Untitled
unknown
javascript
a year ago
3.2 kB
7
Indexable
// Function to break text into pieces of a maximum length
function breakSentence(text) {
const maxLength = 300; // Maximum length of each piece
const words = text.split(' '); // Split the text into words
const pieces = []; // Array to hold the final pieces
let currentPiece = ''; // Variable to build the current piece
words.forEach((word) => {
// Check if adding the next word would exceed maxLength
if ((currentPiece + word).length > maxLength) {
// Push the current piece to pieces and reset currentPiece
pieces.push(currentPiece.trim());
currentPiece = word + ' '; // Start a new piece with the current word
} else {
currentPiece += word + ' '; // Add the word to the current piece
}
});
// Push the last piece if it exists
if (currentPiece) {
pieces.push(currentPiece.trim());
}
return pieces;
}
// Function to send the message in parts
async function sendMessageInParts(message) {
const pieces = breakSentence(message); // Break the message into pieces
const inputField = document.querySelector('.text'); // Get the input field element
const sendButton = document.querySelector('.send'); // Get the send button element
// Disable the input field only if the message is longer than 300 characters
const isLongMessage = message.length > 300;
if (isLongMessage) {
inputField.disabled = true; // Disable input field for long messages
}
for (let index = 0; index < pieces.length; index++) {
// Set the input field to the current piece
const fullMessage = pieces[index]; // Use the current piece
inputField.value = fullMessage;
// Log each piece and its length
console.log(`Sending piece ${index + 1}: "${fullMessage}" (Length: ${fullMessage.length})`);
// Simulate sending the message
sendButton.click(); // Click the send button
// If not the last piece, generate a random delay before sending the next one
if (index < pieces.length - 1) {
const randomDelay = Math.floor(Math.random() * 6000) + 3000; // 3000 ms to 9000 ms
console.log(`Waiting for ${randomDelay} ms before sending the next piece.`);
await new Promise(resolve => setTimeout(resolve, randomDelay)); // Use await for async delay
}
}
// Re-enable the input field after all pieces have been sent, if it was disabled
if (isLongMessage) {
inputField.disabled = false;
}
}
// Add an event listener for the input field
const inputField = document.querySelector('.text'); // Get the input field element
inputField.addEventListener('keydown', (event) => {
// Check if the pressed key is Enter
if (event.key === 'Enter') {
event.preventDefault(); // Prevent the default behavior (like a newline)
const message = inputField.value; // Get the current message
// Call the function to send the message in parts
sendMessageInParts(message);
console.log(`Message processed: "${message}"`);
// Clear the input field after sending
inputField.value = '';
}
});
Editor is loading...
Leave a Comment