Git Product home page Git Product logo

cangrebot's Introduction

CangreBot

Bot de la comunidad de Discord de RustLang en Español.

Desarrollo

1. Modificar variables de entorno:

Para que el bot se ejecute tenemos que crear el archivo Secret.toml con sus respectivas variables:

  • DISCORD_TOKEN Token del bot
  • GUILD_ID Id del Servidor
  • BOT_APIKEY Autorizacion para canal cifrado entre el bot y el servidor (Puede contener cualquier texto)

Existe el archivo .env.example que puedes renombrar

2. Instalar shuttle

Recarga automática al guardar un archivo usando shuttle:

Para instalar shuttle deberiamos usar cargo-binstall.

Esto instalara cargo-binstall en nuestro sistema.

  • Para Mac y Linux:
curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
  • Para Windows:
Set-ExecutionPolicy Unrestricted -Scope Process; iex (iwr "https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.ps1").Content

Una vez instalado instalamos shuttle:

cargo binstall cargo-shuttle

Mira Shuttle para más información.

3. Ejecutar el bot

Luego ejecuta el siguiente comando para ejecutar de modo local el bot:

cargo shuttle run

Producción:

Para ejecutar el bot en modo producción debemos ejecutar el siguiente comando:

cargo shuttle deploy

Esto deployara en Shuttle el bot.

Autores

cangrebot's People

Contributors

brayan-724 avatar crawkatt avatar dsolartec avatar kenysdev avatar phosphorus-m avatar sergiomeneses avatar sergioribera avatar shiftrtech avatar stifskere avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

cangrebot's Issues

FAQ detector

Estaria bueno que haya un comando como /faq question:String que permita acceder a respuestas rapidas sobre diferentes cosas. Por ejemplo

/faq question: "Errores" -> Podria retornar un markdown file explicando como compartir los errores en discord para que sea mas facil la ayuda.
/faq question: "Pedir ayuda" -> Podria retornar un markdown file explicando como pedir ayuda correctamente, podria ser mediante un template o algo mas.

Tambien preguntas basicas como /faq question: convertir {T} a {N} y que se detalle como convertir un tipo T a un tipo N, ejemplo {integer} a String.

[BOT] Envio de mensajes en base a fecha y horario

Deberia existir la capacidad que de manera flexible se puedan encolar mensajes a una determinada fecha y hora, quizas se deba explorar la posibilidad de tener otro servicio worker en CloudFlare similar a https://github.com/RustLangES/cfworker-daily-challenge.

Posible Solucion

Hacer un servicio agendado en CF que se ejecute cada hora y valide en una base de datos si existe algun mensaje por enviar, de ser asi entonces procede con la comunicacion con la API del Cangrebot para enviar los mensajes

Casos a contemplar

  • La base de datos que usariamos (tomando en cuenta la cantidad de requests que se harian)
  • Posibilidad de implementar Colas de CloudFlare (queda pendiente a solicitud de CF para el acceso)
  • Analizar la flexibilidad actual de la API del Cangrebot

Help Forum

Estaria bueno que el bot se encargue de un canal de tipo foro que se llame help y que pueda administrarlo de la siguiente forma:
/help new title:String, description:String, image?:Attatchment -> Permitiria crear un foro nuevo. (Esto seria para que el bot cree un formato estandarizado de ayuda para que todos los demas puedan entender de que trata el issue).
/help close -> Cambiaria el tag del forum post a uno que indique que se solucionó el issue, tambien cerraría el post y a su vez lo bloquearía.
/help reopen -> Re abre el post (unicamente moderadores)

Comando: Sugerencias

Descripción

Con este comando se pretende enviar una sugerencia al canal de #sugerencias (ID: 824695624665923594).

Formato

Puede enviarse usando un embed:

{
  "título": "Sugerencia",
  "descripción": "Mensaje de la sugerencia\r\n\r\n- Sugerido por: @mención"
}

Ejecución del comando:

{prefijo}sugerencia {mensaje}

Sistema de roles por reaccion

@Phosphorus-M propone la idea de que al ingresar un miembro este pueda agregarse roles basandose en reacciones al mensaje

A la vez @CrawKatt sugiere que este sistema igualmente puede servir para validar miembros

Esta feature se puede adjuntar al mensaje de bienvenida que ya envia el cangrebot actualmente al DM de los nuevos miembros

Dar la bienvenida al DM

Agregar la funcionalidad de que el bot envíe un mensaje predeterminado al DM de las personas que se unen y que en ese mensaje agreguemos cosas importantes como una explicación de algunos canales relevantes como el de principiantes o el de proyectos comunitarios, además de incentivar a que revisen los mensajes fijados y así la gente nueva ya no se encuentra desorientada

[Evento] Nueva publicación de otros servidores

Descripcion

El objetivo sería crear una nueva publicación en el canal de 🗣-anuncios-del-ecosistema.

El problema sucede cuando intentas agregar nuevos webhooks (la forma en que discord nos notifica de anuncios de otros servidores) da un error.
Discord tiene un limite de webhooks por canal.

Existen muchas librerias que tienen servidores de discord y cuando sacan una actualización publican una noticia.

Sugerencia:

Agregar una forma de handlear los webhooks oficiales de discord y publicarlo en nuestro propio servidor.

[Comando] publicar en la web los proyectos del canal showcase

Motivación

Nos permitiría sincronizar en la web los proyectos que comparten en el Discord de la comunidad

Descripción

Un comando que mediante argumentos podamos establecer los parámetros necesarios para de alguna manera crear una PR en el proyecto correspondiente

Sugerencia para desarrollarlo

  • Invocación con el nombre showcase
  • Parámetros del comando (* opcionales)
    • name: Nombre del proyecto
    • desc: Descripción del proyecto
    • tags: Temas a los que se encuentra relacionado (Esto principalmente para que se puedan agrupar fácilmente)
    • url: Url al repositorio o web del proyecto
  • El proyecto de la web tendria que tener un workflow invocable desde url para generar los cambios necesarios

[Evento] [Discusion] Mensaje al DM de Bienvenida no cumple su proposito

Descripcion

El objetivo del mensaje de Bienvenida es dar una introducción de los canales relevantes del servidor, incentivar al uso de los roles e incentivar la participación

El problema sucede que las previews de los enlaces relevantes desplazan el mensaje

  • El og de la página es importante por temas de branding
  • El og de la sección de Aprende es crucial porque allí se encuentra todo el contenido de aprendizaje
    image

Sugerencia

Discutir el funcionamiento y contenido de este

Important

Es probable que este issue se mueva al apartado de discuciones del proyecto

[API] Exponer la capacidad de crear showcase desde la API

Motivación

Nos permitiría sincronizar en el Discord de la comunidad los proyectos que agreguen en el repo de la web

Descripción

Un endpoint que nos permita crear proyectos en el canal de showcase desde la API

Sugerencia para desarrollarlo

  • Invocación con el nombre showcase
  • Método POST
  • Parámetros del comando (* opcionales)
    • name: Nombre del proyecto
    • desc: Descripción del proyecto
    • tags: Temas a los que se encuentra relacionado (Esto principalmente para que se puedan agrupar fácilmente)
    • url: Url al repositorio o web del proyecto
  • El endpoint sería invocado desde el workflow que corresponda al momento de mergear algún archivo involucrado

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.