Ir para o conteúdo

Como usar a API Discord com Python: um guia detalhado

A API Discord oferece uma infinidade de oportunidades para desenvolvedores se integrarem ao Discord, criarem bots, automatizarem servidores e aprimorarem comunidades usando Python. Neste guia abrangente com mais de 2000 palavras, nos aprofundaremos nos recursos da API Discord, pré-requisitos, autenticação, endpoints, bibliotecas, projetos de exemplo e técnicas avançadas – equipando você com tudo o que você precisa saber para começar.

Por que usar a API Discord com Python?

Antes de nos aprofundarmos no código, vale a pena destacar algumas das coisas interessantes que os desenvolvedores construíram usando a API Python Discord:

  • Mee6 – Um dos bots Discord mais populares, com mais de 250 milhões de usuários. Fornece moderação, nivelamento, música, Twitch, Reddit e outras integrações.

  • YAGDB – Bot repleto de recursos com mais de 100 comandos para moderação, registro, gerenciamento de funções, lembretes e muito mais. Usado em mais de 600,000 servidores Discord.

  • discórdia.py – Biblioteca wrapper de API proeminente que habilitou muitos dos primeiros bots Discord em Python. Oferece abstrações fáceis para bots e integrações.

  • disStream – Bot de streaming de música com fila de lista de reprodução, suporte para YouTube/Twitch e filtros de som como reforço de graves.

  • discordbot.py – Bot aproveitando aprendizado de máquina para moderação automatizada de conteúdo tóxico e spam. Apresenta integrações de IA.

  • feedback de discórdia – Bot de feedback do cliente, permitindo que os usuários enviem avaliações, classificações e feedback por meio de DMs do Discord de maneira conveniente.

E estes são apenas alguns exemplos: os desenvolvedores integraram o Discord de maneiras criativas com plataformas que vão do Reddit e GitHub a aplicativos como o Spotify usando a flexibilidade do Python.

Pré-requisitos para usar a API Discord

Antes de mergulhar em qualquer codificação, você desejará cobrir estas etapas de pré-requisito:

Crie uma conta no Discord

  • Obviamente, preciso de uma conta Discord – inscreva-se gratuitamente em discórdia.com se você não tiver um.

Crie um servidor Discord

  • Crie um servidor no Discord para teste. Isso lhe dá acesso total de administrador em vez de depender de outro servidor.

  • Para bots públicos/de produção, mais tarde você desejará gerar links de convite para adicionar a outros servidores.

Ativar o modo de desenvolvedor

  • No Discord, vá para Configurações do usuário > Avançado > Modo de desenvolvedor para desbloquear opções adicionais.

Instale o Python

  • Tenha o Python instalado e pronto para codificar. A API Discord suporta Python 3.8 ou superior.

  • Opcionalmente, configure um ambiente virtual para isolar dependências.

Obtendo credenciais da API Discord

Para fazer chamadas de API, precisamos gerar credenciais:

Crie um aplicativo Discord

Crie uma conta de bot

  • Na guia Bot do seu aplicativo, adicione uma nova conta de bot.

  • Você pode personalizar o nome de usuário, avatar etc.

Copie o token

  • Revele e copie o token do bot na guia Bot – isso é usado para autenticar solicitações de API.

  • Mantenha isso seguro como uma senha. Qualquer pessoa com o token pode controlar seu bot.

Obtenha IDs de canal

  • No servidor Discord, clique com o botão direito em um canal e selecione “Copiar ID” para obter o ID do canal.

  • Usaremos IDs de canal para especificar para onde enviar mensagens.

Autenticando com a API Discord

Com o token e os IDs do canal, agora podemos autenticar. Existem duas abordagens:

Tokens de bot

  • Usado para contas de bot autenticarem com permissões completas.

  • Passe o token no Authorization cabeçalho:

headers = {
    ‘Authorization‘: ‘Bot ‘ + bot_token
}

Tokens de usuário

  • Pode ser usado para contas de usuário, mas tem permissões limitadas.

  • Gerado na guia OAuth2 em seu aplicativo de desenvolvimento Discord.

  • Autentique de forma semelhante:

headers = {
    ‘Authorization‘: ‘Bearer ‘ + user_token
} 

Os tokens de bot são mais comuns para acesso completo à API. Os tokens de usuário permitem interagir em nome do usuário.

Terminais comuns da API Discord

A API Discord expõe vários endpoints para diferentes entidades, como canais, mensagens, usuários, etc.

Alguns endpoints comuns incluem:

  • Canais - /channels/{channel.id}
  • Mensagens - /channels/{channel.id}/messages
  • Reações - /channels/{channel.id}/messages/{message.id}/reactions
  • Guilds - /guilds/{guild.id}
  • Membros - /guilds/{guild.id}/members

Realizamos operações como envio de mensagens fazendo solicitações a esses endpoints.

Bibliotecas de wrapper de API Discord

Embora possamos chamar a API bruta diretamente, as bibliotecas wrapper do Python podem simplificar as coisas:

  • discórdia.py – A biblioteca mais popular com um design intuitivo orientado a objetos.
  • disnaque – Um fork do discord.py atualizado para as alterações mais recentes da API.
  • hikari – Wrapper focado em desempenho e focado em velocidade.
  • próximo cabo – Wrapper de API assíncrona criado para Python 3.10+.

Eles fornecem abstrações fáceis para bots, comandos, eventos, etc., economizando tempo de desenvolvimento em comparação com solicitações brutas.

Envio de Mensagens

Vamos ver algum código para enviar uma mensagem usando o /channels/{channel.id}/messages ponto final:

import requests

url = "https://discord.com/api/v9/channels/1234567890/messages" 

data = {"content": "Hello world!"}

headers = {
    "Authorization": "Bot OTI..." 
}

response = requests.post(url, headers=headers, json=data)

Usamos uma solicitação POST com o content carga útil do corpo para enviar nossa mensagem.

Recuperando Mensagens

Para recuperar mensagens, GET do mesmo endpoint e analisamos a resposta:

response = requests.get(url, headers=headers)

json_data = response.json()

for message in json_data:
   print(message[‘content‘])

A resposta contém uma matriz de objetos de mensagem pelos quais podemos iterar.

Editando Mensagens

Para editar uma mensagem, precisamos do message.id valor e use uma solicitação PATCH:

message_id = "876543234567891234"

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}"

data = {"content": "New message contents!"}

response = requests.patch(url, headers=headers, json=data)

Reagindo a mensagens

Podemos reagir usando o /reactions/{emoji}/@me ponto final:

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}/reactions/👍/@me"

response = requests.put(url, headers=headers)

Isso adiciona uma reação positiva à mensagem do bot.

Exclusão de mensagens

Finalmente, podemos excluir com uma solicitação DELETE:

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}"

response = requests.delete(url, headers=headers) 

O texto acima deve fornecer uma boa visão geral das operações comuns de mensagens. Agora vamos discutir como trabalhar com a API WebSocket.

Aproveitando a API WebSocket

A API Discord oferece duas opções de conectividade:

API REST – Usado para a maioria das operações, como envio de mensagens.

API WebSocket – Para ouvir eventos em tempo real, como mensagens.

WebSockets permitem a criação de bots orientados a eventos que reagem a eventos ao vivo em vez de pesquisar a API REST.

Por exemplo, aqui está um manipulador de eventos on_message simples:

import discord

class MyBot(discord.Client):

    async def on_ready(self):
       print(‘Logged in as {0}!‘.format(self.user))

    async def on_message(self, message):
        print(‘Message from {0.author}: {0.content}‘.format(message))

bot = MyBot()
bot.run(‘token‘)

Isso responde às mensagens imediatamente, em vez de aguardar o retorno de uma chamada de API.

Tratamento de erros de API

Ao chamar a API, devemos lidar com os erros normalmente:

try:
    response = requests.post(url, headers=headers, json=data)
    response.raise_for_status()
except requests.exceptions.HTTPError as err:
    print(err)
    print(response.text)

Alguns erros comuns incluem:

  • 50001 – Falta de acesso ao recurso
  • 50035 – Corpo da solicitação inválido
  • 429 – Taxa limitada

veja a docs para obter detalhes sobre erros.

Construindo um Discord Bot em Python

Vamos examinar um exemplo de bot para mostrar os principais recursos:

Recursos do bot:

  • Enviar saudação na inicialização
  • Responder a mensagens contendo "ajuda"
  • Exclua mensagens com palavras proibidas
  • Adicionar respostas de emoji de reação
  • Responder com imagens/emojis
# Imports and initialization

import os
import discord
from dotenv import load_dotenv

load_dotenv()
TOKEN = os.getenv(‘DISCORD_TOKEN‘)

intents = discord.Intents.default()
intents.message_content = True 
client = discord.Client(intents=intents)

# Event handlers

@client.event
async def on_ready():
   channel = client.get_channel(1234567890)  
   await channel.send("I‘m alive!")

@client.event
async def on_message(message):

   if "help" in message.content:
      await message.channel.send("Contact our support team for assistance!")

   elif check_for_banned_words(message.content):
      await message.delete()

   # Reactions   
   emojis = ["👍", "❤️"]

   for emoji in emojis: 
       await message.add_reaction(emoji)

# Run bot             
client.run(TOKEN)

Isso mostra um bot Discord simples, mas funcional em Python, respondendo a eventos e comandos.

Dicas e truques avançados da API Discord

Vamos completar este guia com algumas dicas profissionais:

  • Use raspagem de membros com LISTENER pretende obter datas de adesão, aumentar o status, etc., que não estão nos dados padrão.

  • Aproveite o processamento de linguagem natural e IA como o TensorFlow para moderação automatizada com base na semântica da mensagem versus palavras-chave.

  • Agende anúncios lucrativos, anúncios, etc. usando cron jobs ou agendadores como APScheduler para obter o tempo ideal.

  • Implemente uma lógica personalizada protegendo seu bot contra abusos, como limitação de taxa de usuários individuais.

  • Crie um painel da web com Flask ou FastAPI para controlar seu bot via HTTP em vez de apenas Discord.

  • Use multithreading para paralelizar tarefas computacionalmente intensivas, como gerar relatórios analíticos.

  • Crie funções auxiliares e abstrações em torno das chamadas de API que você usa com mais frequência.

Hackear alguns desses recursos mais avançados pode realmente separar seu bot da multidão.

Considerações finais sobre a API Discord

A API do Discord oferece oportunidades incríveis para criar bots e ferramentas que aprimoram a experiência do Discord para comunidades e servidores. Combinado com a versatilidade do Python, os desenvolvedores têm uma base incrível para trazer integrações criativas e automação para mais de 100 milhões de usuários do Discord.

Espero que este mergulho profundo de mais de 2000 palavras forneça a você os pré-requisitos, autenticação, conhecimento de endpoint, exemplos e técnicas necessárias para começar a aproveitar a API Discord em seus próprios projetos. As comunidades que usam suas criações vão agradecer!

Alguns recursos finais que valem a pena explorar à medida que você continua sua jornada:

Agora – vá em frente e codifique algo incrível! A comunidade Python Discord mal pode esperar para ver o que você construirá.

Junte-se à conversa

O seu endereço de e-mail não será publicado. Os campos obrigatórios são marcados com *