-
-
Save pedroricardo/efd3223f6e502e30ae8935ae41f7f0ed to your computer and use it in GitHub Desktop.
import discord | |
#VOCÊ PRECISA DO YOUTUBE-DL INSTALADO, PARA ISSO DIGITE "pip install youtube_dl" NO CMD! | |
client = discord.Client() | |
players = {} | |
COR = 0xF7FE2E | |
@client.event | |
async def on_ready(): | |
print(client.user.name) | |
print("===================") | |
@client.event | |
async def on_message(message): | |
if message.content.startswith('!entrar'): | |
try: | |
channel = message.author.voice.voice_channel | |
await client.join_voice_channel(channel) | |
except discord.errors.InvalidArgument: | |
await client.send_message(message.channel, "O bot ja esta em um canal de voz") | |
except Exception as error: | |
await client.send_message(message.channel, "Ein Error: ```{error}```".format(error=error)) | |
if message.content.startswith('!sair'): | |
try: | |
mscleave = discord.Embed( | |
title="\n", | |
color=COR, | |
description="Sai do canal de voz e a musica parou!" | |
) | |
voice_client = client.voice_client_in(message.server) | |
await client.send_message(message.channel, embed=mscleave) | |
await voice_client.disconnect() | |
except AttributeError: | |
await client.send_message(message.channel, "O bot não esta em nenhum canal de voz.") | |
except Exception as Hugo: | |
await client.send_message(message.channel, "Ein Error: ```{haus}```".format(haus=Hugo)) | |
if message.content.startswith('!play'): | |
try: | |
yt_url = message.content[6:] | |
if client.is_voice_connected(message.server): | |
try: | |
voice = client.voice_client_in(message.server) | |
players[message.server.id].stop() | |
player = await voice.create_ytdl_player('ytsearch: {}'.format(yt_url)) | |
players[message.server.id] = player | |
player.start() | |
mscemb = discord.Embed( | |
title="Música para tocar:", | |
color=COR | |
) | |
mscemb.add_field(name="Nome:", value="`{}`".format(player.title)) | |
mscemb.add_field(name="Visualizações:", value="`{}`".format(player.views)) | |
mscemb.add_field(name="Enviado em:", value="`{}`".format(player.uploaded_date)) | |
mscemb.add_field(name="Enviado por:", value="`{}`".format(player.uploadeder)) | |
mscemb.add_field(name="Duraçao:", value="`{}`".format(player.uploadeder)) | |
mscemb.add_field(name="Likes:", value="`{}`".format(player.likes)) | |
mscemb.add_field(name="Deslikes:", value="`{}`".format(player.dislikes)) | |
await client.send_message(message.channel, embed=mscemb) | |
except Exception as e: | |
await client.send_message(message.server, "Error: [{error}]".format(error=e)) | |
if not client.is_voice_connected(message.server): | |
try: | |
channel = message.author.voice.voice_channel | |
voice = await client.join_voice_channel(channel) | |
player = await voice.create_ytdl_player('ytsearch: {}'.format(yt_url)) | |
players[message.server.id] = player | |
player.start() | |
mscemb2 = discord.Embed( | |
title="Música para tocar:", | |
color=COR | |
) | |
mscemb2.add_field(name="Nome:", value="`{}`".format(player.title)) | |
mscemb2.add_field(name="Visualizações:", value="`{}`".format(player.views)) | |
mscemb2.add_field(name="Enviado em:", value="`{}`".format(player.upload_date)) | |
mscemb2.add_field(name="Enviado por:", value="`{}`".format(player.uploader)) | |
mscemb2.add_field(name="Duraçao:", value="`{}`".format(player.duration)) | |
mscemb2.add_field(name="Likes:", value="`{}`".format(player.likes)) | |
mscemb2.add_field(name="Deslikes:", value="`{}`".format(player.dislikes)) | |
await client.send_message(message.channel, embed=mscemb2) | |
except Exception as error: | |
await client.send_message(message.channel, "Error: [{error}]".format(error=error)) | |
except Exception as e: | |
await client.send_message(message.channel, "Error: [{error}]".format(error=e)) | |
if message.content.startswith('!pause'): | |
try: | |
mscpause = discord.Embed( | |
title="\n", | |
color=COR, | |
description="Musica pausada com sucesso!" | |
) | |
await client.send_message(message.channel, embed=mscpause) | |
players[message.server.id].pause() | |
except Exception as error: | |
await client.send_message(message.channel, "Error: [{error}]".format(error=error)) | |
if message.content.startswith('!resume'): | |
try: | |
mscresume = discord.Embed( | |
title="\n", | |
color=COR, | |
description="Musica pausada com sucesso!" | |
) | |
await client.send_message(message.channel, embed=mscresume) | |
players[message.server.id].resume() | |
except Exception as error: | |
await client.send_message(message.channel, "Error: [{error}]".format(error=error)) | |
client.run('token') |
como coloco em meu bot? dou node . e ele n pega
'VoiceState' object has no attribute 'voice_channel'
ta dando isso depois de resolver vários problemas
Nice! 🖖
Se o erro ser ffmpeg/acov ia not fundo instelem o ffmpeg em seu computador! se for uknow Channel, é porque ele não tem perm de entrar no canal ou o canal de música não existe!
como coloco em meu bot? dou node . e ele n pega
Você tem que pegar o nome do arquivo, deixar nesse formato aqui ó <arquivo>.py
e pra rodar é simples
python <nome do arquivo>.py
eu coloco a musica para testar aparece esse erro aqui e nao sei como resolver:
Ignoring exception in on_message
Traceback (most recent call last):
File "main.py", line 42, in on_message
if client.is_voice_connected(message.server):
AttributeError: 'Client' object has no attribute 'is_voice_connected'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "main.py", line 86, in on_message
await client.send_message(message.channel, "Error: [{error}]".format(error=e))
AttributeError: 'Client' object has no attribute 'send_message'
como eu coloco o bot online agora?
@Guiizoka
como eu coloco o bot online agora?
Metodo Comum no propio PC
obs: se você de algum jeito fechar a janela na qual esta rodando o bot ou desligar o pc, o bot para também.
Windows
python -3 -m pip install discord youtube_dl
python main.py
Linux
pip3 install discord youtube_dl
python3 main.py
Metodo DisCloud ( Recomendado )
- Vá no site da DisCloud
- Clique em "Entrar"
- Autorize sua conta da Discord
- Agora siga o passo a passo com imagens da propia equipe da DisCloud
Metodo Replit
- Pode usar a plataforma Replit.com
- Para isso é só fazer uma conta coisa de minutinhos;
- Na pagina inicial vai ter lá, um Simbolo de mais;
- Selecione a linguagem Python;
- Coloque o nome do projeto;
- Clique em " + Create Repl";
- Dentro do arquivo "main.py" cole o codigo,
ATENÇÃO AGORA
- Copie o token do bot
- Clique no cadeado com o nome de "Secrets"
- Dentro do key coloque "TOKEN"
- Em value coloque o token do bot
- Agora, perto de "Files" tem um papel com um mais dentro
- Clicando nele, vai criar um novo arquivo, no nome escreva
keep_alive.py
- Dentro dele cole o codigo abaixo:
from flask import Flask
from threading import Thread
import random
app = Flask('')
@app.route('/')
def home():
return 'Estou Online!'
def run():
app.run(
host='0.0.0.0',
port=random.randint(2000,9000)
)
def keep_alive():
'''
Cria uma Thread e inicia para poder rodar a função
'''
t = Thread(target=run)
t.start()
- Dentro do main.py agora!
Escreva isso:
import os
token = os.environ['TOKEN']
from keep_alive import keep_alive
# aqui tem o codigo normal do bot na qual foi colado
keep_alive()
client.run(token)
Se tudo deu certo vai aparecer um link mais ou menos assim
https://<nome do projeto>.<seu nick>.repl.co
Agora registre-se aqui
- Apos registrado você ira para uma tela de dashboard
- Clique em "Add New Monitor"
- Em "monitor type" selecione HTTP(S)
- Em "Friendly Name" Coloque o nome do projeto
- Em "URL" coloque o link que pegou lá na replit
- Clique lá em baixo em "Create Monitor" Duas vezes
E pronto!!
qualquer duvida só comentar
eu coloco a musica para testar aparece esse erro aqui e nao sei como resolver:
Ignoring exception in on_message
Traceback (most recent call last):
File "main.py", line 42, in on_message
if client.is_voice_connected(message.server):
AttributeError: 'Client' object has no attribute 'is_voice_connected'During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "main.py", line 86, in on_message
await client.send_message(message.channel, "Error: [{error}]".format(error=e))
AttributeError: 'Client' object has no attribute 'send_message'
estou com o mesmo problema
@Guiizoka
como eu coloco o bot online agora?
Metodo Comum no propio PC
obs: se você de algum jeito fechar uma janela na qual esta rodando o bot ou desligar o pc, o bot para também.
janelas
python -3 - m pip instalar discord youtube_dl python main.pyLinux
pip3 install discord youtube_dl python3 main.pyMetodo DisCloud ( Recomendado )
- Vá no site da DisCloud
- Clique em "Entrar"
- Autorize sua conta da Discord
- Agora siga o passo a passo com imagens da propia equipe da DisCloud
Metodo Replit
- Pode usar uma plataforma Replit.com
- Para isso é só fazer uma conta coisa de minutinhos;
- Na pagina inicial vai ter lá, um Simbolo de mais;
- Selecione uma linguagem Python;
- Coloque o nome do projeto;
- Clique em "+ Criar Repl";
- Dentro do arquivo "main.py" cole o codigo,
ATENÇÃO AGORA
- Copie o token do bot
- Clique no cadeado com o nome de "Secrets"
- Dentro do key coloque "TOKEN"
- Em value coloque o token do bot
- Agora, perto de "Files" tem um papel com um mais dentro
- Clicando nele, vai criar um novo arquivo, no nome escreva
keep_alive.py
- Dentro dele cole o codigo abaixo:
from flask import Flask from threading import Thread import random app = Flask('') @app.route('/') def home(): return 'Estou Online!' def run(): app.run( host='0.0.0.0', port=random.randint(2000,9000) ) def keep_alive(): ''' Cria uma Thread e inicia para poder rodar a função ''' t = Thread(target=run) t.start()
- Dentro do main.py agora!
Escreva isso:import os token = os.environ['TOKEN'] from keep_alive import keep_alive # aqui tem o codigo normal do bot na qual foi colado keep_alive() client.run(token)Se tudo deu certo vai aparecer um link mais ou menos assim
https://<nome do projeto>.<seu nick>.repl.co
Agora registre-se aqui
- Apos registrado você ira para uma tela de dashboard
- Clique em "Add New Monitor"
- Em "monitor type" selecione HTTP(S)
- Em "Friendly Name" Coloque o nome do projeto
- Em "URL" coloque o link que pegou lá na replit
- Clique lá em baixo em "Create Monitor" Duas vezes
E pronto!!
qualquer duvida só comentar
o meu dá aquele erro quando eu coloco na replic e uso o comando do bot no ds
quando eu copio esse código e coloco ele no replit com o meu token ele liga normalmente porém quando dou o comando para o bot tocar a música nao acontece nada e no console aparece os seguintes erros:
eplit: Updating package configuration
--> python3 -m poetry init --no-interaction --name repl_python3_BOT
BOT TESTE
Ignoring exception in on_message
Traceback (most recent call last):
File "main.py", line 17, in on_message
channel = message.author.voice.voice_channel
AttributeError: 'VoiceState' object has no attribute 'voice_channel'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "main.py", line 22, in on_message
await client.send_message(message.channel, "Ein Error: {error}
".format(error=error))
AttributeError: 'Client' object has no attribute 'send_message'
quando eu copio esse código e coloco ele no replit com o meu token ele liga normalmente porém quando dou o comando para o bot tocar a música nao acontece nada e no console aparece os seguintes erros:
eplit: Updating package configuration--> python3 -m poetry init --no-interaction --name repl_python3_BOT
BOT TESTE
Ignoring exception in on_message
Traceback (most recent call last):
File "main.py", line 17, in on_message
channel = message.author.voice.voice_channel
AttributeError: 'VoiceState' object has no attribute 'voice_channel'During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "main.py", line 22, in on_message
await client.send_message(message.channel, "Ein Error:{error}
".format(error=error))
AttributeError: 'Client' object has no attribute 'send_message'
Pelo o meu ver o erro está no código do propio Pedro Ricardo; estou vendo muito desse erro por agora, acho que possa ser uma atualização na própria versão do Discord.py, verei o erro com mais calma, assim que possível retornarei a solução para todos que estiverem com o erro
@guiizoka | @Kuregani
Voltei!
Olha eu acho que talvez se baixar uma verção um pouco antiga vá funcionar, porem nos meus testes sempre teve erros, mais talvez você tenha mais sorte kk
pip install discord.py==1.0.0
Tente baixar dessa verção pra baixo
Agora caso não funcione eu acho que...
bom após vasculhar, eu descobri que modificaram diversas coisas do Discord.py 1.0.0 pra frente e por conta do metodo create_ytdl_player
foi retirado das atuais verções a unica verção funcional é totalmente inviavel pois teria que baixar musica por musica, e isso seria alem de demorado para musicas longas, seria muito pesado, requisitando em gastos adicionais, então recomendo que tente ver bots em node.js, pois o antigo metodo não está mais viavel
Desculpe, mais nem tudo são flores
como faço para adicionar meu bot em varios servidores sem interferir um no outro? tentei pesquisar, mas so achei para Discord.js e como sou bem iniciante sobre linguagem de programação, nao sei como fazer
o meu ta dando o seguinte erro "Traceback (most recent call last):
File "C:\Users\wever\PycharmProjects\pythonProject5\main.py", line 3, in
client = discord.Client()
TypeError: init() missing 1 required keyword-only argument: 'intents'
Process finished with exit code 1"
Esqueceu de importar o yt_dl...