Files
telegram-management-system/backend/test-getDialogs-fix.js
你的用户名 237c7802e5
Some checks failed
Deploy / deploy (push) Has been cancelled
Initial commit: Telegram Management System
Full-stack web application for Telegram management
- Frontend: Vue 3 + Vben Admin
- Backend: NestJS
- Features: User management, group broadcast, statistics

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 15:37:50 +08:00

81 lines
2.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 测试修复后的getDialogs方法
const { Api } = require('telegram');
// 模拟修复前的代码(会失败)
async function oldGetDialogs() {
try {
const params = {
offsetDate: 43,
offsetId: 43,
offsetPeer: "username", // 错误应该是InputPeer对象
limit: 100,
hash: 0,
excludePinned: true,
folderId: 43,
};
console.log('旧版本参数:', params);
// 这会导致API错误
return params;
} catch (error) {
console.error('旧版本错误:', error.message);
throw error;
}
}
// 修复后的代码
async function newGetDialogs(options = {}) {
try {
const params = {
offsetDate: options.offsetDate || 0,
offsetId: options.offsetId || 0,
offsetPeer: options.offsetPeer || new Api.InputPeerEmpty(),
limit: options.limit || 100,
hash: options.hash || 0,
excludePinned: options.excludePinned || false,
folderId: options.folderId || undefined
};
// 移除undefined参数
Object.keys(params).forEach(key => {
if (params[key] === undefined) {
delete params[key];
}
});
console.log('新版本参数:', params);
return params;
} catch (error) {
console.error('新版本错误:', error.message);
throw error;
}
}
// 测试
console.log('=== 测试getDialogs修复 ===\n');
console.log('1. 旧版本(有错误):');
try {
const oldParams = oldGetDialogs();
console.log('✗ 旧版本会导致错误offsetPeer是字符串而不是InputPeer对象\n');
} catch (error) {
console.log('✗ 错误:', error.message, '\n');
}
console.log('2. 新版本(已修复):');
try {
const newParams = newGetDialogs({ limit: 50 });
console.log('✓ 新版本使用正确的InputPeerEmpty对象');
console.log('✓ 自动移除了undefined的folderId参数');
console.log('✓ 使用合理的默认值offsetDate: 0, offsetId: 0\n');
} catch (error) {
console.log('✗ 错误:', error.message, '\n');
}
console.log('3. 主要修复内容:');
console.log(' - offsetPeer: "username" → new Api.InputPeerEmpty()');
console.log(' - offsetDate: 43 → 0 (合理默认值)');
console.log(' - offsetId: 43 → 0 (合理默认值)');
console.log(' - folderId: 43 → undefined (并自动移除)');
console.log(' - 支持动态参数传入');
console.log('\n✅ 修复完成getDialogs方法现在应该能正常工作了。');