# 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:

```python
py -3 -m pip install -U discord.py
```

### Passo 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:

```python
import discord
TOKEN = token_marcador_de_posición
```

Precisas 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:

```python
client = discord.Client()
```

### Passo 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.

```python
@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})')
```

Nota Frequentemente, 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.

```none
@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`.

Nota O teu bot do Discord pode realizar qualquer ação. Ou seja, podes criar bots que realizem tarefas semelhantes às do popular bot de chat e moderação conhecido como MEE6, ou programar o teu próprio bot de música no Discord. Escolhemos um exemplo simples que é fácil de compreender para quem tem menos experiência na matéria.


This is a markdown version of: [https://www.ionos.com/pt-pt/digitalguide/servidores/know-how/bot-do-discord-em-python/](https://www.ionos.com/pt-pt/digitalguide/servidores/know-how/bot-do-discord-em-python/) for AI/LLM consumption.