πΆ ΠΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΠΈΡΠΊΠΎΡΠ΄ Π±ΠΎΡΠ° Π½Π° Python? ΠΠ΅ΡΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠΎ ΡΠ½ΠΈΠΏΠΏΠ΅ΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π°!
ΠΠ»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠΎΡΠ΄ Π±ΠΎΡΠ° Π½Π° Python Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ discord.py. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:
import discord
from discord.ext import commands
bot = commands.Bot(command_prefix='!')
@bot.event
async def on_ready():
print('ΠΠΎΡ Π³ΠΎΡΠΎΠ²')
@bot.command()
async def play(ctx, url):
voice_channel = ctx.author.voice.channel
await voice_channel.connect()
voice_client = discord.utils.get(bot.voice_clients, guild=ctx.guild)
voice_client.play(discord.FFmpegPCMAudio(url))
@bot.command()
async def leave(ctx):
await ctx.voice_client.disconnect()
bot.run('ΡΠΎΠΊΠ΅Π½') # ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ 'ΡΠΎΠΊΠ΅Π½' ΡΠ²ΠΎΠΈΠΌ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ Π±ΠΎΡΠ°
ΠΠΎΠ΄ Π²ΡΡΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ Π±ΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΊ Π³ΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠΌΡ ΠΊΠ°Π½Π°Π»Ρ, Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΌΡΠ·ΡΠΊΡ ΠΈΠ· ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ URL-Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΠΎΡΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΎΡ ΠΊΠ°Π½Π°Π»Π° ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ 'ΡΠΎΠΊΠ΅Π½' Π² ΠΊΠΎΠ΄Π΅ Π½Π° ΡΠΎΠΊΠ΅Π½ Π²Π°ΡΠ΅Π³ΠΎ Π΄ΠΈΡΠΊΠΎΡΠ΄ Π±ΠΎΡΠ°.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠΎΡΠ΄ Π±ΠΎΡΠ° Π½Π° Python
Python - ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ Π±ΠΎΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠΎΡΠ΄ Π±ΠΎΡΠ° Π½Π° Python.
Π¨Π°Π³ 1: Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²:
pip install discord.py
pip install youtube_dl
pip install ffmpeg
Π¨Π°Π³ 2: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±ΠΎΡΠ° Π½Π° Discord
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±ΠΎΡΠ° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Discord. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
- ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π½Π° https://discord.com/developers/applications ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠ²ΠΎΡ ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ Discord.
- ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ "New Application" ΠΈ Π΄Π°ΠΉΡΠ΅ ΠΈΠΌΡ ΡΠ²ΠΎΠ΅ΠΌΡ Π±ΠΎΡΡ.
- ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΡ "Bot" ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ "Add Bot". ΠΠ°ΡΠ΅ΠΌ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΠ΅ ΡΠ²ΠΎΠΉ Π²ΡΠ±ΠΎΡ.
- Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ "Token" Π²Π°ΡΠ΅Π³ΠΎ Π±ΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠΎΠ΄Π΅.
Π¨Π°Π³ 3: ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π±ΠΎΡΠ°
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠΎΡΠ΄ Π±ΠΎΡΠ°. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ".py" ΠΈ Π½Π°ΡΠ½Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ:
import discord
import youtube_dl
from discord.ext import commands
TOKEN = "ΠΠ°Ρ_ΡΠΎΠΊΠ΅Π½"
bot = commands.Bot(command_prefix='!')
@bot.event
async def on_ready():
print(f'Logged in as {bot.user.name}')
@bot.command()
async def join(ctx):
channel = ctx.author.voice.channel
await channel.connect()
@bot.command()
async def leave(ctx):
await ctx.voice_client.disconnect()
@bot.command()
async def play(ctx, url):
guild = ctx.guild
voice_client: discord.VoiceClient = discord.utils.get(bot.voice_clients, guild=guild)
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
info = ydl.extract_info(url, download=False)
url2 = info['formats'][0]['url']
voice_client.play(discord.FFmpegPCMAudio(url2))
bot.run(TOKEN)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ discord.py Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ Discord. ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ "join", "leave" ΠΈ "play", ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π±ΠΎΡΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΊ Π³ΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠΌΡ ΠΊΠ°Π½Π°Π»Ρ, ΠΏΠΎΠΊΠΈΠ΄Π°ΡΡ Π΅Π³ΠΎ ΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΌΡΠ·ΡΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ URL.
Π¨Π°Π³ 4: ΠΠ°ΠΏΡΡΠΊ Π±ΠΎΡΠ°
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠΎΡΠ΄ Π±ΠΎΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ²ΠΎΠΉ ΡΠ°ΠΉΠ» Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
python your_bot_file.py
ΠΡΠ»ΠΈ Π²ΡΠ΅ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ "Logged in as Π²Π°Ρ_Π±ΠΎΡ" Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠΎΡΠ΄ Π±ΠΎΡΠ° Π½Π° Python. ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΠ°Π³ΠΈ ΠΏΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±ΠΎΡΠ° Π½Π° Discord ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π±ΠΎΡΠ°. Π’Π΅ΠΏΠ΅ΡΡ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ Π±ΠΎΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π΅ΠΌΡ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.