From 22b076260fe099408fbebf0e998fc448924ae295 Mon Sep 17 00:00:00 2001 From: levina <82658782+levina-lab@users.noreply.github.com> Date: Mon, 13 Sep 2021 05:35:49 +0700 Subject: [PATCH] improve added auto leave from vc after finished streaming video --- bot/videoplayer.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/bot/videoplayer.py b/bot/videoplayer.py index b2e7bf7..32eaa9d 100644 --- a/bot/videoplayer.py +++ b/bot/videoplayer.py @@ -4,6 +4,7 @@ import subprocess from pytgcalls import idle from pytgcalls import PyTgCalls from pytgcalls import StreamType +from pytgcalls.types import Update from pytgcalls.types.input_stream import AudioParameters from pytgcalls.types.input_stream import InputAudioStream from pytgcalls.types.input_stream import InputVideoStream @@ -32,6 +33,20 @@ def raw_converter(dl, song, video): cwd=None, ) +async def leave_call(chat_id: int): + process = FFMPEG_PROCESSES.get(chat_id) + if process: + try: + process.send_signal(SIGINT) + await asyncio.sleep(3) + except Exception as e: + print(e) + pass + try: + await call_py.leave_group_call(chat_id) + except Exception as e: + print(f"🚫 error - {e}") + def youtube(url: str): try: params = {"format": "best[height=?480]/best", "noplaylist": True} @@ -151,7 +166,13 @@ async def stopvideo(client, m: Message): await asyncio.sleep(3) except Exception as e: print(e) + pass await call_py.leave_group_call(chat_id) await m.reply("✅ **successfully left vc !**") except Exception as e: await m.reply(f"🚫 **error** | `{e}`") + +@call_py.on_stream_end() +async def handler(client: PyTgCalls, update: Update): + chat_id = update.chat.id + await leave_call(chat_id)