• CannedYeet@lemmy.world
    link
    fedilink
    arrow-up
    1
    arrow-down
    2
    ·
    edit-2
    22 hours ago

    I worked with chatgpt since I’m not a python dev, and this is what I came up with

    from time import time
    
    class PlaySession:
        def __init__(self, data: dict):
            self.guild_id = int(data['guild_id'])
            self.user_id = int(data['user_id'])
            self.timestamp = data['time']
    
        def is_longer_than_half_hour(self) -> bool:
            return self.timestamp + 1800 < time()
    
        async def resolve_member(self, bot) -> "discord.Member | None":
            guild = bot.get_guild(self.guild_id)
            return guild.get_member(self.user_id) if guild else None
    
        @staticmethod
        def is_playing_league(member) -> bool:
            activity = getattr(member, 'activity', None)
            name = getattr(activity, 'name', None)
            return name and name.lower() == "league of legends"
    
    async def ban_for_league(member):
        await member.send("The 30 minutes has elapsed and you are still playing league, get banned.")
        await member.ban(delete_message_days=0, reason="playing league")
    
    async def process_entries(bot, entry_dicts):
        sessions = [PlaySession(d) for d in entry_dicts if PlaySession(d).is_longer_than_half_hour()]
        for session in sessions:
            member = await session.resolve_member(bot)
            if member and PlaySession.is_playing_league(member):
                await ban_for_league(member)