feat: Status changes whenever it's time to BeReal and if it's too late

This commit is contained in:
Showdown76 2024-03-03 02:50:48 +01:00
parent 775cefc203
commit 81be67064b
Signed by: showdown
GPG Key ID: 062A80AA93C13988
2 changed files with 25 additions and 1 deletions

View File

@ -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<t:{t}:R>")
await user.send(f"# :warning: Time to BeReal. :warning:\nCapture a BeReal and see what you friends are up to!\n<t:{t}:R>")
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()

19
bot/utils/ChangeStatus.py Normal file
View File

@ -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),
)