debug: add streaming logs and faster delays

This commit is contained in:
admin
2026-05-05 13:42:55 +00:00
Unverified
parent 100ac4e5e8
commit 494596c0a9

View File

@@ -46,58 +46,68 @@ export async function sendStreamingMessage(ctx, text, options = {}) {
if (!text) return;
const {
delay = 80,
minDelay = 40,
maxDelay = 150,
charMode = false // Set to true for character-by-character
delay = 50,
minDelay = 20,
maxDelay = 100,
charMode = false
} = options;
try {
logger.info('📡 Starting streaming for message of length:', text.length);
// Send initial placeholder message
const sentMsg = await ctx.reply('⌨️ Typing...', { parse_mode: 'Markdown' });
const sentMsg = await ctx.reply('⌨️ ⌨️', { parse_mode: 'Markdown' });
logger.info('📡 Initial message sent:', sentMsg.message_id);
let sentText = '';
if (charMode) {
// Character-by-character streaming
const chars = text.split('');
logger.info('📡 Character mode, total chars:', chars.length);
for (const char of chars) {
sentText += char;
// Edit the message in place
await ctx.api.editMessageText(sentText, {
message_id: sentMsg.message_id,
chat_id: sentMsg.chat.id,
parse_mode: 'Markdown'
});
try {
await ctx.api.editMessageText(sentText, {
message_id: sentMsg.message_id,
chat_id: sentMsg.chat.id,
parse_mode: 'Markdown'
});
} catch (editErr) {
logger.error('Edit error:', editErr.message);
}
// Random delay between min and max
const delayMs = minDelay + Math.random() * (maxDelay - minDelay);
await new Promise(resolve => setTimeout(resolve, delayMs));
}
} else {
// Word-by-word streaming
const words = text.split(' ');
logger.info('📡 Word mode, total words:', words.length);
for (let i = 0; i < words.length; i++) {
sentText += (i > 0 ? ' ' : '') + words[i];
// Edit the message in place
await ctx.api.editMessageText(sentText, {
message_id: sentMsg.message_id,
chat_id: sentMsg.chat.id,
parse_mode: 'Markdown'
});
try {
await ctx.api.editMessageText(sentText, {
message_id: sentMsg.message_id,
chat_id: sentMsg.chat.id,
parse_mode: 'Markdown'
});
} catch (editErr) {
logger.error('Edit error:', editErr.message);
}
// Variable delay based on word length
const wordDelay = Math.max(minDelay, Math.min(maxDelay, delay + words[i].length * 8));
const wordDelay = Math.max(minDelay, Math.min(maxDelay, delay + words[i].length * 5));
await new Promise(resolve => setTimeout(resolve, wordDelay));
}
}
logger.info('📡 Streaming complete');
} catch (error) {
logger.error('Streaming send failed:', error);
// Fallback to non-streaming
await sendFormatted(ctx, text);
}
}