From: Georgios Atheridis Date: Sat, 21 Jan 2023 12:48:26 +0000 (+0000) Subject: Send message to discord when stream starts X-Git-Url: https://git.atheridis.org/?a=commitdiff_plain;h=0abb9a9400f3a281be59e667a3cca23c51955ff6;p=ihaspeks%2Faptbot-ihaspeks.git Send message to discord when stream starts --- diff --git a/ihaspeks/main.py b/ihaspeks/main.py index f4116e1..66d5398 100644 --- a/ihaspeks/main.py +++ b/ihaspeks/main.py @@ -13,6 +13,8 @@ import scripts.alwase import scripts.chatting import scripts.chat import scripts.crylaugh +import scripts.clean_queue +import scripts.discord_start_stream import database_manager import analyze_auto_message import time @@ -30,6 +32,8 @@ reload(scripts.alwase) reload(scripts.chatting) reload(scripts.chat) reload(scripts.crylaugh) +reload(scripts.clean_queue) +reload(scripts.discord_start_stream) reload(database_manager) reload(analyze_auto_message) @@ -116,10 +120,13 @@ def start(bot: Bot, message: Message, stop_event: Event): i += wait started = tools.smart_start_stream_time.update_start_stream_timestamp() if started == "START": + scripts.clean_queue.clean_queue() + scripts.discord_start_stream.announce() bot.send_privmsg( message.channel, "/announce Stream has started, you can now use ?join" ) elif started == "END": + scripts.clean_queue.clean_queue() bot.send_privmsg(message.channel, "Stream has ended") if i >= 30: analyze_auto_message.do_auto_message(bot, message, auto_message_modules) diff --git a/ihaspeks/scripts/discord_start_stream.py b/ihaspeks/scripts/discord_start_stream.py new file mode 100644 index 0000000..f7549fc --- /dev/null +++ b/ihaspeks/scripts/discord_start_stream.py @@ -0,0 +1,73 @@ +import os +import requests +import logging +import datetime +import ttv_api.users +import ttv_api.channel + +logger = logging.getLogger(__name__) + +STREAMER_PATH = os.path.abspath(os.path.join(__file__, "../..")) +logger.debug(f"STREAMER_PATH set to: {STREAMER_PATH}") +SCRIPTS_PATH = os.path.dirname(os.path.realpath(__file__)) +logger.debug(f"TOOLS_PATH set to: {SCRIPTS_PATH}") +PATH = os.path.join(SCRIPTS_PATH, "..") +logger.debug(f"PATH set to: {PATH}") + +STREAMER_LOGIN = os.path.split(STREAMER_PATH)[1] +logger.debug(f"streamer_login set to: {STREAMER_LOGIN}") + + +DISCORD_API = os.getenv("DISCORD_API") + +PEKS_CHANNEL_ID = 1048026874145681508 + +def announce(): + user = ttv_api.users.get_users(user_logins=[STREAMER_LOGIN]) + if not user: + return + user = user[0] + + channel = ttv_api.channel.get_channels(user.user_id) + if not channel: + return + channel = channel[0] + + message = { + "content": "@everyone Peks is alive!!", + "embeds": [ + { + "title": channel.title, + "description": user.description, + "url": f"https://twitch.tv/{STREAMER_LOGIN}", + "color": 13612884, + "author": { + "name": "Peks is now live!", + "url": f"https://twitch.tv/{STREAMER_LOGIN}", + "icon_url": user.profile_image_url, + }, + "footer": { + "text": "rugo is amazing" + }, + "timestamp": datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None).isoformat() + 'Z', + "thumbnail": { + "url": user.profile_image_url + } + } + ], + } + + try: + response = requests.post( + f"https://discord.com/api/v10/channels/{PEKS_CHANNEL_ID}/messages", + headers={ + "Authorization": f"Bot {DISCORD_API}", + "Content-Type": "application/json", + }, + json=message, + ) + except Exception as e: + logger.exception(e) + return + if response.status_code != 200: + logger.error(response.json) diff --git a/ihaspeks/tools/smart_start_stream_time.py b/ihaspeks/tools/smart_start_stream_time.py index a230779..0eeb45c 100644 --- a/ihaspeks/tools/smart_start_stream_time.py +++ b/ihaspeks/tools/smart_start_stream_time.py @@ -25,16 +25,6 @@ CHECK_STREAMTIME_CD = 5 * 60 MAX_OFF_STREAM_MARGIN = 60 * 60 -def end_stream(): - logger.info(f"{STREAMER_LOGIN} has ended their stream") - clean_queue.clean_queue() - - -def start_stream(): - logger.info(f"{STREAMER_LOGIN} has started their stream") - clean_queue.clean_queue() - - def start_stream_timestamp() -> Optional[int]: conn = sqlite3.connect(os.path.join(PATH, "database.db")) c = conn.cursor() @@ -110,7 +100,7 @@ def update_start_stream_timestamp() -> Optional[str]: conn.commit() conn.close() # TODO add hook, streamer ended stream - end_stream() + logger.info(f"{STREAMER_LOGIN} has ended their stream") return "END" if not fetched: @@ -126,7 +116,7 @@ def update_start_stream_timestamp() -> Optional[str]: ) conn.commit() conn.close() - start_stream() + logger.info(f"{STREAMER_LOGIN} has started their stream") return "START" start_stream_ts, last_checked = fetched