كما كتبت روبوت للمدرسة د / ض وتغيير قاعدة البيانات

مرحبا أيها المواطنون خابروفسك!
سأحاول اليوم أن أخبرك كيف يمكن للطالب كتابة روبوت لتخزين الواجبات المنزلية لـ VK.
بعناية
سألفت الانتباه على الفور إلى حقيقة أنه من المستحيل بناء مشاريع بنية أساسية مثل هذه للمشروعات الجادة ، حيث تم إنشاء هذا المشروع بالكامل فقط للترفيه والوقت ، وللعروض التقديمية في جميع أنواع مؤتمرات المشاريع المدرسية.

تعليق
11/17/2019 15:55
لقد كتبوا إلي في رسائل خاصة أنه خلال المقالة ، ليس من الواضح نوع الواجب المنزلي الذي يتحدثون عنه.
سأوضح على الفور أن جميع المهام التي أتحدث عنها في المقال تم ملؤها كما في مذكرات عادية ، والمهام القديمة "تختفي".
هذه هي الطريقة التي يتلقى بها المستخدم تلك المهام التي سيتعين عليه القيام بها.


تمت كتابة bot في PHP ، ومن أجل التجربة ، قررت تلقي تحديثات لا تستخدم Webhooks API CallBack ، ولكن باستخدام LongPoll.

بسبب حقيقة أنني لم أكتب روبوتات باستخدام طريقة تلقي التحديثات هذه ، فقد تعذبتني شكوك غامضة حول ما إذا كان بإمكاني كتابة هذا الروبوت في PHP ، ولكن في النهاية تم حل كل شيء. الآن سأنتقل إلى كيفية نشوء أفكاري وكيف نفذتها.

الأولى ، بشكل عام ، كانت فكرة كتابة روبوت لتخزين الواجبات المنزلية فيه. حسنا ، كيف تخزن. شيء مثل الملاحظات ، ولكن داخل VK ، حيث نادراً ما أذهب إلى الملاحظات ، وأنها ليست مريحة للغاية بالنسبة لي.

من أجل تنفيذ روبوت عادي مع الواجبات المنزلية ، قمت بإنشاء جدول واحد في قاعدة البيانات ، حيث تم تعيين اسم العنصر ، والواجب المنزلي نفسه وعدد كل هذه السعادة. هذا ليس مثيرًا للاهتمام لوصفه ، لذا سأحذف هذه النقطة ، لكنني سأقدم مخططًا تخطيطيًا قويًا لكيفية نظرت قاعدة البيانات إلى البداية.

صورة

ثم فكرت ، لماذا لا تمنح الآخرين فرصة لاستخدام الروبوت. حسنًا ، أعطى الناس هذه الفرصة. لقد غيرت قاعدة البيانات قليلاً ، لكن الجدول الذي يدور حوله كل هذا لم يتغير تقريبًا.

صورة

من مخطط ER ، يمكنك فهم أن كل مستخدم ينتمي إلى مجموعة. يتم تنفيذ الدخول إلى مجموعة حالية بواسطة الرمز المميز ، ويتم إنشاء رمز فريد لكل مجموعة جديدة. وتنتمي المهام نفسها أيضًا إلى مجموعة أو أخرى ، بحيث لا يرى المستخدمون فوضى من مهامهم ومهام الآخرين.

أضفت الكود ، لا يوجد شيء مثير للاهتمام هنا سواء ، من حيث المبدأ ، لا. لقد قمت بذلك حتى لا تظهر المهام القديمة ، حتى لا يتم حذف كل شيء يدويًا ، لكنني أعتقد أن كتابة استعلام SELECT في SQL أمر بسيط للغاية.

والآن حان الوقت للتسلية: لقد بدأت بإضافة وظائف من شأنها أن تبطئ قائمة انتظار الرسائل ككل ، لذلك قررت أن أضعها في نصوص منفصلة ، حيث لا يمكنني أن أقوم بتحديث متعدد في الوقت الحالي ، لكنني اخترت LongPoll. (وهل هناك أي استخدام لـ PHP؟)

وهذه الوظائف: إرسال رسائل إلى جميع أعضاء المجموعة وإنشاء رموز QR التي يتم فيها تشفير المفتاح للانضمام إلى المجموعة.

للقيام بذلك ، قمت للتو بإنشاء جدول آخر في قاعدة البيانات ، حيث أقوم بإدخال النص البريدي ولمن يهدف إليه. أخذت القاعدة في النهاية على هذا النموذج.

صورة

ويتم إنشاء رموز QR بشكل عام في عملية منفصلة ، والتي تتلقى أيضًا تحديثات من VK حول الرسائل الصادرة ، وتبحث في الرسالة التي تحتوي على مفتاح المجموعة.

حتى الآن ، يبدو كل شيء أكثر أو أقل كفاية ، ولكن بعد ذلك ذهبت لكسر النموذج العلائقي من خلال وضع JSON في قاعدة البيانات.

أي نوع من JSON يمكنني وضعه في قاعدة البيانات؟ أقوم بإدخال معلمة المرفقات ، والتي أتلقاها من VK ، ثم أعالجها عند إرسال الرسائل ، حتى لا يتم تحميل العملية الرئيسية.

نتيجة لذلك ، يبدو الأمر برمته.

صورة

حول نفس الطريقة ، ثم أضفت ملف مرفق إلى المهام في الروبوت. تتم إضافة المهمة على الفور ، ويتم إرفاق الملفات تدريجيًا إذا كانت تناسب الشكل وتتناسب مع حجم Telegram Bot Api. أقوم بتحميل الملفات إلى Telegram من خلال مجموعة من برامج الروبوت وحفظ معرف الملف.

أقوم بتخزين الملفات في Telegram نظرًا لحقيقة أن الخادم الذي أحافظ عليه كل هذا لا يحتوي على مساحة كبيرة ، والتوسع بالنسبة لي صعب جدًا من الناحية المالية.

بدأت قاعدة البيانات بأكملها لتبدو هكذا:

صورة

لكن لدي الآن مهمة: كيف سأعيد الملفات إلى المستخدمين؟ ثم قدمت نفس المنطق تقريبًا كما هو الحال مع إضافة الملفات.

صورة

ثم تمت إضافة روبوت آخر للعربة ، لكنني لن أصفها بعد.

في الأساس ، أعتقد أن بنية قاعدة البيانات ليست سيئة ، لكنني لا أحب شيئًا هنا. ربما سيكون من المفيد لبعض القادمين الجدد رؤية كيف يمكنك تصميم هيكل قاعدة البيانات في سياق تطوير الفكرة ، وسيكون من المثير للاهتمام بالنسبة لي أن أستمع للنقد على تنظيم قاعدتي وأن تأخذ شيئًا ما في الخدمة.

المقال صغير ، لكنه يمكن أن يهدئ النقد.
كلاتس 1
"كامل حتى الساعة 5 مساءً على مكتبي!"
سأنشر جميع شفرات المصدر الخاصة بـ bot على بوابة git بعد الدفاع عن المشروع ، وليس من الخطيئة كتابة مقال.

كلاتس 2
تم اقتراح بعض الأفكار المتعلقة بالعمل مع الملفات في دردشة Habr في العربة ، وغالبًا ما يمكن رؤيتي هناك.

كلاتس 3
يمكنك كزة الروبوت الحية هنا . سوف أكون سعيدا لردود الفعل.

Source: https://habr.com/ru/post/ar475406/


All Articles