I worked with chatgpt since I’m not a python dev, and this is what I came up with
from time import time
classPlaySession:
def__init__(self, data: dict):
self.guild_id = int(data['guild_id'])
self.user_id = int(data['user_id'])
self.timestamp = data['time']
defis_longer_than_half_hour(self) -> bool:
returnself.timestamp + 1800 < time()
asyncdefresolve_member(self, bot) -> "discord.Member | None":
guild = bot.get_guild(self.guild_id)
return guild.get_member(self.user_id) if guild elseNone @staticmethoddefis_playing_league(member) -> bool:
activity = getattr(member, 'activity', None)
name = getattr(activity, 'name', None)
return name and name.lower() == "league of legends"asyncdefban_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")
asyncdefprocess_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)
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)