1
Fork 0
mirror of https://github.com/wlinator/luminara.git synced 2024-10-02 18:23:12 +00:00

Add an "upcoming birthdays" command.

This commit is contained in:
wlinator 2024-02-28 12:09:04 +01:00
parent c46facdd91
commit 7841614715
3 changed files with 67 additions and 6 deletions

View file

@ -33,3 +33,23 @@ class Birthday:
ids = [item[0] for item in ids]
return ids
@staticmethod
def get_upcoming_birthdays():
query = """
SELECT user_id, DATE_FORMAT(birthday, '%m-%d') AS upcoming_birthday
FROM birthdays
WHERE DAYOFYEAR(birthday) > DAYOFYEAR(NOW())
ORDER BY DAYOFYEAR(birthday)
LIMIT 5;
"""
data = database.select_query(query)
upcoming = []
for row in data:
user_id = row[0]
birthday = row[1]
upcoming.append((user_id, birthday))
return upcoming

View file

@ -113,8 +113,8 @@ async def on_message(message):
return
# remove if debugging leveling or reaction handler:
# if instance.lower() != "main":
# return
if instance.lower() != "main":
return
try:
xp_handler = XPHandler()

View file

@ -6,6 +6,7 @@ import random
import discord
from discord import default_permissions
from discord.commands import SlashCommandGroup
from discord.ext import commands, tasks
from config import json_loader
@ -29,8 +30,10 @@ class BirthdayCog(commands.Cog):
self.bot = sbbot
self.daily_birthday_check.start()
@commands.slash_command(
name="birthday",
birthday = SlashCommandGroup("birthday", "various birthday commands.")
@birthday.command(
name="set",
description="Set your birthday.",
guild_only=True
)
@ -53,8 +56,46 @@ class BirthdayCog(commands.Cog):
await ctx.respond(strings["birthday_set"].format(ctx.author.name, month, day), ephemeral=True)
@commands.slash_command(
name="override-birthday",
@birthday.command(
name="upcoming",
description="See upcoming birthdays!",
guild_only=True
)
@commands.cooldown(1, 10, commands.BucketType.user)
async def upcoming_birthdays(self, ctx):
upcoming_birthdays = Birthday.get_upcoming_birthdays()
icon = ctx.guild.icon if ctx.guild.icon else "https://i.imgur.com/79XfsbS.png"
embed = discord.Embed(
color=discord.Color.embed_background()
)
embed.set_author(name="Upcoming Birthdays!", icon_url=icon)
embed.set_thumbnail(url="https://i.imgur.com/79XfsbS.png")
for i, (user_id, birthday) in enumerate(upcoming_birthdays, start=1):
try:
member = await ctx.guild.fetch_member(user_id)
name = member.name
except:
name = "Unknown User"
try:
birthday_date = datetime.datetime.strptime(birthday, "%m-%d")
formatted_birthday = birthday_date.strftime("%B %-d")
except ValueError:
# leap year error
formatted_birthday = "February 29"
embed.add_field(
name=f"{name}",
value=f"🎂 {formatted_birthday}",
inline=False
)
await ctx.respond(embed=embed)
@birthday.command(
name="override",
description="Override a birthday - requires Manage Server.",
guild_only=True
)