Inicio rápido

Esta página da una breve introducción a la biblioteca. Se asume que tienes la biblioteca instalada. Si no la tienes, revisa Instalación.

Un bot mínimo

Creemos un bot que responda a un mensaje en específico y guiarte en el proceso.

Se ve algo así:

Nota

Debido a que este ejemplo usa el contenido del mensaje, necesitamos la intención privilegiada Intents.message_content.

import discord

intents = discord.Intents.default()
intents.message_content = True

client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print(f'We have logged in as {client.user}')

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('$hello'):
        await message.channel.send('Hello!')

client.run('your token here')

Nombremos a este archivo example_bot.py. Asegúrate de no nombrarlo discord.py, ya que puede causar conflictos con la biblioteca.

Muchas cosas están sucediendo aquí, vamos paso a paso:

  1. La primera línea importa la biblioteca, si esto genera un ModuleNotFoundError o ImportError, entonces ve a la sección de Instalación para instalar correctamente la biblioteca.

  2. A continuación, creamos una instancia de Client. Este cliente es nuestra conexión a Discord.

  3. Luego usamos el decorador Client.event() para registrar un evento. La biblioteca cuenta con muchos eventos. Puesto que la biblioteca es asíncrona, hacemos las cosas en un estilo de «retrollamada».

    Una retrollamada es esencialmente una función que es llamada cuando algo pasa. En nuestro caso, el evento on_ready() es llamado cuando nuestro bot ha terminado de iniciar sesión y configurarse, y el evento on_message() es llamado cuando nuestro bot recibe un mensaje.

  4. Puesto que nuestro evento on_message() es llamado por cada mensaje recibido, tenemos que asegurarnos de ignorar nuestros mismos mensajes. Hacemos esto comprobando si el Message.author es el mismo que Client.user.

  5. Después, comprobamos si Message.content empieza con '$hello'. Si lo hace, entonces enviamos un mensaje al canal donde fue usado con 'Hello!'. Esto es una forma básica de manejar comandos, que luego puede ser automatizado con el framework discord.ext.commands.

  6. Finalmente, ejecutamos nuestro bot con nuestro token de inicio de sesión. Si necesitas ayuda para obtener tu token o para crear un bot, mira la sección Crear una cuenta bot.

Ahora que hemos creado un bot, tenemos que ejecutar el bot. Por suerte, esto es simple, ya que este es solo un script de Python, podemos ejecutarlo directamente.

En Windows:

$ py -3 example_bot.py

En otros sistemas:

$ python3 example_bot.py

Ahora puedes intentar jugar con tu bot básico.

Un bot mínimo con comandos de barra

Como una continuación, vamos a crear un bot que registre un simple comando de barra.

Se ve algo así:

import discord

bot = discord.Bot()

@bot.event
async def on_ready():
    print(f"We have logged in as {bot.user}")

@bot.slash_command(guild_ids=[your, guild_ids, here])
async def hello(ctx):
    await ctx.respond("Hello!")

bot.run("your token here")

Veamos las diferencias en comparación con el ejemplo anterior, paso a paso:

  1. La primera línea no ha cambiado.

  2. A continuación, creamos una instancia de Bot. Esto es diferente de Client, ya que soporta la creación de comandos de barra y otras características, al tiempo que hereda todas las características de Client.

  3. Luego usamos el decorador Bot.slash_command() para registrar un nuevo comando de barra. El atributo guild_ids contiene una lista de servidores donde este comando será activo. Si se omite, el comando estará disponible globalmente, y puede tardar hasta una hora en registrarse.

  4. Después, activamos una respuesta al comando de barra en forma de texto. Por favor, ten en cuenta que todos los comandos de barra deben tener alguna forma de respuesta, de lo contrario fallarán.

  5. Por último, una vez más, ejecutamos el bot con nuestro token de inicio de sesión.

¡Enhorabuena! ¡Ahora has creado tu primer comando de barra!