Python - Criação de um Bot para o Discord
Ao fazer este tutorial como já tinha dito vou supor que você não tem conhecimentos muito fortes em Python portanto não vou entrar em detalhes na linguagem.
Neste tutorial vamos criar um Bot para o Discord em Python, um bot simples.
Vai ser preciso usar Python na sua ultima versão que é a Python 3.6.4, pode a encontrar aqui https://www.python.org/downloads/ Python
Depois é preciso a API do discord para python, vamos usar o Discord.py que pode ser encontrado aqui https://github.com/Rapptz/discord.py, não é necessario fazer download por aqui
Antes de começar é preciso ter uma conta no Discord registada, contas visitantes não funcionam.
Você pode usar qualquer IDE mas eu uso Visual Studio Code que pode encontrar no site oficial https://code.visualstudio.com/download
Instalar Discord.py
Abra o CMD, faça "pip install discord.py"
Configurar o Bot no Discord
Depois de instalar o Discord.py vá até esta página https://discordapp.com/developers/applications/me, aqui estão as suas aplicações feitas para o discord.
Crie uma nova.
De seguida vai aparecer por baixo da descrição isto, clique em "Create User Bot"
Guarde o Client ID do bot porque é preciso para depois ligar o bot pelo código
Colocar Bot num grupo
Para o seu Bot entrar numa conversa você precisa de ser moderador ou qualquer tipo de autorização, neste exemplo eu fiz um grupo só para mim onde vou testar o Bot
Para aceder á janela de autorizar bots use este link e ponha o código do ID em COLOQUE_ID_AQUI
Código:
https://discordapp.com/oauth2/authorize?&client_id=COLOQUE_ID_AQUI&scope=bot&permissions=0
Progrmar Bot
Como já tinha dito eu vou usar VS:Code, use o IDE que quiser não importa nada porque o que vai ligar o Bot é a URL que vamos obter mais á frente, ao momento em que o Bot é compilado e executado o Bot fica online, portanto você só precisa de um compilador python se você quiser você pode usar o bloco de notas como IDE
Vamos começar a Importar funções o discord e outras coisas importantes.
Ao fazer este tutorial como já tinha dito vou supor que você não tem conhecimentos muito fortes em Python e portanto para deixar isto simples não vou explicar o que cada classe faz ou o que é uma class ou uma função e como python funciona.
Código:
import discord
import asyncio
import random
import os
Código:
cliente_discord = discord.Client()
@cliente_discord.event
async def on_ready():
print('LIGOU')
Código:
@cliente_discord.event
async def on_message(texto):
if (texto.author.id == 'ID DO BOT'): return
Até agora o nosso script está assim
Código:
import discord
import asyncio
import random
import os
cliente_discord = discord.Client()
@cliente_discord.event
async def on_ready():
print('LIGOU')
@cliente_discord.event
async def on_message(texto):
if (texto.author.id == 'XXXXXXXXXXXX5043'): return
Este bot vai ser ativado quando é chamado pelo nome, ou seja que qualquer comando para ser feito é preciso chamar o Bot
O primeiro comando que vamos fazer é a capacidade de escolher um valor de 1 a 6 fazendo assim um dado
Código:
if texto.content.startswith('Bot'): #Se uma frase tiver Bot no inico
frase = texto.content[3:].strip() #Tira 'Bot' da frase
if frase.lower().startswith('dado'): #ATira dado de 1 a 6
numr = random.randint(1,6)
await cliente_discord.send_message(texto.channel,str(numr))
return
Código:
cliente_discord.run('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX5XKDL4')
E aqui esta como Online e a dar valores
Vamos fazer mais um comando, aqui ele responde a perguntas, com respostas já definidas numa array que o python escolhe aleatoriamente
Código:
if frase.endswith('?'):
resposta = random.choice(['Não respondo a isso','Sim','As vezes','Não','Claro','NUNCA!','Um dia talvez','A resposta está dentro de ti','Mais ou menos','Uma Bosta','Podia ser pior'])
await cliente_discord.send_message(texto.channel,resposta)
return
Código Final
Código:
import discord
import asyncio
import random
import os
cliente_discord = discord.Client()
@cliente_discord.event
async def on_ready():
print('LIGOU')
@cliente_discord.event
async def on_message(texto):
if (texto.author.id == 'ID'): return
if texto.content.startswith('Bot'): #Se uma frase tiver Bot no inico
frase = texto.content[3:].strip() #Tira 'Bot' da frase
if frase.lower().startswith('dado'): #ATira dado de 1 a 6
numr = random.randint(1,6)
await cliente_discord.send_message(texto.channel,str(numr))
return
if frase.endswith('?'):
resposta = random.choice(['Não respondo a isso','Sim','As vezes','Não','Claro','NUNCA!','Um dia talvez','A resposta está dentro de ti','Mais ou menos','Uma Bosta','Podia ser pior'])
await cliente_discord.send_message(texto.channel,resposta)
return
cliente_discord.run('URL')