feat(zulip): 添加全面的 Zulip 集成系统
* **新增 Zulip 模块**:包含完整的集成服务,涵盖客户端池(client pool)、会话管理及事件处理。 * **新增 WebSocket 网关**:用于处理 Zulip 的实时事件监听与双向通信。 * **新增安全服务**:支持 API 密钥加密存储及凭据的安全管理。 * **新增配置管理服务**:支持配置热加载(hot-reload),实现动态配置更新。 * **新增错误处理与监控服务**:提升系统的可靠性与可观测性。 * **新增消息过滤服务**:用于内容校验及速率限制(流控)。 * **新增流初始化与会话清理服务**:优化资源管理与回收。 * **完善测试覆盖**:包含单元测试及端到端(e2e)集成测试。 * **完善详细文档**:包括 API 参考手册、配置指南及集成概述。 * **新增地图配置系统**:实现游戏地点与 Zulip Stream(频道)及 Topic(话题)的逻辑映射。 * **新增环境变量配置**:涵盖 Zulip 服务器地址、身份验证及监控相关设置。 * **更新 App 模块**:注册并启用新的 Zulip 集成模块。 * **更新 Redis 接口**:以支持增强型的会话管理功能。 * **实现 WebSocket 协议支持**:确保与 Zulip 之间的实时双向通信。
This commit is contained in:
85
docs/systems/zulip/quick_tests/test-list-subscriptions.js
Normal file
85
docs/systems/zulip/quick_tests/test-list-subscriptions.js
Normal file
@@ -0,0 +1,85 @@
|
||||
const zulip = require('zulip-js');
|
||||
|
||||
async function listSubscriptions() {
|
||||
console.log('🔧 检查用户订阅的 Streams...');
|
||||
|
||||
const config = {
|
||||
username: 'angjustinl@mail.angforever.top',
|
||||
apiKey: 'lCPWC...pqNfGF8',
|
||||
realm: 'https://zulip.xinghangee.icu/'
|
||||
};
|
||||
|
||||
try {
|
||||
const client = await zulip(config);
|
||||
|
||||
// 获取用户信息
|
||||
console.log('\n👤 获取用户信息...');
|
||||
const profile = await client.users.me.getProfile();
|
||||
console.log('用户:', profile.full_name, `(${profile.email})`);
|
||||
console.log('是否管理员:', profile.is_admin);
|
||||
|
||||
// 获取用户订阅的 Streams
|
||||
console.log('\n📋 获取用户订阅的 Streams...');
|
||||
const subscriptions = await client.streams.subscriptions.retrieve();
|
||||
|
||||
if (subscriptions.result === 'success') {
|
||||
console.log(`\n✅ 找到 ${subscriptions.subscriptions.length} 个订阅的 Streams:`);
|
||||
subscriptions.subscriptions.forEach(sub => {
|
||||
console.log(` - ${sub.name} (ID: ${sub.stream_id})`);
|
||||
});
|
||||
|
||||
// 检查是否有 "Novice Village"
|
||||
const noviceVillage = subscriptions.subscriptions.find(s => s.name === 'Novice Village');
|
||||
if (noviceVillage) {
|
||||
console.log('\n✅ "Novice Village" Stream 已存在!');
|
||||
|
||||
// 测试发送消息
|
||||
console.log('\n📤 测试发送消息...');
|
||||
const result = await client.messages.send({
|
||||
type: 'stream',
|
||||
to: 'Novice Village',
|
||||
subject: 'General',
|
||||
content: '测试消息:系统集成测试成功 🎮'
|
||||
});
|
||||
|
||||
if (result.result === 'success') {
|
||||
console.log('✅ 消息发送成功! Message ID:', result.id);
|
||||
} else {
|
||||
console.log('❌ 消息发送失败:', result.msg);
|
||||
}
|
||||
} else {
|
||||
console.log('\n⚠️ "Novice Village" Stream 不存在');
|
||||
console.log('💡 请在 Zulip 网页界面手动创建该 Stream,或使用管理员账号创建');
|
||||
|
||||
// 尝试发送到第一个可用的 Stream
|
||||
if (subscriptions.subscriptions.length > 0) {
|
||||
const firstStream = subscriptions.subscriptions[0];
|
||||
console.log(`\n📤 尝试发送消息到 "${firstStream.name}"...`);
|
||||
const result = await client.messages.send({
|
||||
type: 'stream',
|
||||
to: firstStream.name,
|
||||
subject: 'Test',
|
||||
content: '测试消息:验证系统可以发送消息 🎮'
|
||||
});
|
||||
|
||||
if (result.result === 'success') {
|
||||
console.log('✅ 消息发送成功! Message ID:', result.id);
|
||||
console.log(`💡 系统工作正常,只需创建 "Novice Village" Stream 即可`);
|
||||
} else {
|
||||
console.log('❌ 消息发送失败:', result.msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('❌ 获取订阅失败:', subscriptions.msg);
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.error('\n❌ 操作失败:', error.message);
|
||||
if (error.response) {
|
||||
console.error('响应数据:', error.response.data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
listSubscriptions();
|
||||
Reference in New Issue
Block a user