mirror of
https://github.com/lobehub/lobehub
synced 2026-04-21 09:37:28 +00:00
* ✨ feat: add cross-platform message tool for AI bot channel operations Implement a unified message tool (`lobe-message`) that provides AI with messaging capabilities across Discord, Telegram, Slack, Google Chat, and IRC through a single interface with platform-specific extensions. Core APIs: sendMessage, readMessages, editMessage, deleteMessage, searchMessages, reactToMessage, getReactions, pin/unpin management, channel/member info, thread operations, and polls. Architecture follows the established builtin-tool pattern: - Package: @lobechat/builtin-tool-message (manifest, types, executor, ExecutionRuntime, client components) - Registry: registered in builtin-tools (renders, inspectors, interventions, streamings) - Server runtime: stub service ready for platform adapter integration https://claude.ai/code/session_011sHc6R7V4cSYKere9RY1QM * feat: implement platform specific message service * chore: add wechat platform * chore: update wechat api service * chore: update protocol implementation * chore: optimize platform api test * fix: lark domain error * feat: support bot message cli * chore: refactor adapter to service * chore: optimize bot status fetch * fix: bot status * fix: channel nav ignore * feat: message tool support bot manage * feat: add lobe-message runtime * feat: support direct message * feat: add history limit * chore: update const limit * feat: optimize server id message history limit * chore: optimize system role & inject platform environment info * chore: update readMessages vibe * fix: form body width 50% * chore: optimize tool prompt * chore: update i18n files * chore: optimize read message system role and update bot message lh * updage readMessage api rate limit * chore: comatible for readMessages * fix: feishu readMessage implementation error * fix: test case * chore: update i18n files * fix: lint error * chore: add timeout for conversaction case * fix: message test case * fix: vite gzip error --------- Co-authored-by: Claude <noreply@anthropic.com>
121 lines
11 KiB
JSON
121 lines
11 KiB
JSON
{
|
|
"channel.appSecret": "سر التطبيق",
|
|
"channel.appSecretHint": "سر التطبيق لتطبيق الروبوت الخاص بك. سيتم تشفيره وتخزينه بأمان.",
|
|
"channel.appSecretPlaceholder": "الصق سر التطبيق هنا",
|
|
"channel.applicationId": "معرف التطبيق / اسم المستخدم للبوت",
|
|
"channel.applicationIdHint": "معرف فريد لتطبيق البوت الخاص بك.",
|
|
"channel.applicationIdPlaceholder": "مثال: 1234567890",
|
|
"channel.botToken": "رمز البوت / مفتاح API",
|
|
"channel.botTokenEncryptedHint": "سيتم تشفير الرمز وتخزينه بأمان.",
|
|
"channel.botTokenHowToGet": "كيف تحصل عليه؟",
|
|
"channel.botTokenPlaceholderExisting": "الرمز مخفي لأسباب أمنية",
|
|
"channel.botTokenPlaceholderNew": "الصق رمز البوت هنا",
|
|
"channel.charLimit": "حد الأحرف",
|
|
"channel.charLimitHint": "الحد الأقصى لعدد الأحرف لكل رسالة",
|
|
"channel.concurrency": "وضع التزامن",
|
|
"channel.concurrencyDebounce": "إزالة الارتداد",
|
|
"channel.concurrencyHint": "يقوم الوضع التتابعي بمعالجة الرسائل واحدة تلو الأخرى؛ بينما ينتظر وضع إزالة الارتداد انتهاء دفعة الرسائل قبل المعالجة",
|
|
"channel.concurrencyQueue": "قائمة الانتظار",
|
|
"channel.connectFailed": "فشل اتصال الروبوت",
|
|
"channel.connectQueued": "تم وضع اتصال الروبوت في قائمة الانتظار. سيبدأ قريبًا.",
|
|
"channel.connectStarting": "الروبوت قيد التشغيل. يرجى الانتظار لحظة.",
|
|
"channel.connectSuccess": "تم الاتصال بالروبوت بنجاح",
|
|
"channel.connecting": "جارٍ الاتصال...",
|
|
"channel.connectionConfig": "إعدادات الاتصال",
|
|
"channel.copied": "تم النسخ إلى الحافظة",
|
|
"channel.copy": "نسخ",
|
|
"channel.credentials": "بيانات الاعتماد",
|
|
"channel.debounceMs": "نافذة دمج الرسائل (مللي ثانية)",
|
|
"channel.debounceMsHint": "مدة الانتظار للرسائل الإضافية قبل إرسالها إلى الوكيل (مللي ثانية)",
|
|
"channel.deleteAllChannels": "إزالة جميع القنوات",
|
|
"channel.deleteAllConfirm": "هل أنت متأكد أنك تريد إزالة جميع القنوات؟",
|
|
"channel.deleteAllConfirmDesc": "سيؤدي هذا الإجراء إلى إزالة جميع قنوات الرسائل وتكويناتها لهذا الوكيل بشكل دائم. لا يمكن التراجع عن هذا.",
|
|
"channel.deleteAllFailed": "فشل في إزالة جميع القنوات",
|
|
"channel.deleteAllSuccess": "تمت إزالة جميع القنوات",
|
|
"channel.deleteConfirm": "هل أنت متأكد أنك تريد إزالة هذه القناة؟",
|
|
"channel.deleteConfirmDesc": "سيؤدي هذا الإجراء إلى إزالة قناة الرسائل وتكوينها بشكل دائم. لا يمكن التراجع عن ذلك.",
|
|
"channel.devWebhookProxyUrl": "عنوان URL لنفق HTTPS",
|
|
"channel.devWebhookProxyUrlHint": "اختياري. عنوان URL لنفق HTTPS لإعادة توجيه طلبات الويب هوك إلى خادم التطوير المحلي.",
|
|
"channel.disabled": "معطل",
|
|
"channel.discord.description": "قم بتوصيل هذا المساعد بخادم Discord للدردشة في القنوات والرسائل المباشرة.",
|
|
"channel.dm": "الرسائل المباشرة",
|
|
"channel.dmEnabled": "تمكين الرسائل المباشرة",
|
|
"channel.dmEnabledHint": "السماح للروبوت بتلقي الرسائل المباشرة والرد عليها",
|
|
"channel.dmPolicy": "سياسة الرسائل المباشرة",
|
|
"channel.dmPolicyAllowlist": "القائمة المسموح بها",
|
|
"channel.dmPolicyDisabled": "معطل",
|
|
"channel.dmPolicyHint": "التحكم في من يمكنه إرسال الرسائل المباشرة إلى الروبوت",
|
|
"channel.dmPolicyOpen": "مفتوح",
|
|
"channel.documentation": "التوثيق",
|
|
"channel.enabled": "مفعّل",
|
|
"channel.encryptKey": "مفتاح التشفير",
|
|
"channel.encryptKeyHint": "اختياري. يُستخدم لفك تشفير حمولة الأحداث المشفرة.",
|
|
"channel.encryptKeyPlaceholder": "مفتاح التشفير الاختياري",
|
|
"channel.endpointUrl": "عنوان URL للويب هوك",
|
|
"channel.endpointUrlHint": "يرجى نسخ هذا العنوان ولصقه في الحقل <bold>{{fieldName}}</bold> في بوابة مطوري {{name}}.",
|
|
"channel.exportConfig": "تصدير التكوين",
|
|
"channel.feishu.description": "قم بتوصيل هذا المساعد بـ Feishu للدردشة الخاصة والجماعية.",
|
|
"channel.historyLimit": "حد رسائل السجل",
|
|
"channel.historyLimitHint": "العدد الافتراضي للرسائل التي يتم جلبها عند قراءة سجل القناة",
|
|
"channel.importConfig": "استيراد التكوين",
|
|
"channel.importFailed": "فشل في استيراد التكوين",
|
|
"channel.importInvalidFormat": "تنسيق ملف التكوين غير صالح",
|
|
"channel.importSuccess": "تم استيراد التكوين بنجاح",
|
|
"channel.lark.description": "قم بتوصيل هذا المساعد بـ Lark للدردشة الخاصة والجماعية.",
|
|
"channel.openPlatform": "منصة مفتوحة",
|
|
"channel.platforms": "المنصات",
|
|
"channel.publicKey": "المفتاح العام",
|
|
"channel.publicKeyHint": "اختياري. يُستخدم للتحقق من طلبات التفاعل من Discord.",
|
|
"channel.publicKeyPlaceholder": "مطلوب للتحقق من التفاعل",
|
|
"channel.qq.appIdHint": "معرّف تطبيق QQ Bot الخاص بك من منصة QQ المفتوحة",
|
|
"channel.qq.description": "قم بتوصيل هذا المساعد بـ QQ للمحادثات الجماعية والرسائل المباشرة.",
|
|
"channel.removeChannel": "إزالة القناة",
|
|
"channel.removeFailed": "فشل في إزالة القناة",
|
|
"channel.removed": "تمت إزالة القناة",
|
|
"channel.runtimeDisconnected": "تم فصل الروبوت",
|
|
"channel.save": "حفظ الإعدادات",
|
|
"channel.saveFailed": "فشل في حفظ الإعدادات",
|
|
"channel.saveFirstWarning": "يرجى حفظ الإعدادات أولاً",
|
|
"channel.saved": "تم حفظ الإعدادات بنجاح",
|
|
"channel.secretToken": "رمز سر الويب هوك",
|
|
"channel.secretTokenHint": "اختياري. يُستخدم للتحقق من طلبات الويب هوك من Telegram.",
|
|
"channel.secretTokenPlaceholder": "السر الاختياري للتحقق من الويب هوك",
|
|
"channel.serverId": "معرف الخادم / النقابة الافتراضي",
|
|
"channel.serverIdHint": "معرف الخادم أو النقابة الافتراضي الخاص بك على هذه المنصة. يستخدمه الذكاء الاصطناعي لإدراج القنوات دون الحاجة للسؤال.",
|
|
"channel.settings": "الإعدادات المتقدمة",
|
|
"channel.settingsResetConfirm": "هل أنت متأكد أنك تريد إعادة تعيين الإعدادات المتقدمة إلى الوضع الافتراضي؟",
|
|
"channel.settingsResetDefault": "إعادة إلى الوضع الافتراضي",
|
|
"channel.setupGuide": "دليل الإعداد",
|
|
"channel.showUsageStats": "عرض إحصائيات الاستخدام",
|
|
"channel.showUsageStatsHint": "عرض استخدام الرموز، التكلفة، وإحصائيات المدة في ردود الروبوت",
|
|
"channel.signingSecret": "سر التوقيع",
|
|
"channel.signingSecretHint": "يُستخدم للتحقق من طلبات الويب هوك.",
|
|
"channel.slack.appIdHint": "معرف تطبيق Slack الخاص بك من لوحة تحكم API Slack (يبدأ بـ A).",
|
|
"channel.slack.description": "قم بتوصيل هذا المساعد بـ Slack للمحادثات القنوية والرسائل المباشرة.",
|
|
"channel.telegram.description": "قم بتوصيل هذا المساعد بـ Telegram للدردشة الخاصة والجماعية.",
|
|
"channel.testConnection": "اختبار الاتصال",
|
|
"channel.testFailed": "فشل اختبار الاتصال",
|
|
"channel.testSuccess": "نجح اختبار الاتصال",
|
|
"channel.updateFailed": "فشل في تحديث الحالة",
|
|
"channel.userId": "معرف المستخدم الخاص بك على المنصة",
|
|
"channel.userIdHint": "معرف المستخدم الخاص بك على هذه المنصة. يمكن للذكاء الاصطناعي استخدامه لإرسال رسائل مباشرة إليك.",
|
|
"channel.validationError": "يرجى ملء معرف التطبيق والرمز",
|
|
"channel.verificationToken": "رمز التحقق",
|
|
"channel.verificationTokenHint": "اختياري. يُستخدم للتحقق من مصدر أحداث الويب هوك.",
|
|
"channel.verificationTokenPlaceholder": "الصق رمز التحقق هنا",
|
|
"channel.wechat.description": "قم بتوصيل هذا المساعد بـ WeChat عبر iLink Bot للمحادثات الخاصة والجماعية.",
|
|
"channel.wechatBotId": "معرّف الروبوت",
|
|
"channel.wechatBotIdHint": "معرّف الروبوت المخصص بعد تفويض رمز الاستجابة السريعة.",
|
|
"channel.wechatConnectedInfo": "حساب WeChat المتصل",
|
|
"channel.wechatManagedCredentials": "تم توصيل هذه القناة بالفعل من خلال تفويض رمز الاستجابة السريعة. يتم إدارة بيانات الاعتماد تلقائيًا.",
|
|
"channel.wechatQrExpired": "انتهت صلاحية رمز الاستجابة السريعة. يرجى التحديث للحصول على رمز جديد.",
|
|
"channel.wechatQrRefresh": "تحديث رمز الاستجابة السريعة",
|
|
"channel.wechatQrScaned": "تم مسح رمز الاستجابة السريعة. يرجى تأكيد تسجيل الدخول في WeChat.",
|
|
"channel.wechatQrWait": "افتح WeChat وقم بمسح رمز الاستجابة السريعة للاتصال.",
|
|
"channel.wechatRebind": "إعادة الربط عبر رمز الاستجابة السريعة",
|
|
"channel.wechatScanTitle": "توصيل روبوت WeChat",
|
|
"channel.wechatScanToConnect": "مسح رمز الاستجابة السريعة للاتصال",
|
|
"channel.wechatTips": "يرجى تحديث تطبيق WeChat إلى أحدث إصدار وإعادة تشغيله. يتم طرح إضافة ClawBot تدريجيًا، لذا تحقق من الإعدادات > الإضافات لتأكيد الوصول.",
|
|
"channel.wechatUserId": "معرّف مستخدم WeChat",
|
|
"channel.wechatUserIdHint": "معرّف حساب WeChat الذي يتم إرجاعه من خلال عملية التفويض."
|
|
}
|