Como hacer comandos para un bot en Discord #1 | Comando say, ban y kick

in #spanish6 years ago (edited)

¡Buenas! Esta es una nueva serie de tutoriales de como hacer un bot de Discord en Python, como la que ya había hecho antes, pero esta estará más enfocada en los comandos específicos, por lo cual podrán pedirme que explique como hacer un comando específico.

Para empezar, les invito a que primero visiten mi serie de tutoriales de como hacer un bot básico en Discord para que puedan entender estos tutoriales.

1° - Crear la aplicación y añadirla a un servidor (Link: https://steemit.com/discord/@eleiber/como-hacer-un-bot-en-discord--parte-1---creando-la-aplicacin )

2° - Instalar las aplicaciones necesarias y los módulos de Discord (Link: https://steemit.com/spanish/@eleiber/como-hacer-un-bot-en-discord-or-parte-2-instalando-las-apps-y-modulos )

3° - Programación de un bot sencillo con comandos básicos (Link: https://steemit.com/spanish/@eleiber/como-hacer-un-bot-en-discord-or-parte-3-programando-el-bot )

Una vez hayan creado su bot e instalado todo lo necesario, ¡podemos empezar!

Comando say

En este comando lo que se hace es que el bot repita el contenido que el usuario haya colocado en el mensaje.

Este es uno de los comandos más sencillos, para ello debes definir primero el comando con estas dos líneas de código:

@bot.command()
async def say(ctx, *, mensaje):

La primera línea de código le dice al bot que eso es un comando, y la segunda crea el comando con el nombre "say", y en él carga "ctx", que es el contexto del mensaje (el canal donde se envió, el servidor, el usuario que lo ejecutó y el mensaje en sí) y también "mensaje", que es una variable que creamos que contiene el contenido del mensaje sin contar el prefijo.

Luego deberíamos agregar una simple línea de código con el contenido "await ctx.send(mensaje)" abajo de la segunda línea y el código quedaría algo así:

@bot.command()
async def say(ctx, *, mensaje):
    await ctx.send(mensaje)

Lo que hace el "ctx.send(mensaje)" es enviar en "ctx", el contexto, es decir, el canal donde se envió el comando, un mensaje con el texto de la variable "mensaje".

Luego ejecutamos el bot, escribimos el comando y debería funcionar así:

Obviamente tienes que tomar en cuenta que debes ejecutar el comando con el prefijo que tú le pusiste al bot, en mi caso es "st!".

Y pues ya funcionando el comando, podemos pasar al siguiente

Comando ban

Este comando lo que hace es banear, o en terminología hispana, bloquear un usuario de un servidor de Discord, para evitar que este vuelva al servidor a menos que sea desbloqueado manualmente por un usuarios con permisos de administrar bans en el servidor.

Primero se define el comando:

@commands.has_permissions(ban_members=True)
@bot.command()
async def ban(ctx, member : discord.Member):

Básicamente aquí el comando está revisando que el autor del comando tenga permisos para banear, y si no los tiene, ignorará su mensaje, y luego toma el contexto del mensaje más un miembro del servidor, ya sea en forma de mención, su usuario o su ID.

Ahora se le agrega al código estas líneas:

@commands.has_permissions(ban_members=True)
@bot.command()
async def ban(ctx, member : discord.Member):
    await member.ban()
    await ctx.send("¡El usuario {} ha baneado al usuario {}!".format(ctx.author.name, member.name))

Aquí la línea await member.ban() está baneando al miembro que fue definido como member en la tercera línea. Luego está mandando un mensaje con las variables ctx.author.name (el nombre del autor del mensaje) y member.name(el nombre del miembro baneado).

El comando debería funcionar así:

Y así, podemos pasar al siguiente comando.

Comando kick

Este comando es relativamente similar al comando ban en cuanto a código, y lo que hace es kickear, o patear, a un usuario del servidor, y aunque no le prohíbe que vuelva al servidor, hace que pierda sus roles actuales en el servidor y hace que requiera de una invitación al servidor para poder volver.

Al igual que en los otros dos comandos, se debe comenzar definiendo tal que así:

@commands.has_permissions(kick_members=True)
@bot.command()
async def kick(ctx, member : discord.Member):

Al igual que en el comando ban, la primera línea se encarga de revisar los permisos, pero en este caso está revisando que el usuario que ejecuta el comando tenga permisos para kickear miembros del servidor.

Ahora se agregan estas líneas, muy similares a las del comando ban:

@commands.has_permissions(kick_members=True)
@bot.command()
async def kick(ctx, member : discord.Member):
    await member.kick()
    await ctx.send("¡El usuario {} ha kickeado al usuario {}!".format(ctx.author.name, member.name))

La diferencia entre las líneas del comando ban y este es que en este caso, sin contar el nombre del comando, es que primero, el bot requiere que el usuario que lo ejecute tenga permisos para kickear miembros, luego, el bot está usando la función .kick() en vez de la función .ban(), y por último, el mensaje de confirmación tiene la palabra "kickeado" en vez de "baneado" pero por lo demás, son exactamente iguales.

Ahora teniendo en cuenta esto se puede guardar los cambios para probar el comando:

Y pues aquí finalizan los primeros tres comandos de esta serie de tutoriales que espero les parezca interesante y esperen con ansias la siguiente parte, si tienen alguna duda o sugerencia no duden en colocarla en los comentarios y la responderé.

PD: Gracias a @andri4k por dejarse banear y kickear para probar los comandos jajajaja.

Todas las imágenes de Discord son propiedad de https://discordapp.com/

Sort:  

Congratulations @eleiber! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You received more than 10 as payout for your posts. Your next target is to reach a total payout of 50

Click here to view your Board of Honor
If you no longer want to receive notifications, reply to this comment with the word STOP

Support SteemitBoard's project! Vote for its witness and get one more award!

Thank you so much for sharing this amazing post with us!

Have you heard about Partiko? It’s a really convenient mobile app for Steem! With Partiko, you can easily see what’s going on in the Steem community, make posts and comments (no beneficiary cut forever!), and always stayed connected with your followers via push notification!

Partiko also rewards you with Partiko Points (3000 Partiko Point bonus when you first use it!), and Partiko Points can be converted into Steem tokens. You can earn Partiko Points easily by making posts and comments using Partiko.

We also noticed that your Steem Power is low. We will be very happy to delegate 15 Steem Power to you once you have made a post using Partiko! With more Steem Power, you can make more posts and comments, and earn more rewards!

If that all sounds interesting, you can:

Thank you so much for reading this message!

Coin Marketplace

STEEM 0.21
TRX 0.20
JST 0.035
BTC 91178.33
ETH 3192.43
USDT 1.00
SBD 2.96