Seu próprio servidor Discord pode dar muito trabalho, e é por isso que os bots que cuidam das funções ad­mi­nis­tra­ti­vas são populares. Você pode criar fa­cil­mente seu próprio bot usando a bi­bli­o­teca Python discord.py e aplicando co­nhe­ci­men­tos básicos de Python.

Passo a passo para criar seu próprio bot Python Discord

Antes de começar a programar seu bot, você deve criar um bot do Discord. Você pode criar seu próprio apli­ca­tivo com o Discord e, depois de fazer isso, nada impedirá seu bot do Discord. O código ne­ces­sá­rio para o seu bot do Discord depende das tarefas que você deseja au­to­ma­ti­zar. O bot apre­sen­tado neste tutorial tem o objetivo de adicionar funções em um servidor Discord.

Etapa 1: instalar o discord.py

Para criar seu bot, a bi­bli­o­teca Python discord.py é uma fer­ra­menta essencial. Antes de começar, você deve instalá-la em seu sistema usando o pip, como é de costume com o Python. No Windows, o comando de terminal apro­pri­ado para a ins­ta­la­ção é:

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

Etapa 2: criar documento Python

Crie um novo documento Python para codificar seu bot. Você pode usar vários editores de código para seu arquivo Python ou um ambiente de de­sen­vol­vi­mento integrado (IDE) como o Pycharm.

Etapa 3: conectar-se ao Discord

Primeiro, importe a bi­bli­o­teca do Discord para seu documento Python. Defina o token do bot que você recebeu ao registrar seu bot do Discord no site do de­sen­vol­ve­dor do Discord. Para fazer isso, substitua o espaço reservado pelo seu token de bot per­so­na­li­zado:

import discord
TOKEN = token_placeholder
python

Você precisa da bi­bli­o­teca para interagir com a API do Discord. Para se conectar ao Discord, você precisará de uma instância do chamado objeto cliente. Use o código a seguir para criá-lo:

client = discord.Client()
python

Etapa 4: verificar se a conexão foi es­ta­be­le­cida com sucesso

Para garantir que seu bot esteja conectado cor­re­ta­mente ao servidor Discord, inclua um método as­sín­crono em seu arquivo Python. Isso é feito res­pon­dendo ao evento on_ready , que é definido na API discord.py. Para permitir que sua função funcione como um ma­ni­pu­la­dor de eventos, use o @client.event decorador em Python.

@client.event
async def on_ready():
    print(f'{client.user} is connected to the following server:\n')
    for server in client.guilds:
        print(f'{server.name}(id: {server.id})')
python
Nota

As funções as­sín­cro­nas são fre­quen­te­mente em­pre­ga­das na pro­gra­ma­ção de bots do Discord. Isso garante que a função seja executada em um thread dedicado separado do thread principal, per­mi­tindo a execução paralela de tarefas de bot sem bloquear o thread principal.

Etapa 5: adicionar fun­ci­o­na­li­da­des ao seu bot

Para im­ple­men­tar a fun­ci­o­na­li­dade do bot no discord.py, o on_message evento é utilizado. Esse evento é acionado sempre que o bot do Discord recebe uma mensagem. Para lidar com esse evento, seu método deve primeiro de­ter­mi­nar o remetente da mensagem e, em seguida, executar a fun­ci­o­na­li­dade desejada, como adicionar funções.

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.content.startswith('!add_role'):
        # Find role name
        role_name = message.content.split(' ')[1]
        # search corresponding Discord role
        role = discord.utils.get(message.guild.roles, name=role_name)
        # Check if the role exists
        if role is None:
            await message.channel.send(f'Role "{role_name}" does not exist)
            return
        # Role assignment
        await message.author.add_roles(role)
        await message.channel.send(f'Role "{role_name}" was added to {message.author}')

Ini­ci­al­mente, a função verifica se a mensagem recebida foi enviada pelo próprio bot do Discord. Se isso for verdade, a função é encerrada usando a instrução return .

A próxima etapa envolve um exame mais detalhado do conteúdo da mensagem. Se a mensagem começar com a string !add_role, o bot a re­co­nhe­cerá como um comando. Isso indica que os usuários do servidor devem iniciar as so­li­ci­ta­ções ao bot do Discord com a string !add_role . Embora qualquer string possa ser utilizada como um comando, é pre­fe­rí­vel usar strings que não sejam comumente usadas em linguagem natural.

O bot determina o nome da função desejada a partir de um comando in­ter­pre­tado cor­re­ta­mente usando a função Python split(). Em seguida, ele localiza a função relevante em seu servidor. Você pode fazer isso apro­vei­tando o objeto message , que contém várias in­for­ma­ções sobre o servidor no campo message.guild .

Se a função não existir e, con­se­quen­te­mente, tiver o valor “None” (Nenhum), será gerada uma mensagem de erro e a função será encerrada usando a instrução return . Se a função existir, ela será atribuída conforme ne­ces­sá­rio. Para isso, uti­li­za­mos a função add_roles da bi­bli­o­teca discord.py, que também é definida no objeto message .

Ir para o menu principal