debug: add streaming logs and faster delays
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user