YouTube бот для Discord: полезные функции и возможности
Creating a YouTube Bot for Discord using Python and YouTube API
Bots on the Discord platform are becoming increasingly popular as they add variety and functionality to Discord servers. YouTube bots enhance roles with additional playlist features, video search capabilities, and notifications for new uploads and streams from specific YouTube channels. In this article, we will explore how to create a YouTube bot for Discord using the Python programming language and the YouTube API.
To begin, we will need the following prerequisites:
- A developer account for accessing the YouTube API.
- An installed and configured
discord.pylibrary for working with the Discord API. - An installed
google-api-python-clientlibrary for working with the YouTube API.
Once all the prerequisites are met, we can proceed with creating the bot. Let's start with setting up the Discord connection and creating the basic bot structure:
import discord
from discord.ext import commands
intents = discord.Intents.default()
intents.typing = False
intents.presences = False
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.event
async def on_ready():
print(f'Logged in as {bot.user.name} ({bot.user.id})')
print('------')
bot.run('YOUR_DISCORD_BOT_TOKEN')
After creating the Discord connection, we need to add a command that will retrieve video information from YouTube. We will be using the YouTube API for this. Create a function that will take a video ID and return the video information:
from googleapiclient.discovery import build
youtube = build('youtube', 'v3', developerKey='YOUR_YOUTUBE_API_KEY')
def get_video_info(video_id):
request = youtube.videos().list(part='snippet', id=video_id)
response = request.execute()
if 'items' in response:
video_info = response['items'][0]['snippet']
return video_info
else:
return None
Now we can add a Discord command that will utilize the get_video_info function to retrieve video information. We will also use Embeds for beautiful message formatting:
@bot.command()
async def video(ctx, video_id):
video_info = get_video_info(video_id)
if video_info:
embed = discord.Embed(title=video_info['title'], description=video_info['description'], url=f'https://www.youtube.com/watch?v={video_id}')
embed.set_thumbnail(url=video_info['thumbnails']['default']['url'])
await ctx.send(embed=embed)
else:
await ctx.send('Video not found')
Now our bot can retrieve video information, but what if we want to add a video search feature on YouTube? For this, let's create another Discord command:
@bot.command()
async def search(ctx, query):
request = youtube.search().list(part='snippet', q=query, type='video', maxResults=1)
response = request.execute()
if 'items' in response:
video_id = response['items'][0]['id']['videoId']
video_info = get_video_info(video_id)
if video_info:
embed = discord.Embed(title=video_info['title'], description=video_info['description'], url=f'https://www.youtube.com/watch?v={video_id}')
embed.set_thumbnail(url=video_info['thumbnails']['default']['url'])
await ctx.send(embed=embed)
else:
await ctx.send('Video not found')
else:
await ctx.send('No results found')
To use all these commands, you need to register your bot and obtain a token. After that, don't forget to insert your token into the bot's code.
In this article, we have covered the basics of creating a YouTube bot for Discord using Python and the YouTube API. The bot can retrieve video information by its ID or perform video searches on YouTube. You can further enhance it by adding new features, such as notifications for new uploads on a specific YouTube channel or creating playlists with favorite videos.