From b18357e524507f8f04b31a2ae06b80d2206978f5 Mon Sep 17 00:00:00 2001 From: crate Date: Wed, 9 Oct 2024 18:20:15 -0500 Subject: [PATCH] hopefully works now --- power.py | 50 ++++++++++++++++++++++---------------------------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/power.py b/power.py index 8113456..9a7481c 100644 --- a/power.py +++ b/power.py @@ -80,41 +80,47 @@ def send_email(subject, body): intents = discord.Intents.default() client = discord.Client(intents=intents) -@client.event -async def on_ready(): - logger.info(f"Client connected as {client.user}") - -async def send_discord(message): - try: - user = await client.fetch_user(user_id) - await user.send(message) - logger.info(f"Discord message sent: {message}") - except Exception as e: - logger.error(e) +def send_discord(message): + async def message_send(): + intents = discord.Intents.default() + client = discord.Client(intents=intents) + @client.event + async def on_ready(): + logger.info(f"Client connected as {client.user}") + try: + user = await client.fetch_user(user_id) + await user.send(message) + logger.info(f"Discord message sent: {message}") + except Exception as e: + logger.error(e) + finally: + await client.close() + await client.start(bot_token) + asyncio.run(message_send) def pwr_offline(battery): message = f"{ups_id} UPS is running on battery power! {battery}% charge remaining." logger.warning(message) send_email(f"{ups_id}: Power Outage Detected!", message) - asyncio.run(send_discord(message)) + send_discord(message) def pwr_online(battery): message = f"{ups_id} UPS power has been restored. {battery}% charge remaining." logger.warning(message) send_email(f"{ups_id}: Power On Line", message) - asyncio.run(send_discord(message)) + send_discord(message) def batt_low(battery): message = f"{ups_id} battery level low: {battery}% charge remaining." logger.warning(message) send_email(f"{ups_id} battery low.", message) - asyncio.run(send_discord(message)) + send_discord(message) def batt_crit(battery): message = f"{ups_id} battery level critial: {battery}% charge remaining, Shutting down PVE." logger.warning(message) send_email(f"{ups_id} battery critical!!", message) - asyncio.run(send_discord(message)) + send_discord(message) def main(): logger.info("Starting UPS monitoring service.") @@ -126,7 +132,7 @@ def main(): battery = ups_data['battery_charge'] if status and status != prev_status: if status == "OB DISCHRG": - pwr_offline(battery) + pwr_offline(battery) elif status == "OL": pwr_online(battery) else: @@ -143,17 +149,5 @@ def main(): time.sleep(60) time.sleep(5) -async def client_connect(): - while True: - try: - await client.start(bot_token) - except Exception as e: - e = str(e) - logger.error(f"Client couldn't connect! {e}") - await asyncio.sleep(300) - if __name__ == "__main__": main() - asyncio.run(client_connect()) - -