بوت تليجرام مكتوب بلغة بايثون لعرض المواد العلمية لبعض الشيوخ بطريقة منظمة وسهلة التعديل للمشرفين على البوت.
- عرض سلاسل الدروس العلمية مهما كان عددها بطريقة منظمة ومقسمة إلى صفحات تشبه نتائج محركات البحث.
- عرض محتوى كل سلسلة بنفس الطريقة، مع أزرار لإرسال النسخ الصوتية والمرئية وتفريغات وتلخيصات الدروس.
- البحث عن السلاسل العلمية.
- التواصل مع المشرفين.
- إرسال مواد لمشرفي البوت.
- الوصول السريع لوظائف البوت عن طريق لوحة مفاتيح أزرار.
- الرد على المستخدمين بالرد على رسائلهم داخل مجموعة استلام الرسائل.
- إحصائيات مستخدمي البوت وأكثر السلاسل والدروس طلبا (للمشرفين فقط). [
/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.
- ادخل إلى صفحة إعداد الصلاحيات، وأضف حساب خدمة جديد بصلاحيات القراءة فقط "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 install
pip install .
يستخدم البوت قاعدة بيانات sqlite. تحقق من أنها مثبتة بنظامك.
استخدم اﻷمر التالي لبدء البوت
python3 -m droos_bot
يستخدم البوت:
ومكتبات بايثون: