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:
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.
A continuación, creamos una instancia de
Client. Este cliente es nuestra conexión a Discord.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 eventoon_message()es llamado cuando nuestro bot recibe un mensaje.Puesto que nuestro evento
on_message()es llamado por cada mensaje recibido, tenemos que asegurarnos de ignorar nuestros mismos mensajes. Hacemos esto comprobando si elMessage.authores el mismo queClient.user.Después, comprobamos si
Message.contentempieza 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.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:
La primera línea no ha cambiado.
A continuación, creamos una instancia de
Bot. Esto es diferente deClient, ya que soporta la creación de comandos de barra y otras características, al tiempo que hereda todas las características deClient.Luego usamos el decorador
Bot.slash_command()para registrar un nuevo comando de barra. El atributoguild_idscontiene 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.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.
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!