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.
- 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.
- 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.- discriminator¶
El discriminador del usuario.
Nota
Si el usuario ha migrado al nuevo sistema de nombres de usuario, esto siempre será «0».
- tipo:
- 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:
- asyncclone
- asynccreate_invite
- asyncdelete
- asyncinvites
- asyncmove
- defoverwrites_for
- defpermissions_for
- asyncset_permissions
- 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.- 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:
- property changed_roles: list[Role]¶
Retorna una lista de roles que han sido sobreescritos de su valor predeterminado en el atributo
roles.
- property jump_url: str¶
Retorna un enlace que permite al cliente ir directamente al canal.
Added in version 2.0.
- overwrites_for(obj)[fuente]¶
Retorna las sobrescrituras de un miembro o rol específicas de este canal.
- 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
RoleoMember, y el valor es la sobrescritura, que es de tipoPermissionOverwrite.- 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
MemberoRole.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.
- await delete(*, reason=None)[fuente]¶
This function is a coroutine.
Elimina este canal.
Debes tener el permiso
manage_channelspara 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:
- 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
targetdebe ser del tipoMemberoRoleque pertenezca al servidor.El parámetro
overwrite, si es proporcionado, debe serNoneo de tipoPermissionOverwrite. Por conveniencia, puedes proporcionar argumentos de palabras clave que denoten atributosPermissions. Si eso se hace, no se podrán combinar los argumentos de palabras clave con el parámetrooverwrite.Si el parámetro
overwriteesNone, entonces se eliminarán las sobrescrituras ya existentes.Debes tener el permiso
manage_rolespara 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, oNonepara 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
overwriteno es válido o el tipo de objetivo no era unRoleoMember.
- 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_channelspara poder usar esto.Added in version 1.1.
- Parámetros:
- 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
editen su lugar.Debes tener el permiso
manage_channelspara 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 conend,beforeyafter.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 conbeginning,beforeyafter.before (
Snowflake) – El canal que debería estar antes del canal actual. Esto es mutuamente excluyente conbeginning,endyafter.after (
Snowflake) – El canal que debería estar después del canal actual. Esto es mutuamente excluyente conbeginning,endybefore.offset (
int) – La cantidad de canales que mover para compensar. Por ejemplo, un desplazamiento de valor2conbeginning=Truemoverá 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ámetrosbeginning,end,beforeyafter.category (Optional[
Snowflake]) – La categoría a la que mover este canal. Si se proporcionaNoneentonces 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:
- 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_invitepara 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 es0.max_uses (
int) – Cuántos usos tendrá la invitación. Si se proporciona 0 entonces tendrá usos ilimitados. El valor por defecto es0.temporary (
bool) – Marca que la invitación otorgará una membresía temporal (es decir, son expulsados después de desconectarse). El valor por defecto esFalse.unique (
bool) – Indica si debería crearse un enlace único para la invitación. El valor por defecto esTrue. Si se proporcionaFalseentonces 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.0target_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.0target_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.0target_event (
ScheduledEvent|None) – El objeto de evento que enlazar a la invitación. Atajo deInvite.set_scheduled_event(). Véase tambiénInvite.set_scheduled_event()para más información en como enlazar un evento a la invitación. .. versionadded:: 2.0roles (
list[Role|Object] |None) –The roles to give a user when joining through this invite.
You must have the
manage_rolespermission 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:
- 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_channelspara poder usar esto.- Devuelve:
La lista de invitaciones actualmente activas.
- Tipo del valor devuelto:
- Muestra:
Forbidden – No tienes los permisos necesarios para poder obtener esta información.
HTTPException – Algo falló mientras se obtenía la información.
- defcan_send
- asyncfetch_message
- defhistory
- defpins
- asyncsend
- asynctrigger_typing
- deftyping
- 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_historypara poder usar esto.- Parámetros:
limit (
int|None) – La cantidad de mensajes a obtener. Si se proporcionaNone, 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 proporcionaTrue, retorna los mensajes en orden de creación descendente (antiguo -> nuevo). El valor por defecto esTruesi se proporciona un valor aafter, sino esFalse.
- 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
withcomoasync 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
contentdebe de ser un objeto convertible a una cadena mediantestr(content). Si se establece aNone(el valor por defecto), entonces el parámetroembeddebe ser porporcionado.Para adjuntar un solo archivo se ha de utilizar el parámetro
filecon unFile. Para adjuntar varios archivos se recomienda utilizar el parámetrofilesen vez, en este caso, proporcionando unalistde objetosFile. En caso de especificar los dos, se mostrará un error.Para enviar un solo embed se ha de utilizar el parámetro
embedcon un objeto de tipoEmbed. Para adjuntar varios embeds se recomienda utilizar el parámetroembedsen vez, en este caso, proporcionando un objeto de tipolistcuyos elementos han de ser instancias deEmbed. 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 atributononce. .. versionadded:: 2.5delete_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á conallowed_mentions. La combinación solo sobrescribirá aquellos atributos que se hayan explícitamente proporcionado, sino, usa los establecidos enallowed_mentions. Si no se proporciona ningún valor, usa como valor el establecido enallowed_mentions. .. versionadded:: 1.4reference (Union[
Message,MessageReference,PartialMessage]) –A reference to the
Messagebeing replied to or forwarded. This can be created usingto_reference(). When replying, you can control whether this mentions the author of the referenced message using thereplied_userattribute ofallowed_mentionsor by settingmention_author.Added in version 1.6.
mention_author (Optional[
bool]) – Si es establecido, sobrescribe el atributoreplied_userdel parámetroallowed_mentions. .. versionadded:: 1.6view (
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.0stickers (Sequence[Union[
GuildSticker,StickerItem]]) – Una lista de stickers que adjuntar. El máximo de elementos es 3. .. versionadded:: 2.0suppress (
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.4poll (
Poll) – La encuesta a enviar. .. versionadded:: 2.6
- Devuelve:
El mensaje que fue enviado.
- Tipo del valor devuelto:
- Muestra:
HTTPException – Algo falló mientras se enviaba el mensaje.
Forbidden – No tienes los permisos necesarios para enviar este mensaje.
InvalidArgument – La lista
filesno cumple con los límites de tamaño, especificaste ambos parámetrosfileyfiles, especificaste ambos parámetrosembedyembeds, o el valor del parámetroreferenceno es un objeto de tipoMessage,MesageReferenceoPartialMessage.
- 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:
- await fetch_message(id, /)[fuente]¶
This function is a coroutine.
Obtiene un solo
Messagedel canal.- Parámetros:
id (
int) – El ID del mensaje a buscar.- Devuelve:
El mensaje solicitado.
- Tipo del valor devuelto:
- 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
MessagePinIteratorthat enables receiving the destination’s pinned messages.Debes tener el permiso
read_message_historypara 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. IfNone, 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.
- 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 comprobacionesininstance()eissubclass().