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