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:
parent
5dc8ef51a0
commit
23ddfa6e1f
5 changed files with 61 additions and 35 deletions
2
main.py
2
main.py
|
@ -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,
|
||||
|
|
|
@ -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):
|
||||
|
|
41
modules/birthdays/upcoming.py
Normal file
41
modules/birthdays/upcoming.py
Normal 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)
|
|
@ -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")
|
||||
|
|
|
@ -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,))
|
||||
|
||||
|
|
Loading…
Reference in a new issue