Skip to content
تم إنشاء هذه الصفحة وترجمتها بمساعدة الذكاء الاصطناعي. إذا لاحظت أي أخطاء، لا تتردد في المساهمة في تحسينها. تعديل على GitHub

IRC (آي آر سي) ​

اربط PRX بخوادم Internet Relay Chat (IRC) عبر TLS مع دعم القنوات والرسائل الخاصة وطرق مصادقة متعددة.

المتطلبات المسبقة ​

  • خادم IRC للاتصال (مثل Libera.Chat أو OFTC أو خادم خاص)
  • اسم مستعار (nickname) للبوت
  • خادم IRC يدعم TLS (المنفذ 6697 هو القياسي)

الإعداد السريع ​

1. اختيار الخادم وتسجيل اسم مستعار (اختياري) ​

في الشبكات العامة مثل Libera.Chat، قد ترغب في تسجيل nickname للبوت لدى NickServ:

/msg NickServ REGISTER <password> <email>

2. التهيئة ​

toml
[channels_config.irc]
server = "irc.libera.chat"
port = 6697
nickname = "prx-bot"
channels = ["#my-channel"]
allowed_users = ["mynick", "*"]

مع مصادقة NickServ:

toml
[channels_config.irc]
server = "irc.libera.chat"
port = 6697
nickname = "prx-bot"
channels = ["#my-channel", "#another-channel"]
allowed_users = ["*"]
nickserv_password = "your-nickserv-password"

3. التحقق ​

bash
prx channel doctor irc

مرجع الإعدادات ​

الحقلالنوعالافتراضيالوصف
serverStringrequiredاسم مضيف خادم IRC (مثل "irc.libera.chat")
portu166697منفذ خادم IRC (6697 لـ TLS)
nicknameStringrequiredاسم البوت المستعار على شبكة IRC
usernameStringnicknameاسم مستخدم IRC (يأخذ قيمة nickname افتراضيًا إذا لم يُضبط)
channels[String][]قنوات IRC التي ينضم إليها عند الاتصال (مثل ["#channel1", "#channel2"])
allowed_users[String][]الأسماء المستعارة المسموح بها (غير حساسة لحالة الأحرف). فارغة = رفض الجميع. "*" = السماح للجميع
server_passwordStringnullكلمة مرور الخادم (لـ bouncers مثل ZNC)
nickserv_passwordStringnullكلمة مرور NickServ IDENTIFY لمصادقة nickname
sasl_passwordStringnullكلمة مرور SASL PLAIN لمصادقة IRCv3
verify_tlsbooltrueالتحقق من شهادة TLS الخاصة بالخادم

الميزات ​

  • تشفير TLS -- جميع الاتصالات تستخدم TLS للأمان
  • طرق مصادقة متعددة -- دعم server password وNickServ IDENTIFY وSASL PLAIN (IRCv3)
  • دعم متعدد القنوات -- الانضمام والرد في عدة قنوات بالتزامن
  • دعم القنوات والرسائل الخاصة -- التعامل مع channel PRIVMSG والرسائل المباشرة
  • خرج نصّي عادي -- يتم تكييف الردود تلقائيًا لبيئة IRC (بدون markdown وبدون code fences)
  • تقسيم ذكي للرسائل -- تقسيم الرسائل الطويلة مع مراعاة حدود طول أسطر IRC
  • إبقاء الاتصال حيًا -- الرد على PING واكتشاف الاتصالات الميتة (مهلة قراءة 5 دقائق)
  • معرّفات رسائل أحادية الاتجاه -- ضمان ترتيب فريد للرسائل تحت الضغط العالي

القيود ​

  • IRC يدعم النص العادي فقط؛ markdown وHTML والتنسيقات الغنية غير مدعومة
  • الرسائل مقيّدة بحدود طول أسطر IRC (عادة 512 بايت مع حمل البروتوكول)
  • لا يوجد دعم مدمج لمشاركة الوسائط أو الملفات
  • قد ينقطع الاتصال إذا لم يستلم الخادم ردًا على PING ضمن المهلة
  • بعض شبكات IRC تطبق إجراءات anti-flood قد تحدّ من معدل البوت
  • تغييرات الاسم وإعادة الاتصال بعد انقسامات الشبكة مدعومة لكن قد تسبب انقطاعات قصيرة

استكشاف الأخطاء وإصلاحها ​

تعذر الاتصال بخادم IRC ​

  • تأكد من صحة server وport
  • تأكد أن المنفذ 6697 (TLS) غير محجوب بجدار ناري
  • عند استخدام شهادة self-signed، اضبط verify_tls = false

البوت ينضم للقنوات لكنه لا يرد ​

  • تحقق أن nickname المرسل موجود في allowed_users (مطابقة غير حساسة لحالة الأحرف)
  • اضبط allowed_users = ["*"] للسماح للجميع أثناء الاختبار
  • تأكد أن البوت لديه صلاحية التحدث في القناة (غير مكتوم أو محظور)

فشل مصادقة NickServ ​

  • تأكد أن nickserv_password صحيحة
  • يجب أن يكون nickname للبوت مسجّلًا لدى NickServ قبل التعريف
  • بعض الشبكات تتطلب مصادقة SASL بدل NickServ؛ استخدم sasl_password في هذه الحالة

Released under the Apache-2.0 License.