Creación de un Bot

Paso 1. Crea una aplicación (sigue el enlace).

Paso 2. Añade un bot (haz clic en el botón "Añadir Bot").

Paso 2.1. En la sección Instalación, selecciona Enlace de instalación → Ninguno.

Paso 2.2. En la sección Bot, desactiva Bot público, luego activa los siguientes Intents:

  • Message Content Intent
  • Server Members Intent

También puedes activar Presence Intent para uso futuro.

Paso 3. Obtén el token (Restablecer Token).

Paso 4. Añade el bot al servidor:

  • Ve a OAuth2 → Generador de URL.
  • En Ámbitos, selecciona bot.
  • En Permisos del Bot, elige Enviar mensajes, Leer historial de mensajes y cualquier otro permiso necesario.

Luego abre el enlace generado, selecciona el servidor donde deseas añadir el bot y confirma la autorización.

Para obtener el webhook completo de Discord, simplemente asigna cualquier valor a la variable save_webhook.

Si la variable está configurada, el webhook se guardará en discord_webhook.

Conexión del Bot de Discord en MaviBot

Ahora ve a la sección "Mensajería" en tu proyecto en MaviBot:

Luego pega el token copiado de Discord.

Haz clic en el botón Listo.

Funciones de la Calculadora

Responder a un Mensaje

discord_reply_to_message(message_id, text) - Esta función se utiliza para responder a un mensaje.

Parámetros Descripción
! message_id El ID del mensaje al que deseas responder.
! text El texto del mensaje de respuesta.

Eliminar un Mensaje

discord_delete_message(message_id) - Esta función se utiliza para eliminar un mensaje.

Parámetros Descripción
! message_id El ID del mensaje a eliminar.

Editar un Mensaje

discord_edit_message(message_id, text) - Esta función se utiliza para editar un mensaje.

Parámetros Descripción
! message_id El ID del mensaje a editar.
! text El nuevo texto del mensaje.

Fijar un Mensaje

discord_pin_message(message_id) - Esta función se utiliza para fijar un mensaje.

Parámetros Descripción
! message_id El ID del mensaje a fijar.

Desfijar un Mensaje

discord_unpin_message(message_id) - Esta función se utiliza para desfijar un mensaje.

Parámetros Descripción
! message_id El ID del mensaje a desfijar.

Enviar una Reacción a un Mensaje

discord_send_reaction(message_id, reaction) - Esta función se utiliza para enviar una reacción a un mensaje.

Parámetros Descripción
! message_id El ID del mensaje al que enviar una reacción.
! reaction La reacción a enviar. Puedes proporcionar un emoji simple (por ejemplo, ❤️) o el ID de un emoji personalizado en el servidor. A continuación se proporciona información sobre cómo obtener el ID de un emoji personalizado.

Eliminar una Reacción de un Mensaje en un Canal

discord_delete_reaction(message_id, reaction, user_id) - Esta función se utiliza para eliminar una reacción de un mensaje en un canal.

Parámetros Descripción
! message_id El ID del mensaje del cual eliminar la reacción.
! reaction La reacción a eliminar. Puedes proporcionar un emoji simple (por ejemplo, ❤️) o el ID de un emoji personalizado en el servidor. A continuación se proporciona información sobre cómo obtener el ID de un emoji personalizado.
user_id El ID del usuario cuya reacción deseas eliminar. Este parámetro es opcional si deseas eliminar la reacción del bot actual.

Funciones de Discord

Las siguientes funciones te permiten gestionar servidores de Discord, miembros, canales, roles, mensajes e invitaciones.

Moderación de Miembros

Banear a un Miembro

discord_ban_member(user_id, delete_message_seconds) - Esta función se utiliza para banear a un miembro del servidor de Discord.

Parámetros Descripción
! user_id El ID de usuario de Discord del miembro a banear.
delete_message_seconds (Opcional) Elimina los mensajes anteriores del miembro desde el número de segundos especificado antes del baneo. Establece 0 para conservar todos los mensajes.

Desbanear a un Miembro

discord_unban_member(user_id) - Esta función se utiliza para eliminar un baneo de un miembro.

Parámetros Descripción
! user_id El ID de usuario de Discord del miembro a desbanear.

Expulsar a un Miembro

discord_kick_member(user_id) - Esta función se utiliza para eliminar a un miembro del servidor sin banearlo.

Parámetros Descripción
! user_id El ID de usuario de Discord del miembro a eliminar.

Un miembro expulsado puede volver a unirse al servidor usando un enlace de invitación válido.

Silenciar a un Miembro

discord_timeout_member(user_id, seconds) - Esta función se utiliza para poner a un miembro en tiempo de espera (silencio).

Parámetros Descripción
! user_id El ID de usuario de Discord del miembro.
! seconds Duración del tiempo de espera en segundos.

Eliminar Tiempo de Espera

discord_remove_timeout(user_id) - Esta función se utiliza para eliminar el tiempo de espera de un miembro antes de que expire.

Parámetros Descripción
! user_id El ID de usuario de Discord del miembro.

Eliminar Mensajes en Masa

discord_bulk_delete_messages(channel_id, message_ids) - Esta función se utiliza para eliminar múltiples mensajes de un canal.

Parámetros Descripción
! channel_id El ID del canal de Discord.
! message_ids Una lista de IDs de mensajes a eliminar.

Mensajes

Enviar un Mensaje

discord_send_message(channel_id, text) - Esta función se utiliza para enviar un mensaje a un canal de Discord.

Parámetros Descripción
! channel_id El ID del canal de Discord.
! text El texto del mensaje.

Obtener un Mensaje

discord_get_message(channel_id, message_id) - Esta función se utiliza para recuperar información sobre un mensaje.

Parámetros Descripción
! channel_id El ID del canal de Discord.
! message_id El ID del mensaje.

La función devuelve:

  • Contenido del mensaje
  • Información del autor
  • Archivos adjuntos

Enviar un Mensaje Directo

discord_send_dm(user_id, text) - Esta función se utiliza para enviar un mensaje directo a un miembro del servidor.

Parámetros Descripción
! user_id El ID de usuario de Discord.
! text El texto del mensaje.

Roles

Añadir un Rol

discord_add_role(user_id, role_id) - Esta función se utiliza para asignar un rol a un miembro.

Parámetros Descripción
! user_id El ID de usuario de Discord.
! role_id El ID del rol de Discord.

Eliminar un Rol

discord_remove_role(user_id, role_id) - Esta función se utiliza para eliminar un rol de un miembro.

Parámetros Descripción
! user_id El ID de usuario de Discord.
! role_id El ID del rol de Discord.

Cambiar Apodo de Miembro

discord_set_nickname(user_id, nickname) - Esta función se utiliza para cambiar el apodo de un miembro en el servidor.

Parámetros Descripción
! user_id El ID de usuario de Discord.
! nickname El nuevo apodo.

Obtener Roles del Servidor

discord_get_roles() - Esta función se utiliza para recuperar la lista de roles del servidor.

La función devuelve:

  • ID del rol
  • Nombre del rol

Miembros

Obtener Información del Miembro

discord_get_member(user_id) - Esta función se utiliza para recuperar información sobre un miembro del servidor.

Parámetros Descripción
! user_id El ID de usuario de Discord.

La función devuelve:

  • Roles del miembro
  • Apodo del servidor
  • Fecha de ingreso
  • Permisos

Canales

Crear un Canal

discord_create_channel(name, type, parent_id, permission_overwrites) - Esta función se utiliza para crear un nuevo canal de Discord.

Parámetros Descripción
! name El nombre del canal.
! type El tipo de canal (por ejemplo, texto o voz).
parent_id El ID de la categoría donde se creará el canal.
permission_overwrites Configuraciones de permisos del canal que definen qué usuarios o roles pueden acceder al canal.

Eliminar un Canal

discord_delete_channel(channel_id) - Esta función se utiliza para eliminar un canal de Discord.

Parámetros Descripción
! channel_id El ID del canal de Discord.

Establecer Permisos del Canal

discord_set_channel_permission(channel_id, target_id, allow, deny) - Esta función se utiliza para configurar los permisos del canal para un usuario o rol.

Parámetros Descripción
! channel_id El ID del canal de Discord.
! target_id El ID de usuario o ID de rol cuyos permisos se cambiarán.
! allow Permisos a conceder.
! deny Permisos a denegar.

Invitaciones

Crear una Invitación

discord_create_invite(channel_id, max_age, max_uses) - Esta función se utiliza para crear un enlace de invitación.

Parámetros Descripción
! channel_id El ID del canal de Discord.
max_age Duración de la invitación en segundos. Usa 0 para que no expire.
max_uses Número máximo de usos. Usa 0 para usos ilimitados.

Obtener Invitaciones del Servidor

discord_get_invites() - Esta función se utiliza para recuperar todos los enlaces de invitación del servidor.

La función devuelve:

  • URL de la invitación
  • Número de usos
  • Duración restante (si aplica)

Eventos de Webhook

Los siguientes eventos de Discord pueden reenviarse al flujo del chat:

  • Miembro se unió al servidor
  • Miembro abandonó el servidor
  • Miembro fue expulsado
  • Miembro fue baneado
  • Miembro fue desbaneado
  • Roles del miembro cambiaron
  • Mensaje editado
  • Mensaje eliminado
  • Reacción añadida
  • Reacción eliminada
  • Comando de barra ejecutado
  • Botón clickeado

Payload del Webhook

Los datos del webhook están disponibles en:

discord_webhook["data"]
Campo Descripción
author_id ID de usuario de Discord del autor del mensaje.
username Nombre de usuario de Discord.
nickname Apodo en el servidor.
channel_id ID del canal de Discord.
guild_id ID del servidor de Discord.
message_id ID del mensaje de Discord.
content Texto del mensaje.
roles Lista de IDs de roles del miembro.
is_admin Indica si el miembro tiene privilegios de administrador.

Callbacks

Cuando un usuario envía una reacción, se recibe un callback en el chat con el siguiente formato:

new_like ❤️ uid413984787162726410

Donde uid413984787162726410 es el ID del usuario que envió la reacción.

Cómo obtener el ID de un emoji personalizado

Si envías una reacción personalizada a un mensaje en un canal de Discord, se recibirá un callback con el siguiente formato:

new_like beer:1479419477396291696 uid413984787162726410

Donde beer:1479419477396291696 es el ID de la reacción. Puedes copiarlo para usarlo en funciones relacionadas con reacciones.

Cómo obtener el ID del Mensaje

Puedes obtener el ID del mensaje del cliente desde el webhook si save_webhook está habilitado. Ejemplo:

data = discord_webhook["data"]
msg_id = data["id"]
result = discord_reply_to_message(msg_id, "Esto es una respuesta a un mensaje")

Callbacks Adicionales

Además de new_like, están disponibles los siguientes callbacks:

Callback Descripción
new_like {emoji} uid{user_id} Un usuario añadió una reacción a un mensaje.
reaction_remove {emoji} uid{user_id} Un usuario eliminó una reacción de un mensaje.
message_delete mid{message_id} Un mensaje fue eliminado.
message_edit mid{message_id} Un mensaje fue editado. El texto actualizado del mensaje está disponible en los datos del webhook.
member_join uid{user_id} Un miembro se unió al servidor.
member_leave uid{user_id} Un miembro abandonó el servidor.
member_update uid{user_id} La información de un miembro (como roles o apodo) fue actualizada.
member_ban uid{user_id} Un miembro fue baneado del servidor.
member_unban uid{user_id} Un miembro fue desbaneado del servidor.

Variables de Callback

Para mantener la coherencia con el formato existente de eventos de Discord, los identificadores de usuario y mensaje utilizan prefijos históricos:

  • Los IDs de usuario se devuelven como uid{user_id}.
  • Los IDs de mensaje se devuelven como mid{message_id}.

Las siguientes variables también utilizan estos identificadores con prefijo:

  • message_from
  • internal_id
  • discord_webhook["data"]