كتابة المكوّن الإضافي لتنبيه برقية من الكروم



المشكلة يا رفاق!

تحول الأطفال (~ 10 سنوات) إلى التعلم عن بعد ، وجلسوا في غرف مع أجهزة الكمبيوتر ولا يمكنهم التركيز على الدروس!

تتم إضافتهم إلى عائلات google ، وعائلة Microsoft ، والوقت محدود على الكمبيوتر ، وتتم إزالة مواقع البالغين من خلال opendns . ولكن فقط - وحتى أثناء مؤتمر التكبير في الدرس ، يبدأ الطفل في مشاهدة يوتيوب. ثم يقوم المعلم بواجبه المنزلي - لمشاهدة الفيديو وكتابة مقال. ويوجد الفيديو أيضًا على موقع يوتيوب. الاعتدال اليدوي لا غنى عنه.

تحت القطة ، نكتب بندول سحري ، أي مكون إضافي من الكروم ، يرسل كل موقع مفتوح في برقية إلى والد شرير يعمل في الغرفة المجاورة.

بوت


سنقوم أولاً بإنشاء برنامج برقية وقناة ستصل إليها الروابط.

  1. افتح BotFather ، اكتب / newbot ، احصل على botId (مزيج من 50 حرفًا تقريبًا).
  2. ننشئ قناة جديدة ، نضيف روبوتنا هناك كمسؤول.
  3. نكتب شيئًا إلى القناة ، نفتح الرابط https://api.telegram.org/bot botId / getUpdates ، نجد النتيجة- > channel_post-> chat-> id هناك.

نتيجة لذلك ، لدينا botId و chatId .

توصيل في


  1. نقوم بإنشاء المجلد ، سيكون هناك ملفان فيه - manifest.json و index.js.
  2. أنشئ ملفًا إضافيًا لمتصفح Chrome لتقليل ما يلي:

    {
      "manifest_version": 2,
      "name": "Url Telegram Logger",
      "version": "1.0.0",
      "content_scripts": [
        {
          "matches": [
            "<all_urls>"
          ],
          "js": ["index.js"]
        }
      ]
    }
    

    تقول هنا أنه سيتم تضمين البرنامج النصي index.js في أي صفحة (يطابق: جميع عناوين url).
  3. . SPA, document.location.href. MutationObserver. . , ( , ). ( , ). navigator.sendBeacon:

    const settings = {
      botId: '...',
      chatId: '...',
      userName: 'Matvey',
      pollingInterval: 10000
    }
    
    const mutedUrls = [
      'https://gmail.com',
      'https://www.eduka.lt',
      // .. ,   ..
    ]
    
    const sendMessage = (type, href) => {
      if (mutedUrls.find(url => href.startsWith(url))) { return false }
      const data = new FormData()
      data.append('chat_id', settings.chatId)
      data.append('text', `${settings.userName} ${type} ${document.title} ${href}`)
      navigator.sendBeacon(
        `https://api.telegram.org/bot${settings.botId}/sendMessage`, 
        data
      )
    }
    
    let latestHref = null
    let timeout = 0
    
    const run = () => {
      if (window.location.href !== latestHref) {
        latestHref = window.location.href
        sendMessage('opened', latestHref)
      }
      timeout && clearTimeout(timeout)
      timeout = setTimeout(run, settings.pollingInterval)
    }
    
    window.addEventListener('load', run)
    window.addEventListener('unload', () => sendMessage('closed', latestHref))
    
  4. ( chrome://extensions/, Developer mode, Load unpacked).



تم إنفاق 20 دقيقة ، والآن يمكنك قضاء 20 ساعة أخرى ، وكتابة خلفية ، وتكوين استقبال الأوامر الواردة (/ mute url ، / mute 2h url etc) ، وإضافة التسجيل ، والاشتراكات الشهرية المدفوعة ، والبطولات المتراكمة وجلسات Hangout ، ثم بعد ذلك الحصول على أي حقوق الأطفال والبيانات الشخصية. أترك هذه الملذات للقارئ ، لدي كل شيء.

All Articles