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

Add .upcoming and fix output list

This commit is contained in:
wlinator 2024-03-19 17:28:55 +01:00
parent 5dc8ef51a0
commit 23ddfa6e1f
5 changed files with 61 additions and 35 deletions

View file

@ -25,7 +25,7 @@ def get_prefix(bot, message):
client = bridge.Bot(
owner_id=os.getenv('OWNER_ID'),
owner_id=int(os.getenv('OWNER_ID')),
command_prefix=get_prefix,
intents=discord.Intents.all(),
status=discord.Status.online,

View file

@ -5,7 +5,6 @@ import logging
import random
import discord
from discord import default_permissions
from discord.commands import SlashCommandGroup
from discord.ext import commands, tasks
@ -15,6 +14,7 @@ from services.GuildConfig import GuildConfig
from main import strings
from lib import time, checks
from lib.embeds.error import BdayErrors
from modules.birthdays import upcoming
logs = logging.getLogger('Racu.Core')
data = json_loader.load_birthday()
@ -72,40 +72,25 @@ class Birthdays(commands.Cog):
description="See upcoming birthdays!",
guild_only=True
)
@commands.cooldown(1, 10, commands.BucketType.user)
@commands.guild_only()
@commands.check(checks.birthday_module)
@commands.check(checks.channel)
async def upcoming_birthdays(self, ctx):
upcoming_birthdays = Birthday.get_upcoming_birthdays(ctx.guild.id)
icon = ctx.guild.icon if ctx.guild.icon else "https://i.imgur.com/79XfsbS.png"
await upcoming.cmd(ctx)
@commands.command(
name="upcoming",
aliases=["birthdayupcoming", "ub"]
)
@commands.guild_only()
@commands.check(checks.birthday_module)
@commands.check(checks.channel)
async def upcoming_birthdays_prefix(self, ctx):
"""
Shows the upcoming birthdays in this server.
"""
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)
await upcoming.cmd(ctx)
@tasks.loop(hours=23, minutes=55)
async def daily_birthday_check(self):

View file

@ -0,0 +1,41 @@
from services.Birthday import Birthday
import discord
import datetime
async def cmd(ctx):
upcoming_birthdays = Birthday.get_upcoming_birthdays(ctx.guild.id)
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")
found_birthdays = 0
for user_id, birthday in upcoming_birthdays:
try:
member = await ctx.guild.fetch_member(user_id)
name = member.name
except discord.HTTPException:
continue # skip user if not in guild
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
)
found_birthdays +=1
if found_birthdays >= 5:
break
await ctx.respond(embed=embed)

View file

@ -31,7 +31,8 @@ class Config(commands.Cog):
"""
await config.cmd(ctx)
config = SlashCommandGroup("config", "server config commands.", guild_only=True, default_member_permissions=discord.Permissions(manage_channels=True))
config = SlashCommandGroup("config", "server config commands.", guild_only=True,
default_member_permissions=discord.Permissions(manage_channels=True))
birthday_config = config.create_subgroup(name="birthdays")
command_config = config.create_subgroup(name="commands")
intro_config = config.create_subgroup(name="intros")

View file

@ -41,8 +41,7 @@ class Birthday:
FROM birthdays
WHERE DAYOFYEAR(birthday) > DAYOFYEAR(NOW())
AND guild_id = %s
ORDER BY DAYOFYEAR(birthday)
LIMIT 5;
ORDER BY DAYOFYEAR(birthday);
"""
data = database.select_query(query, (guild_id,))