Una herramienta para transmitir mensajes automáticamente a múltiples grupos de chat

Overview

chat-broadcast

Una herramienta para transmitir mensajes automáticamente a múltiples grupos de chat

Setup

Librerías

Necesitas Python 3 con la librería python-dotenv instalada. Para instalarla basta con ejecutar:

pip3 install -r requirements.txt

Matterbridge

Descargar ejecutable

Debes descargar el ejecutable de matterbrigde (preferentemente versión 1.32.2) correspondiente a tu sistema operativo. Puedes buscarlo aquí.

Configuración

Tanto en el archivo basefile.toml como en searchgroups.toml debes ingresar el número de teléfono a utilizar en la línea 4. Te debe quedar algo de la forma:

Number="+56912345678"

Ejecuta una vez el archivo descargado en el paso anterior con los siguientes argumentos:

./[EXECUTABLE_FILENAME] -conf searchgroups.toml

Donde [EXECUTABLE_FILENAME] corresponde al nombre del archivo ejecutable. Por ejemplo, matterbridge-1.23.2-linux-64bit.

Esto te entregará varias cosas, entre ellas una lista de ids de grupos de WhatsApp con la forma [email protected]. Elige el id correspondiente al grupo destinado al envío de mensajes (wid_input) y guardalo en alguna parte, lo necesitarás más adelante.

Env file

Debes crear un archivo de nombre .env en la raíz del repositorio. Este archivo debe contener:

EXECUTABLE=matterbridge-1.23.2-linux-64bit
[email protected]

Siendo el primer valor el nombre del ejecutable correspondiente a tu sistema operativo y el segundo valor el id del grupo destinado al envío de mensajes.

Ejecución

Con todo lo anterior ya configurado, solo debes ejecutar:

python3 main.py

Referencias

  • Para más información sobre el funcionamiento de matterbridge, puedes revisar su documentación.
Comments
  • Fix KeyboardInterrupt handling

    Fix KeyboardInterrupt handling

    Esta PR soluciona un pequeño error en las notificaciones por Telegram.

    Al correr el programa como daemon consystemctl todo funciona correctamente, dado que el término del programa se indica por medio de señales.

    Sin embargo, cuando se ejecuta directamente en la terminal el programa y es necesario detenerlo con Ctrl+C, nunca se enviaba la notificación final de detención. Este problema es solucionado con un try/except.

    opened by fguinez 0
  • Loop

    Loop

    Esta PR transforma el anterior main.py en un módulo secundario renombrado generator.py

    El nuevo main.py es un módulo que asume que ya existe un archivo matterbridge.toml a utilizar y lo ejecuta indefinidamente en loop. Cuando matterbridge se detiene (generalmente por errores internos en el uso de punteros, el programa espera 10 minutos y reanuda con una nueva ejecución).

    Adicionalmente, se añade la posibilidad de notificar los cambios de estado por medio de Telegram. En específico se notifica:

    • El inicio de una ejecución
    • La ocurrencia de un error y la posterior espera de 10 minutos para reanudar
    • La detención definitiva del programa
    opened by fguinez 0
  • Filters

    Filters

    Este PR añade funcionalidades que permiten filtrar los grupos que deseamos agregar.

    Previamente siempre se agregaban todos los grupos en los que el Bot forma parte. Eso sigue siendo el comportamiento por defecto, pero ahora se puede filtrar este conjunto de dos formas:

    1. Por medio de un parámetro opcional -n, con el cual podemos ingresar una palabra clave común en los grupos de interés. Por ejemplo:

      python3 main.py -n"natación"
      

      Solo añadirá grupos con nombres como: "natación los jueves", "Club de natación", etc.

    2. Por medio de una lista negra. Podemos crear un archivo en el directorio raíz de nombre blacklist.txt que incluya en cada línea un ID de WhatsApp que queramos excluir en cualquier caso.

    La exclusión de la segunda alternativa prima sobre la inclusión de la primera.

    enhancement 
    opened by fguinez 0
  • Actualización de grupos

    Actualización de grupos

    Este PR es bien simple, solo define que la lista de grupos que reciben mensajes se actualiza solo 1 vez al día y siempre a las 4AM. Se definió esta hora porque es donde menor importa que ocurra la interrupción que conlleva actualizar la lista, dado que es muy improbable que usemos la herramienta a las 4 de la mañana.

    Adicionalemente, aproveché de agregar algo de feedback sobre qué en qué día ocurrió cada log.

    Esto resuelve parcialmente la issue #1.

    opened by fguinez 0
  • Posibilidad de mejora de motor base hacia Ferdi

    Posibilidad de mejora de motor base hacia Ferdi

    label:question Posibilidad de mejora de motor base hacia Ferdi

    Estuve explorando hace poco unas integraciones y me encontré con (Ferdi, y pensé que podía ser una solución a los problemas conceptuales que tuvo0 estew proyecto.

    En caso de que necesitemos realizar otras actividades, podría ser de ayuda.

    Espero comentarios, saludos.

    opened by ngeorger 0
  • Disminuir velocidad de envío

    Disminuir velocidad de envío

    Esta tarea implica una modificación del código fuente de matterbridge para que exista un intervalo de tiempo entre cada envío.

    Contexto

    Originalmente matterbridge está pensado para chatear en tiempo real desde 2 o más chats diferentes. Cuando conectas muchos chats de esta forma, WhatsApp lo detecta como spam y nos impide seguir enviando mensajes, por lo que no es viable enviar un mensaje así a un grann número de grupos (estimo que 40 grupos es el límite).

    Pero a nosotros no nos interesa que el envío sea en tiempo real. Nuestro interés es que los mensajes lleguen a múltiples grupos en un plazo razonable (máximo un par de horas), por lo que no importa realmente que el mensaje llegue de forma diferida. Esto abre la posibilidad para solucionar el problema realizando un mod de matterbridge.

    Posible solución

    General

    Una solución sería:

    1. Clonar matterbridge
    2. Modificar el código para añadir un delay entre un envío y otro
    3. Recompilar el archivo binario (al menos a mi me interesan las versiones para linux-armv6 y darwin-64bit)

    Detalle modificación

    Esto es solo una recopilación de lo que tengo en mente según mis nulos conocimientos de Go, muy seguramente se les ocurre algo mejor.

    1. Añadir un sleep en alguna parte del código que se ejecute una vez por envío. Por ejemplo, creo que en esta función serviría.

      Seguramente existe algún loop que realice el reenvío del mensaje a todos los grupos (ahí sería un mejor lugar para el sleep), pero no he podido dar con él.

      Al menos por lo que cacho de Go, no encontré ninguna rutina en el código, por lo que este sleep no debería complicarse en ese aspecto.

    2. (Opcional) Añadir un parámetro en el ejecutable que permita especificar el delay entre envíos en segundos. De no implementarse esta opción, un delay de 10 a 15 segundos harcodeado debería servirnos.

    Dudas

    Quedo atento a cualquier duda sobre el funcionamiento de matterbridge o de nuestro repo.

    help wanted 
    opened by fguinez 0
  • Alta disponbilidad

    Alta disponbilidad

    De momento no he encontrado una forma de actualizar la lista de grupos que reciben mensajes sin pausar momentáneamente el funcionamiento de matterbridge.

    • Actualmente funciona corriendo matterbridge con un timeout de 1 hora, para luego general una lista actualizada de los grupos y volver a correr matterbridge con el mismo timeout. Esto genera que, cada 1 hora, el servicio se ve interrumpido por unos segundos.
    • Posibles soluciones:
      1. Descubrir cómo actualizar la lista de grupos en ejecución para no interrumpir el servicio (no tengo la menor idea).
      2. Aumentar el timeout. Esto disminuiría la cantidad de interrupciones, pero tardaría más en integrar grupos nuevos a la lista.
      3. Ajustar interrupción a una hora conocida. Esto se puede realizar con datetime, calculando en cada iteración el timeout necesario para que la interrupción ocurra a una hora conocida. Por ejemplo, planificar una interrupción al comienzo de las horas impares (3:00, 5:00, 7:00, etc.).

    Hasta ahora, lo que me parece más realizable es implementar una mezcla de las soluciones (ii) y (iii), definiendo que la lista se actualice en un horario predefinido con reducidad opciones. Por ejemplo: 00:00, 6:00, 12:00, 18:00

    enhancement 
    opened by fguinez 6
Owner
Seguimos
Teclados contra el fascismo
Seguimos
Herramienta para transferir eventos de Sucuri WAF hacia Azure Blob Storage.

Transfiere eventos de Sucuri hacia Azure Blob Storage Script para transferir eventos del Sucuri Web Application Firewall (WAF) hacia Azure Blob Storag

CSIRT-RD 1 Dec 22, 2021
Herramienta para transferir eventos de Sucuri WAF hacia Azure Monitor Log Analytics.

Transfiere eventos de Sucuri hacia Azure LogAnalytics Script para transferir eventos del Sucuri Web Application Firewall (WAF) hacia Azure LogAnalytic

CSIRT-RD 1 Dec 22, 2021
Herramienta para transferir eventos de Sucuri WAF hacia Azure Data Tables.

Transfiere eventos de Sucuri hacia Azure Data Tables Script para transferir eventos del Sucuri Web Application Firewall (WAF) hacia Azure Data Tables,

CSIRT-RD 1 Dec 22, 2021
Buscar y descargar canciones de YouTube automáticamente desde la web

?? DescargarCanciones ?? Buscar y descargar canciones o playlist de Spotify o YouTube automáticamente con todos los metadatos de la canciones en forma

null 1 Dec 20, 2021
Bot para automatizacao de registros no Vacivida para o COVID19

VACIBOT v.06 - Bot para automatizacao de registros no Vacivida para o COVID19 by Victor Fragoso - Prefeitura Municipal de Santo André Email: vfragoso@

Prefeitura de Santo André 22 Sep 19, 2022
Um bot para contar quantas vezes o meu amigo troca de pfp/nick/tag essas coisas ae pq aquele mlk n para quieto

EkiBot Um bot que tem apenas as suas funções de audit log com as PFP's (avatares) dos usuários Pode ser usado para um usuário em específico, ou até me

Samuel 3 Aug 11, 2021
📢 Video Chat Stream Telegram Bot. Can ⏳ Stream Live Videos, Radios, YouTube Videos & Telegram Video Files On Your Video Chat Of Channels & Groups !

Telegram Video Chat Bot (Beta) ?? Video Chat Stream Telegram Bot ?? Can Stream Live Videos, Radios, YouTube Videos & Telegram Video Files On Your Vide

brut✘⁶⁹ // ユスフ 15 Dec 24, 2022
livestream-chat: Overlay para chats de livestreams

livestream-chat Overlay para chats de livestreams. Inicialmente para rodar dentro do browser do obs-studio. TODO: Issues iniciais Suporte a API do You

Eduardo Mendes 10 Dec 16, 2022
Telegram Voice Chat Music Player UserBot Written with Pyrogram Smart Plugin and tgcalls

Telegram Voice Chat UserBot A Telegram UserBot to Play Audio in Voice Chats. This is also the source code of the userbot which is being used for playi

Dash Eclipse 7 May 21, 2022
Telegram Voice Chat UserBot made with Pyrogram and MarshalX/tgcalls with playlist and Heroku support

Telegram Voice Chat UserBot A Telegram UserBot to Play Audio in Voice Chats. This is also the source code of the userbot which is being used for playi

Calls Music 164 Nov 12, 2022
A tool for exporting Telegram group chats into static websites, preserving chat history like mailing list archives.

tg-archive is a tool for exporting Telegram group chats into static websites, preserving chat history like mailing list archives. Preview The @fossuni

Kailash Nadh 400 Dec 27, 2022
A simple Telegram bot that converts a phone number to a direct whatsapp chat link

Open in WhatsApp I was using a great app to open a whatsapp chat with a given number directly without saving that number in my contact list, but I fel

Pathfinder 19 Dec 24, 2022
A Bot to get RealTime Tweets to a Specific Chats from Desired Persons on Twitter to Telegram Chat.

TgTwitterStreamer A Bot to get RealTime Tweets to a Specific Chats from Desired Persons on Twitter to Telegram Chat. For Getting ENV's Refer this Link

Anonymous 69 Dec 20, 2022
Script que envia e-mails de denúncia para desativar número de WhatsApp.

SpamReport (Alpha) Este script foi feito apenas para uso educacional, não me responsabilizo por qualquer uso indevido. Version: 1.0 Alpha Ative essa o

Kiny-Kiny 83 Dec 20, 2022
Minimal telegram voice chat music bot, in pyrogram.

VCBOT Fully working VC (user)Bot, based on py-tgcalls and py-tgcalls-wrapper with minimal features. Deploying To heroku: Local machine/VPS: git clone

Aditya 33 Nov 12, 2022
A bot that connects your guild chat to a Discord channel, written in Python.

Guild Chat Bot A bot that connects your guild chat to a discord channel. Uses discord.py and pyCraft Deploy on Railway Railway is a cloud development

Evernote 10 Sep 25, 2022
Telegram Radio - A User-bot who continuously play random audio files (from the famous telegram music channel @mveargasm) in the intended voice chat.

MvEargasmDJ: This is my submission for the Telegram Radio Project of Baivaru. Which required a userbot to continiously play random audio files from th

eyaadh 24 Nov 12, 2022
Estudo de como criar uma api para o gerenciamento de livros usando a django restframework

Boa parte do projeto foi beaseado nesse vídeo e nesse artigo. Se assim como eu, você entrou agora no mundo BackEnd, recomendo fortemente tais materiai

Michel Ledig 14 Jun 28, 2022
veez music bot is a telegram music bot project, allow you to play music on voice chat group telegram.

?? Veez Music Bot Music bot for playing music on telegram voice chat group. Requirements ?? FFmpeg NodeJS nodesource.com Python 3.7+ PyTgCalls ?? Get

levina 143 Jun 19, 2022