Skip to content

yshalsager/droos_bot

Repository files navigation

بوت الدروس العلمية

Open Source Love made-with-python

PayPal Patreon Liberapay

بوت تليجرام مكتوب بلغة بايثون لعرض المواد العلمية لبعض الشيوخ بطريقة منظمة وسهلة التعديل للمشرفين على البوت.

ميزات البوت

  • عرض سلاسل الدروس العلمية مهما كان عددها بطريقة منظمة ومقسمة إلى صفحات تشبه نتائج محركات البحث.
  • عرض محتوى كل سلسلة بنفس الطريقة، مع أزرار لإرسال النسخ الصوتية والمرئية وتفريغات وتلخيصات الدروس.
  • البحث عن السلاسل العلمية.
  • التواصل مع المشرفين.
  • إرسال مواد لمشرفي البوت.
  • الوصول السريع لوظائف البوت عن طريق لوحة مفاتيح أزرار.
  • الرد على المستخدمين بالرد على رسائلهم داخل مجموعة استلام الرسائل.
  • إحصائيات مستخدمي البوت وأكثر السلاسل والدروس طلبا (للمشرفين فقط). [/stats]
  • إرسال رسالة لكل المشتركين في البوت (للمشرفين فقط). [/broadcast في رد على رسالة]
  • إمكانية إعادة تشغيل البوت لتحميل البيانات مرة أخرى من التليجرام مباشرة (للمشرفين فقط). [/restart]
  • تحديث الكود الخاص بالبوت في حالة استخدام git. [/update]

كيفية استخدام البوت

  • ابدأ البوت عن طريق الضغط على زر start أو البَدْء، ثم استخدم لوحة اﻷزرار لاستخدام وظائف البوت المختلفة مثل "السلاسل العلمية - البحث عن سلسلة - إرسال مواد - التواصل والاقتراحات".

كيفية عمل البوت

البوت يعتمد على Google Sheet يقوم المشرفين والمتطوعين بملئها بالشكل التالي:

slug id series lecture book main video voice text summary
كود السلسلة كود الدرس اسم السلسلة رقم المحاضرة كتاب أهم المحاور مرئي صوتي تفريغ تلخيص
har_nwt har_nwt1 سلسلة دروس تفسير 1 https://t.me/channel/4 https://t.me/channel/4 https://t.me/channel/4 https://t.me/channel/4 https://t.me/channel/4
  • slug: كود السلسلة: معرف فريد لكل سلسلة دروس.
  • id: كود الدرس: يولد تِلْقائيًا من كود السلسلة + رَقَم المحاضرة
  • series: اسم السلسلة: اسم سلسلة الدروس
  • lecture: رقم المحاضرة: رقم الدرس داخل سلسلة الدروس
  • book: الكتاب: رابط تليجرام لملف PDF الكتاب الذي يشرح في السلسلة أو صوت أو فيديو أو مستند به أهم محاور الدرس
  • main: أهم المحاور: رابط تليجرام لصورة أو صوت أو فيديو أو مستند به أهم محاور الدرس
  • video: مرئي: رابط تليجرام لنسخة الفيديو من الدرس
  • voice: صوتي: رابط تليجرام للنسخة الصوتية من الدرس
  • text: تفريغ: رابط تليجرام لمستند تفريغ الدرس
  • summary: تلخيص: رابط تليجرام لمستند ملخص الدرس

ثم يقرأ البوت هذه البيانات ويعرضها مقسمة إلى صفحات، ويرسل المواد مباشرة للمستخدم عن طريق ال id الخاص بكل مِلَفّ دون الحاجة للرفع.

ملاحظة

التحدي الأكبر كان جلب ال id الخاص بالملفات، إذ يبدو أن تليجرام يعين file id مختلف لكل ملف بكل حساب أو بوت.

وحلت المشكلة عن طريق:

  • إضافة وظيفة للبوت تقوم عندما يرسل حساب مشرف البوت ملف إليه سيرد البوت بال file id الخاص بهذا الملف.
  • عمل أداة لأتمتة حساب شخصي، يقرأ روابط الملفات الموجودة على تليجرام من نفس Google Sheet ثم يرسلها للبوت ويقرأ رد البوت ثم يستبدل الرابط بالid داخل Google Sheet، وربط هذه اﻷداة بأمر لتحديث بيانات البوت /update بحيث لا يضطر المشرف على البوت لتشغيل أي أكواد بنفسه.

إعداد البوت (للمطورين)

إعداد حساب خدمة للتعامل مع Google Sheet

  • ادخل إلى منصة جوجل للمطورين وأنشئ مشروعا إن لم يكن لديك واحد، ثم فعل الوصول إلى واجهة برمجة Google Sheet.
  • ادخل إلى صفحة إعداد الصلاحيات، وأضف حساب خدمة جديد بصلاحيات القراءة فقط "viewer".
  • أنشئ مفاتيح للحساب ثم حمل ملف ال JSON إلى مجلد المشروع باسم service_account.json.
  • أضف عناوين حسابات الخدمة إلى Google Sheet التي بها المواد لتتمكن الحسابات من الوصول إليها.

إعداد ملف التهيئة

  • انسخ هذا المستودع.
  • انسخ ملف config.json.example باسم config.json و اكتب المعلومات المطلوبة:
{
  "tg_bot_token": "0000000000:aaaaaaaaaaaaaaaaaaaa",
  "tg_bot_admins": [
    1000001,
    1000002,
    1000003
  ],
  "tg_feedback_chat_id": -10000000000,
  "tg_api_id": "00000",
  "tg_api_hash": "00000000000000000000000000",
  "sheet_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "sheet_name": "sheet",
  "data_columns": {
    "series": "السلاسل العلمية"
  }
}
البيانات معلومات ملاحظات
tg_bot_token التوكن الخاص بواجهة برمجة تليجرام للبوتات إجباري
tg_bot_admins قائمة معرفات مشرفي البوت إجباري
tg_feedback_chat_id معرف المحادثة التي سيرسل لها الملفات ورسائل التواصل مع المشرفين إجباري
tg_api_id معرف واجهة برمجة تليجرام للحساب الشخصي تحتاجه أداة تحويل الروابط فقط
tg_api_hash الهاش الخاص بواجهة برمجة تليجرام للحساب الشخصي تحتاجه أداة تحويل الروابط فقط
sheet_id معرف Google Sheet الخاصة بمواد البوت إجباري
sheet_name اسم Google Sheet التي ستستخدم إجباري
يمكن الاستعانة بهذا النموذج لمعرفة كيفية ملء بيانات المواد

تشغيل البوت

  • استخدم اﻷمر التالي لبدء البوت باستخدام دوكر:
 docker-compose up --build -d

تشغيل البوت دون دوكر

إعتماديات بايثون

  • يحتاج البوت وجود إصدار بايثون 3.9 أو أحدث، وكذلك pip اﻹصدار 19 أو أحدث أو أداة poetry إذا كنت تستخدمها.
التثبيت باستخدام poetry
poetry install
التثبيت باستخدام Pip
pip install .

قاعدة البيانات

يستخدم البوت قاعدة بيانات sqlite. تحقق من أنها مثبتة بنظامك.

تشغيل البوت

استخدم اﻷمر التالي لبدء البوت

python3 -m droos_bot

معلومات تقنية

يستخدم البوت:

ومكتبات بايثون: