Abstract Base Classes

Una clase base abstracta (también conocidas como cba) es un tipo de clase la cual otros objetos utilizan heredar sus funcionalidades. Las clases base abstractas no deben ser inicializadas. Su principal causa de uso es para utilizar comprobaciones isinstance() e issubclass().

La librería tiene un módulo centrado en las clases bases abstractas, en la que todas son heredadas de typing.Protocol.

Attributes
class discord.abc.Snowflake[fuente]

Una CBA que detalla las operaciones más comunes en un modelo de Discord.

Casi todos los modelos de Discord cumplen el protocolo de esta clase base abstracta.

Si quieres crear un snowflake por tu cuenta, es preferible que uses Object.

id

El ID único del modelo.

tipo:

int

class discord.abc.User[fuente]

Una CBA que detalla las operaciones más comunes en un usuario de Discord.

Los siguientes son heredados de esta CBA:

Esta CBA también debe implementar Snowflake.

name

El nombre del usuario.

tipo:

str

discriminator

El discriminador del usuario.

Nota

Si el usuario ha migrado al nuevo sistema de nombres de usuario, esto siempre será «0».

tipo:

str

global_name

El nombre global del usuario.

Added in version 2.5.

tipo:

str

avatar

El avatar que tiene el usuario.

tipo:

Asset

bot

Si el usuario es un bot.

tipo:

bool

property display_name: str

Retorna el nombre mostrado del usuario.

property mention: str

Retorna una cadena que permite mencionar al usuario.

Attributes
class discord.abc.PrivateChannel[fuente]

Una CBA que detalla las operaciones más comunes en un canal privado de Discord.

Los siguientes son heredados de esta CBA:

Esta CBA también debe implementar Snowflake.

me

El usuario que te representa.

tipo:

ClientUser

class discord.abc.GuildChannel[fuente]

Una CBA que detalla las operaciones más comunes en un canal de un servidor de Discord.

Los siguientes son heredados de esta CBA:

Esta CBA también debe implementar Snowflake.

name

El nombre del canal.

tipo:

str

guild

El servidor al cual este canal pertenece.

tipo:

Guild

position

La posición del canal en la lista de canales. Este es un entero comenzando desde 0. p. ej., el primer canal tiene la posición 0.

tipo:

int

property changed_roles: list[Role]

Retorna una lista de roles que han sido sobreescritos de su valor predeterminado en el atributo roles.

property mention: str

Retorna una cadena que permite mencionar el canal.

property jump_url: str

Retorna un enlace que permite al cliente ir directamente al canal.

Added in version 2.0.

property created_at: datetime

Retorna la fecha de creación del canal en UTC.

overwrites_for(obj)[fuente]

Retorna las sobrescrituras de un miembro o rol específicas de este canal.

Parámetros:

obj (Role | User) – El rol o usuario de los que quieres obtener las sobrescrituras.

Devuelve:

Las sobre escrituras de los permisos para este objeto.

Tipo del valor devuelto:

PermissionOverwrite

property overwrites: dict[Role | Member, PermissionOverwrite]

Retorna todas las sobrescrituras de este canal.

Esto es retornado como un diccionario donde la llave es el objeto, que puede ser de tipo Role o Member, y el valor es la sobrescritura, que es de tipo PermissionOverwrite.

Devuelve:

Las sobrescrituras de los permisos de este canal.

Tipo del valor devuelto:

Dict[Union[Role, Member], PermissionOverwrite]

property category: CategoryChannel | None

La categoría a la cual pertenece este canal.

Si no pertenece a ninguna, entonces esto retorna None.

property permissions_synced: bool

Si los permisos de este canal están sincronizados con los de la categoría a la que pertenece.

Si no pertenece a ninguna categoría, entonces esto es False.

Added in version 1.3.

permissions_for(obj, /)[fuente]

Gestiona la resolución de los permisos para el Member o Role.

Esta función tiene en cuenta los siguientes casos:

  • Propietario del servidor

  • Roles del servidor

  • Sobrescrituras de canales

  • Sobrescrituras de miembros

Si se proporciona un Role, entonces esto comprueba los permisos de alguien que tenga el rol, que es esencialmente:

  • Los permisos del rol por defecto

  • Los permisos del rol usado como parámetro

  • Las sobrescrituras de permisos del rol por defecto

  • Las sobrescrituras de permisos del rol usado como parámetro

Distinto en la versión 2.0: El objeto proporcionado ahora puede ser un rol.

Parámetros:

obj (Member | Role) – El objeto del que obtener los permisos. Este puede ser un miembro o rol. Si es un rol, entonces las sobrescrituras de miembro no son calculadas.

Devuelve:

Los permisos calculados del miembro o rol.

Tipo del valor devuelto:

Permissions

await delete(*, reason=None)[fuente]

This function is a coroutine.

Elimina este canal.

Debes tener el permiso manage_channels para poder usar esto.

Parámetros:

reason (str | None) – La razón por la que se elimina el canal. Se muestra en el registro de auditoría.

Muestra:
  • Forbidden – No tienes los permisos necesarios para poder eliminar el canal.

  • NotFound – El canal no se encontró o ya fue eliminado.

  • HTTPException – Algo falló mientras se eliminaba el canal.

Tipo del valor devuelto:

None

await set_permissions(target, *, overwrite=..., reason=None, **permissions)[fuente]

This function is a coroutine.

Establece las sobrescrituras de permisos para un objetivo en el canal.

El parámetro target debe ser del tipo Member o Role que pertenezca al servidor.

El parámetro overwrite, si es proporcionado, debe ser None o de tipo PermissionOverwrite. Por conveniencia, puedes proporcionar argumentos de palabras clave que denoten atributos Permissions. Si eso se hace, no se podrán combinar los argumentos de palabras clave con el parámetro overwrite.

Si el parámetro overwrite es None, entonces se eliminarán las sobrescrituras ya existentes.

Debes tener el permiso manage_roles para poder usar esto.

Nota

Este método reemplaza las sobrescrituras antiguas con las proporcionadas.

Ejemplos

Estableciendo permitidos y denegados:

await message.channel.set_permissions(message.author, read_messages=True,
                                                      send_messages=False)

Eliminar sobrescrituras:

await channel.set_permissions(member, overwrite=None)

Usando PermissionOverwrite:

overwrite = discord.PermissionOverwrite()
overwrite.send_messages = False
overwrite.read_messages = True
await channel.set_permissions(member, overwrite=overwrite)
Parámetros:
  • target (Union[Member, Role]) – El miembro o rol al que editar las sobrescrituras de permisos.

  • overwrite (Optional[PermissionOverwrite]) – Los permisos que aceptar o denegar al objetivo, o None para eliminar la sobrescritura.

  • **permissions – Una lista de argumentos de palabras clave de los permisos a establecer para facilitar el uso. No se puede combinar con overwrite.

  • reason (Optional[str]) – La razón por la que se hace esta acción. Se muestra en el registro de auditoría.

Muestra:
  • Forbidden – No tienes permisos para editar los permisos de este canal.

  • HTTPException – Algo falló mientras se editaban los permisos del canal.

  • NotFound – El rol o miembro que se va a editar no es parte del servidor.

  • InvalidArgument – El parámetro overwrite no es válido o el tipo de objetivo no era un Role o Member.

await clone(*, name=None, reason=None)[fuente]

This function is a coroutine.

Clona este canal. Esto crea uno nuevo con las mismas propiedades.

Debes tener el permiso manage_channels para poder usar esto.

Added in version 1.1.

Parámetros:
  • name (str | None) – El nuevo nombre del canal. Si no se proporciona, se usará el nombre del canal existente.

  • reason (str | None) – La razón por la que se clona el canal. Se muestra en el registro de auditoría.

  • self (TypeVar(GCH, bound= GuildChannel))

Devuelve:

El canal que fue creado.

Tipo del valor devuelto:

TypeVar(GCH, bound= GuildChannel)

Muestra:
  • Forbidden – No tienes los permisos necesarios para crear este canal.

  • HTTPException – Algo falló mientras se creaba el canal.

await move(**kwargs)[fuente]

This function is a coroutine.

Una interfaz completa la cual ayuda a mover un canal en relación con los otros.

Si la posición exacta a la que quiere moverse es requerida, deberías usar edit en su lugar.

Debes tener el permiso manage_channels para poder usar esto.

Nota

Los canales de voz siempre se ordenarán después de los canales de texto. Esto es una limitación de Discord.

Added in version 1.7.

Parámetros:
  • beginning (bool) – Si debería moverse el canal al principio de la lista de canales (o categoría, si es proporcionada). Esto es mutuamente excluyente con end, before y after.

  • end (bool) – Si mover el canal al final de la lista de canales (o de la categoría, si es proporcionada). Esto es mutuamente excluyente con beginning, before y after.

  • before (Snowflake) – El canal que debería estar antes del canal actual. Esto es mutuamente excluyente con beginning, end y after.

  • after (Snowflake) – El canal que debería estar después del canal actual. Esto es mutuamente excluyente con beginning, end y before.

  • offset (int) – La cantidad de canales que mover para compensar. Por ejemplo, un desplazamiento de valor 2 con beginning=True moverá el canal 2 posiciones a partir del principio. Un número positivo mueve el canal hacia abajo, mientras uno negativo lo mueve hacia arriba. Tenga en cuenta que este número es relativo y calculado a partir de los parámetros beginning, end, before y after.

  • category (Optional[Snowflake]) – La categoría a la que mover este canal. Si se proporciona None entonces mueve el canal fuera de esta. Este parámetro es ignorado si se mueve una categoría.

  • sync_permissions (bool) – Si se deben sincronizar los permisos con la categoría a la que se mueve (si es proporcionada).

  • reason (str) – La razón por la que se mueve este canal.

Muestra:
  • InvalidArgument – Se proporcionó una posición no válida, o se mezclaron parámetros mutuamente excluyentes.

  • Forbidden – No tienes los permisos necesarios para poder mover el canal.

  • HTTPException – Algo falló mientras se movía el canal.

Tipo del valor devuelto:

None

await create_invite(*, reason=None, max_age=0, max_uses=0, temporary=False, unique=True, target_event=None, target_type=None, target_user=None, target_application_id=None, roles=None, target_users_file=None)[fuente]

This function is a coroutine.

Crea una invitación instantánea a partir de un canal de texto o voz.

Debes tener el permiso create_instant_invite para poder usar esto.

Parámetros:
  • max_age (int) – Cuánto durará la invitación en segundos. Si se proporciona 0 entonces esta invitación no expirará. El valor por defecto es 0.

  • max_uses (int) – Cuántos usos tendrá la invitación. Si se proporciona 0 entonces tendrá usos ilimitados. El valor por defecto es 0.

  • temporary (bool) – Marca que la invitación otorgará una membresía temporal (es decir, son expulsados después de desconectarse). El valor por defecto es False.

  • unique (bool) – Indica si debería crearse un enlace único para la invitación. El valor por defecto es True. Si se proporciona False entonces retornará una invitación ya existente.

  • reason (str | None) – La razón por la que se crea la invitación. Se muestra en el registro de auditoría.

  • target_type (InviteTarget | None) – El tipo de objetivo para la invitación al canal de voz, si aplicable. .. versionadded:: 2.0

  • target_user (User | None) – El usuario cuál directo mostrar en esta invitación. Obligatorio si el valor del parámetro target_type es TargetType.stream. El usuario debe estar en directo en el canal. .. versionadded:: 2.0

  • target_application_id (int | None) – El ID de la aplicación que mostrar en la invitación. Obligatorio si el valor del parámetro de target_type es TargetType.embedded_application. .. versionadded:: 2.0

  • target_event (ScheduledEvent | None) – El objeto de evento que enlazar a la invitación. Atajo de Invite.set_scheduled_event(). Véase también Invite.set_scheduled_event() para más información en como enlazar un evento a la invitación. .. versionadded:: 2.0

  • roles (list[Role | Object] | None) –

    The roles to give a user when joining through this invite.

    You must have the manage_roles permission to do this and roles cannot be higher than your own.

    Added in version 2.8.

  • target_users_file (File | None) –

    A CSV file with a single column of user IDs for all the users able to accept this invite.

    You can use utils.users_to_csv() to generate a virtual CSV file from a sequence of user IDs.

    Added in version 2.8.

Devuelve:

La invitación que fue creada.

Tipo del valor devuelto:

Invite

Muestra:
  • HTTPException – Algo falló al crear la invitación.

  • NotFound – El canal que se proporcionó era una categoría o era un canal no válido.

await invites()[fuente]

This function is a coroutine.

Retorna una lista de todas las invitaciones activas de este canal.

Debes tener el permiso manage_channels para poder usar esto.

Devuelve:

La lista de invitaciones actualmente activas.

Tipo del valor devuelto:

list[Invite]

Muestra:
  • Forbidden – No tienes los permisos necesarios para poder obtener esta información.

  • HTTPException – Algo falló mientras se obtenía la información.

Methods
class discord.abc.Messageable[fuente]

Una CBA que detalla las operaciones más comunes en un modelo que permite enviar mensajes.

Los siguientes son heredados de esta CBA:

async for ... in history(*, limit=100, before=None, after=None, around=None, oldest_first=None)[fuente]

Retorna un iterador asíncrono (AsyncIterator) que permite recibir el historial de mensajes del canal.

Debes tener el permiso read_message_history para poder usar esto.

Parámetros:
  • limit (int | None) – La cantidad de mensajes a obtener. Si se proporciona None, obtiene todos los mensajes del canal. Ten en cuenta que esto lo haría una operación lenta.

  • before (Snowflake | datetime | None) – Obtiene los mensajes antes de esta fecha o mensaje. Si se proporciona un datetime, se recomienda que sea con una zona horaria establecida en UTC, en caso de que no, se asumirá que está en hora local.

  • after (Snowflake | datetime | None) – Obtiene los mensajes después de esta fecha o mensaje. Si se proporciona un datetime, se recomienda que sea con una zona horaria establecida en UTC, en caso de que no, se asumirá que está en hora local.

  • around (Snowflake | datetime | None) – Obtiene los mensajes alrededor de esta fecha o mensaje. Si se proporciona un datetime, se recomienda que sea con una zona horaria establecida en UTC, en caso de que no, se asumirá que está en hora local. Cuando se usa este argumento, el límite que se pueden obtener es de 101. Ten en cuenta que si el límite es par, entonces esto retornará como mucho el límite + 1 mensajes.

  • oldest_first (bool | None) – Si se proporciona True, retorna los mensajes en orden de creación descendente (antiguo -> nuevo). El valor por defecto es True si se proporciona un valor a after, sino es False.

Campos:

Message – El mensaje con la información analizada.

Muestra:
  • Forbidden – No tienes permisos para ver el historial de mensajes de este canal.

  • HTTPException – Algo falló mientras se obtenía el historial de mensajes.

Tipo del valor devuelto:

HistoryIterator

Ejemplos

Uso

counter = 0
async for message in channel.history(limit=200):
    if message.author == client.user:
        counter += 1

Convertir a una lista:

messages = await channel.history(limit=123).flatten()
# messages is now a list of Message...

Todos los parámetros son opcionales.

async with typing()[fuente]

Retorna un gestor de contexto que permite que aparezcas como «escribiendo» por un periodo de tiempo indefinido.

This is useful for denoting long computations in your bot.

Nota

Esto es tanto como un gestor de contexto síncrono como asíncrono, que quiere decir que, se puede utilizar tanto en un gestor de contexto with como async with.

Ejemplo de uso:

async with channel.typing():
    # simulate something heavy
    await asyncio.sleep(10)

await channel.send('done!')
Tipo del valor devuelto:

Typing

await send(content=None, *, tts=None, embed=None, embeds=None, file=None, files=None, stickers=None, delete_after=None, nonce=None, enforce_nonce=None, allowed_mentions=None, reference=None, mention_author=None, view=None, poll=None, suppress=None, suppress_embeds=None, silent=None)[fuente]

This function is a coroutine.

Envía un mensaje al canal con el contenido proporcionado.

El valor del parámetro content debe de ser un objeto convertible a una cadena mediante str(content). Si se establece a None (el valor por defecto), entonces el parámetro embed debe ser porporcionado.

Para adjuntar un solo archivo se ha de utilizar el parámetro file con un File. Para adjuntar varios archivos se recomienda utilizar el parámetro files en vez, en este caso, proporcionando una list de objetos File. En caso de especificar los dos, se mostrará un error.

Para enviar un solo embed se ha de utilizar el parámetro embed con un objeto de tipo Embed. Para adjuntar varios embeds se recomienda utilizar el parámetro embeds en vez, en este caso, proporcionando un objeto de tipo list cuyos elementos han de ser instancias de Embed. En caso de especificar los dos, se mostrará un error.

Parámetros:
  • content (Optional[str]) – El contenido del mensaje a enviar.

  • tts (bool) – Indica si el mensaje se enviará usando la función texto a voz.

  • embed (Embed) – El embed que adjuntar.

  • file (File) – El archivo que adjuntar.

  • files (List[File]) – Una lista de archivos a adjuntar. Debe de ser un máximo de 10 elementos.

  • nonce (Union[str, int]) – El valor único a utilizar para enviar este mensaje. Si el mensaje se envió correctamente, entonces el mensaje tendrá como nonce este valor.

  • enforce_nonce (Optional[bool]) – Si se forzará la validación del atributo nonce. .. versionadded:: 2.5

  • delete_after (float) – Si es proporcionado, la cantidad de segundos a esperar en segundo plano antes de eliminar el mensaje que se envió. Si algo falla mientras se eliminaba el mensaje, entonces el error es silenciosamente ignorado.

  • allowed_mentions (AllowedMentions) – Controla las menciones que se procesarán en el mensaje. Si esto es proporcionado entonces se combinará con allowed_mentions. La combinación solo sobrescribirá aquellos atributos que se hayan explícitamente proporcionado, sino, usa los establecidos en allowed_mentions. Si no se proporciona ningún valor, usa como valor el establecido en allowed_mentions. .. versionadded:: 1.4

  • reference (Union[Message, MessageReference, PartialMessage]) –

    A reference to the Message being replied to or forwarded. This can be created using to_reference(). When replying, you can control whether this mentions the author of the referenced message using the replied_user attribute of allowed_mentions or by setting mention_author.

    Added in version 1.6.

  • mention_author (Optional[bool]) – Si es establecido, sobrescribe el atributo replied_user del parámetro allowed_mentions. .. versionadded:: 1.6

  • view (discord.ui.BaseView) – El contenedor de componentes al que añadir al mensaje.

  • embeds (List[Embed]) – Una lista de embeds que adjuntar. El máximo de elementos es 10. .. versionadded:: 2.0

  • stickers (Sequence[Union[GuildSticker, StickerItem]]) – Una lista de stickers que adjuntar. El máximo de elementos es 3. .. versionadded:: 2.0

  • suppress (bool) –

    Si suprimir los embeds del mensaje.

    Obsoleto desde la versión 2.8.

  • suppress_embeds (bool) –

    Si suprimir los embeds del mensaje.

    Added in version 2.8.

  • silent (bool) – Si suprimir las notificaciones push y las notificaciones de escritorio de este mensaje. .. versionadded:: 2.4

  • poll (Poll) – La encuesta a enviar. .. versionadded:: 2.6

Devuelve:

El mensaje que fue enviado.

Tipo del valor devuelto:

Message

Muestra:
  • HTTPException – Algo falló mientras se enviaba el mensaje.

  • Forbidden – No tienes los permisos necesarios para enviar este mensaje.

  • InvalidArgument – La lista files no cumple con los límites de tamaño, especificaste ambos parámetros file y files, especificaste ambos parámetros embed y embeds, o el valor del parámetro reference no es un objeto de tipo Message, MesageReference o PartialMessage.

await trigger_typing()[fuente]

This function is a coroutine.

Activa el indicador de escribiendo en el canal.

El indicador escribiendo desaparecerá luego de 10 segundos, o cuando se envía un mensaje.

Tipo del valor devuelto:

None

await fetch_message(id, /)[fuente]

This function is a coroutine.

Obtiene un solo Message del canal.

Parámetros:

id (int) – El ID del mensaje a buscar.

Devuelve:

El mensaje solicitado.

Tipo del valor devuelto:

Message

Muestra:
  • NotFound – El mensaje especificado no fue encontrado.

  • Forbidden – No tienes los permisos necesarios para poder obtener un mensaje.

  • HTTPException – Algo falló mientras se obtenía el mensaje.

pins(*, limit=50, before=None)[fuente]

Returns a MessagePinIterator that enables receiving the destination’s pinned messages.

Debes tener el permiso read_message_history para poder usar esto.

Advertencia

Starting from version 3.0, await channel.pins() will no longer return a list of Message. See examples below for new usage instead.

Parámetros:
  • limit (int | None) – The number of pinned messages to retrieve. If None, retrieves every pinned message in the channel.

  • before (Snowflake | datetime | None) – Retrieve messages pinned before this datetime. If a datetime is provided, it is recommended to use a UTC aware datetime. If the datetime is naive, it is assumed to be local time.

Campos:

MessagePin – The pinned message.

Muestra:
  • Forbidden – You do not have permissions to get pinned messages.

  • HTTPException – The request to get pinned messages failed.

Tipo del valor devuelto:

MessagePinIterator

Ejemplos

Uso

counter = 0
async for pin in channel.pins(limit=250):
    if pin.message.author == client.user:
        counter += 1

Convertir a una lista:

pins = await channel.pins(limit=None).flatten()
# pins is now a list of MessagePin...

Todos los parámetros son opcionales.

can_send(*objects)[fuente]

Retorna un bool el cual indica si tienes permisos de enviar el/los objeto/s.

Devuelve:

Indica si tienes permisos de enviar el/los objeto/s.

Tipo del valor devuelto:

bool

Muestra:

TypeError – Un objeto de tipo no válido ha sido proporcionado.

class discord.abc.Connectable[fuente]

Una CBA que detalla las operaciones más comunes en un canal al que se puede conectar.

Los siguientes son heredados de esta CBA:

Nota

Esta CBA no fue decorada con typing.runtime_checkable() por lo que fallará las comprobaciones ininstance() e issubclass().