🤔 Para Refletir :
"O segredo para desenvolver ótimos jogos é... ahm... bom, se eu contasse, não seria mais segredo."
- Jazz

Python - Criação de um Bot para o Discord

makergame2000

Cidadão
Membro
Membro
Juntou-se
13 de Dezembro de 2015
Postagens
217
Bravecoins
2
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"
uwPO81g.png
No meu caso como já tenho instalado vai aparecer isto.

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.
Jr7IzRJ.png
Coloque um nome para o Bot, também pode colocar uma imagem para o bot, neste exemplo não será preciso uma imagem
NgN4w6a.png
Por fim clique em "Create App"
De seguida vai aparecer por baixo da descrição isto, clique em "Create User Bot"
MxtbxP5.png
E pronto o Bot está ativo e agora é preciso programar o Bot
Guarde o Client ID do bot porque é preciso para depois ligar o bot pelo código
vpdEZDN.png
Não partilhe este código com ninguem porque depois qualquer pessoa pode modificar o bot

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
9d6eF55.png
Depois o Bot irá aparecer em Offline no grupo que você fez adicionar
pC0IBcF.png



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
De seguida precisamos disto
Código:
cliente_discord = discord.Client()

@cliente_discord.event
async def on_ready():
    print('LIGOU')
Este evento vai escrever na consola que o Bot está ligado e que tudo correu bem.

Código:
@cliente_discord.event
async def on_message(texto):
    if (texto.author.id == 'ID DO BOT'): return
Esta ultima linha serve para o bot não ler o que ele proprio escreve porque senão isto pode causar loops e quebrar o programa

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
E agora vamos criar Comandos
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
Mas antes de testar pela primeira vez o Bot é preciso no final e sempre no final estar esta linha
Código:
cliente_discord.run('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX5XKDL4')
Isto é a URL do bot que se obtem na pagina do seu Bot no Discord abaixo do ID
DPnfQDF.png
Até agora temos código assim.
x6Xe9z3.png
O bot já está pronto para ligar
jyJlOGB.png

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
Ele vai mostrar uma resposta sempre que vir '?' no final.
L9FsCE1.png

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')
Agora coloque os seus próprios comandos ou faça um sistema de conversa, ou até um jogo que perfeitamente possivel, como por exemplo um jogo de cartas.
 
Voltar
Topo Inferior