Skip to content

feat: Agregar sistema de blacklist / powerban #87

@valnssh

Description

@valnssh

Estaría bueno implementar un sistema de powerban con los siguientes comandos accesibles para les codepers:

  1. /powerban: banear a una persona de todos los grupos donde está el bot
  2. /unpowerban: revertir un powerban
  3. /listpowerbanned: listar las personas actualmente powerbaneadas

Al powerbanear a alguien:

  • El bot recorre todos los grupos en los cuales fue aprovado previamente por Rozen y lo banea, llevando la cuenta de dónde falló por falta de permisos para mostrar un registro al final de en qué grupos no pudo banearle
  • Se guarda en la DB la ID de Telegram del usuarie baneade

Habría que modificar el comportamiento del callback al aprobar un grupo, ejecutando los baneos pertinentes de las IDs guardadas en la DB

También, se debería poder powerbanear a alguien respondiendo al mensaje que mandó la persona

Se puede pensar también en un menú/opción de confirmación "¿Estás segure de que querés powerbanear a Pepito?", ídem para el unpowerban

Al despowerbanear a alguien, se hace la función inversa de lo de arriba

Cuando alguien está powerbaneado, puede ser feature que el bot no le responda (a debatir)

Estaría bueno que el control de acceso sea dinámico, usando el chat privado de codepers donde ya está el bot. Opciones:

  • Solo usable en el chat privado de codepers
  • Usable por cualquier persona con permiso de escritura en el grupo de noticias

Otra opción es tener una lista de IDs hardcodeadas, capaz se puede hacer una primera iteración así y luego pasar a un control de acceso dinámico

Dado que el username no es obligatorio en Telegram, la persistencia debe basarse en la ID de usuarie. Alternativas para obtenerla:

  • Que le codeper la ingrese manualmente
  • Explorar si existe alguna API pública para resolver username $\rightarrow$ ID o feature en el framework del bot
  • Alguna lógica no trivial para obtenerla (por ejemplo, capaz, iterar sobre los grupos buscando algo)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions