stream-discord-bot/bot.py

50 lines
1.9 KiB
Python
Raw Normal View History

2024-05-25 14:58:06 +00:00
import os
from urllib.parse import urlparse, parse_qs
import discord
DISCORD_TOKEN = os.getenv("DISCORD_TOKEN")
DISCORD_CHANNEL = int(os.getenv("DISCORD_CHANNEL"))
DISCORD_GUILD = int(os.getenv("DISCORD_GUILD"))
class CustomClient(discord.Client):
async def on_ready(self):
print(f"{self.user} has connected to Discord!")
async def on_message(self, message: discord.message.Message):
if (
message.channel.id == DISCORD_CHANNEL
and message.guild.id == DISCORD_GUILD
and message.author.id != self.user.id
):
url = urlparse(message.content)
if "youtu" in url.hostname:
if (
url.path.strip("/").startswith("shorts")
and len(splitted := url.path.split("/")) >= 2
):
video_id = splitted[len(splitted) - 1]
await message.reply(
content=f"https://stream.purser.it/{video_id}?provider=youtube&direct=true"
)
elif video := parse_qs(url.query).get("v"):
if isinstance(video, str):
await message.reply(
content=f"https://stream.purser.it/{video}?provider=youtube&direct=true"
)
elif isinstance(video, list):
await message.reply(
content=f"https://stream.purser.it/{video[0]}?provider=youtube&direct=true"
)
else:
video_id = url.path.strip("/")
await message.reply(
content=f"https://stream.purser.it/{video_id}?provider=youtube&direct=true"
)
intents = discord.Intents.default()
intents.message_content = True
CustomClient(intents=intents).run(DISCORD_TOKEN)