From 81be67064b8a74273894a0fa459c3d0b6afb8edc Mon Sep 17 00:00:00 2001 From: Showdown76py Date: Sun, 3 Mar 2024 02:50:48 +0100 Subject: [PATCH] feat: Status changes whenever it's time to BeReal and if it's too late --- bot/app.py | 7 ++++++- bot/utils/ChangeStatus.py | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 bot/utils/ChangeStatus.py diff --git a/bot/app.py b/bot/app.py index 7901ee6..b59aed7 100644 --- a/bot/app.py +++ b/bot/app.py @@ -4,6 +4,7 @@ import os from discord.ext import commands from discord import app_commands import database.controller +import bot.utils.ChangeStatus intents = discord.Intents.default() intents.members = True @@ -23,15 +24,19 @@ async def time_to_bereal(): t = int(time()) subscribers = app.db.get_subscribers() + app.loop.create_task(bot.utils.ChangeStatus.switch_to_online(app, t + 120)) + # Send message to all subscribers for subscriber in subscribers: user = await app.fetch_user(subscriber.user_id) - await user.send(f"# :warning: It's time to BeReal.\nOpen BeReal. to post what you are doing right now.\n") + await user.send(f"# :warning: Time to BeReal. :warning:\nCapture a BeReal and see what you friends are up to!\n") + app.time_to_bereal = time_to_bereal @app.event async def on_ready(): print("Running") + await bot.utils.ChangeStatus.switch_to_dnd(app) await load_cogs() await app.tree.sync() diff --git a/bot/utils/ChangeStatus.py b/bot/utils/ChangeStatus.py new file mode 100644 index 0000000..d0d8abd --- /dev/null +++ b/bot/utils/ChangeStatus.py @@ -0,0 +1,19 @@ +import asyncio +import discord, time +from discord.ext import commands + + +async def switch_to_online(app: commands.Bot, expiration: int): + await app.change_presence( + status=discord.Status.online, + activity=discord.Activity(name="⚠️ Time to BeReal. | /subscribe", type=discord.ActivityType.watching), + ) + await asyncio.sleep(expiration - time.time()) + await switch_to_dnd(app) + + +async def switch_to_dnd(app: commands.Bot): + await app.change_presence( + status=discord.Status.do_not_disturb, + activity=discord.Activity(name="BeReal. Notifications | /subscribe", type=discord.ActivityType.watching), + )