Como criar, passo a passo, o seu próprio bot do Discord com Python
Gerir o teu próprio servidor do Discord pode dar muito trabalho, e é por isso que os bots que se encarregam das funções administrativas são tão populares. Com a biblioteca discord.py e alguns conhecimentos básicos de Python, podes criar um bot com relativa facilidade.
Crie o seu próprio bot do Discord com Python, passo a passo
Antes de começar a programar o bot do Discord, tens de o criar. Para tal, envia o teu pedido ao Discord e segue os passos necessários. O código de programação de que precisas para o teu bot do Discord dependerá das tarefas que pretendes automatizar. O bot que te mostramos neste tutorial serve para atribuir funções e permissões dentro de um servidor do Discord.
Passo 1. Instalar o discord.py
Uma vez que a biblioteca discord.py do Python é utilizada para criar o bot, será a primeira coisa que precisará de instalar no seu sistema. Como é habitual no Python, a instalação é feita através do pip. No Windows, o comando que deve introduzir no terminal é o seguinte:
py -3 -m pip install -U discord.pypythonPasso 2. Criar um ficheiro Python
Crie um novo ficheiro Python para programar o seu bot. Para tal, pode utilizar diferentes editores de código ou um ambiente de desenvolvimento integrado (IDE), como o Pycharm.
Passo 3. Estabelecer a ligação com o Discord
Importe a biblioteca do Discord para o seu ficheiro Python e especifique o token que recebeu ao registar o seu bot na página de programadores do Discord. Para tal, substitua o marcador de posição pelo token do seu bot:
import discord
TOKEN = token_marcador_de_posiciónpythonPrecisas da biblioteca para interagir com a API do Discord. Também precisas de uma instância do objeto cliente para te ligares ao Discord. A instância é criada com o seguinte código:
client = discord.Client()pythonPasso 4. Verificar se a ligação foi estabelecida corretamente
Em seguida, deve incluir um método assíncrono no seu ficheiro Python que verifique se o seu bot se ligou corretamente ao servidor do Discord. Para tal, deve responder ao evento on_ready definido na API discord.py. Utilize o decorador (ou padrão de design) do Python @client.event para que a sua função funcione como um controlador de eventos.
@client.event
async def on_ready():
print(f'{client.user} está conectado a los siguiente servidores:\n')
for server in client.guilds:
print(f'{server.name}(id: {server.id})')pythonFrequentemente, utilizam-se funções assíncronas para programar bots do Discord. Isto significa que a função é executada num segmento dedicado, que está desacoplado do segmento principal. Desta forma, o segmento principal não fica bloqueado e as tarefas do bot podem ser executadas em paralelo.
Passo 5. Adicione funcionalidades ao seu bot
A API discord.py define um evento on_message que o ajuda a executar as funções do seu bot. O evento é ativado sempre que o seu bot do Discord recebe uma mensagem. O método que gere o evento deve verificar primeiro de quem é a mensagem e, em seguida, executar a função pretendida; no nosso caso, adicionar funções.
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('!add_role'):
# Obtener el nombre del rol
role_name = message.content.split(' ')[1]
# Encontrar el rol de Discord correspondiente
role = discord.utils.get(message.guild.roles, name=role_name)
# Comprobar si el rol existe
if role is None:
await message.channel.send(f'El rol "{role_name}" no existe)
return
# Asignar el rol
await message.author.add_roles(role)
await message.channel.send(f'El rol "{role_name}" se ha asignado a {message.author}')Em primeiro lugar, a função verifica se a mensagem recebida provém do próprio bot do Discord. Se for esse o caso, a função é encerrada com a instrução return.
Caso contrário, o conteúdo da mensagem é analisado mais detalhadamente. Se a mensagem começar com a sequência !add_role, o bot interpreta-a como um comando. Ou seja, os utilizadores do servidor devem iniciar os pedidos dirigidos ao bot do Discord com a sequência !add_role. Logicamente, é possível utilizar qualquer sequência como comando. No entanto, é preferível que a sequência utilizada seja uma sequência que não seja empregada na linguagem natural.
A partir de uma mensagem que o bot interpreta como um comando válido, o nome da função solicitada é determinado através da função split() do Python. Em seguida, procura-se a função correspondente no servidor. Para tal, pode utilizar o objeto message, que contém várias informações sobre o seu servidor no item message.guild.
Se a função não existir e, por conseguinte, tiver o valor «None», é emitida uma mensagem de erro e a função é encerrada com a instrução return. Caso contrário, é atribuída a função correspondente com a função add_roles da biblioteca dicord.py, que também está definida no objeto message.