This commit is contained in:
commit
29eae47855
15
.drone.yml
Normal file
15
.drone.yml
Normal file
@ -0,0 +1,15 @@
|
||||
kind: pipeline
|
||||
name: default
|
||||
|
||||
steps:
|
||||
- name: docker
|
||||
image: plugins/docker
|
||||
settings:
|
||||
username:
|
||||
from_secret: docker_username
|
||||
password:
|
||||
from_secret: docker_password
|
||||
repo: roypur/stream-discord-bot
|
||||
tags:
|
||||
- latest
|
||||
- ${DRONE_BUILD_FINISHED}
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
*.pyc
|
11
Dockerfile
Normal file
11
Dockerfile
Normal file
@ -0,0 +1,11 @@
|
||||
FROM python:3.12-alpine AS venv
|
||||
RUN ["mkdir", "-p", "/app"]
|
||||
COPY ["bot.py", "/app/bot.py"]
|
||||
COPY ["start.sh", "/app/start.sh"]
|
||||
COPY ["install.sh", "/app/install.sh"]
|
||||
RUN ["sh", "/app/install.sh"]
|
||||
|
||||
FROM scratch
|
||||
COPY --from=venv / /
|
||||
USER 1455:1455
|
||||
ENTRYPOINT ["/app/start.sh"]
|
49
bot.py
Normal file
49
bot.py
Normal file
@ -0,0 +1,49 @@
|
||||
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)
|
8
install.sh
Normal file
8
install.sh
Normal file
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
python3 -m venv /app/venv
|
||||
source /app/venv/bin/activate
|
||||
|
||||
pip3 install --upgrade pip
|
||||
pip3 install --upgrade wheel
|
||||
pip3 install --upgrade 'discord.py'
|
Loading…
Reference in New Issue
Block a user