Escrevendo um plugin de alerta de telegrama chrome



O problema, camaradas!

Crianças (~ 10 anos) mudaram para o ensino a distância, sentaram-se em salas com computadores e não conseguem se concentrar nas aulas!

Eles são adicionados às famílias do google , à família microsoft , o tempo no computador é limitado e os sites adultos são removidos por meio de opendns . Mas exatamente isso - e mesmo durante a conferência de zoom da lição, a criança começa a assistir ao youtube. E então o professor faz a lição de casa - para assistir ao vídeo e escrever um ensaio. E o vídeo também está no youtube. A moderação manual é indispensável.

Sob o gato, escrevemos um pendal mágico, ou seja, um plug-in chrome, que envia todos os sites abertos em telegrama a um pai malvado que trabalha na sala ao lado.

Robô


Primeiro, criaremos um bot de telegrama e um canal para o qual os links chegarão.

  1. Abra o BotFather , escreva / newbot , obtenha o botId (uma combinação de ~ 50 caracteres).
  2. Criamos um novo canal, adicionamos nosso bot como administrador.
  3. Escrevemos algo para o canal, abrimos o link https://api.telegram.org/bot botId / getUpdates , encontramos lá result-> channel_post-> chat-> id.

Como resultado, temos botId e chatId .

Plugar


  1. Nós criamos a pasta, haverá 2 arquivos nela - manifest.json e index.js.
  2. Crie um manifesto de plug-in chrome , para minimizar isso:

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

    Diz aqui que o script index.js será incorporado em qualquer página (corresponde a: todos os URLs).
  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).



Foram gastos 20 minutos, agora você pode passar mais 20 horas, escrever um back-end, configurar a recepção de comandos recebidos (/ mute url, / mute 2h url etc.), adicionar registro, assinaturas mensais pagas, bots de folga e hangouts e, em seguida, obter quaisquer direitos crianças e dados pessoais. Deixo esses prazeres para o leitor, tenho tudo.

All Articles