From 847b438677e25659475b7469b6b231d7e0d7ab9d Mon Sep 17 00:00:00 2001 From: bobloy Date: Wed, 9 May 2018 16:51:21 -0400 Subject: [PATCH] lseen Alpha --- lseen/__init__.py | 5 +++ lseen/lseen.py | 92 +++++++++++++++++++++++++++++++++++++++++++++++ seen/__init__.py | 5 --- seen/seen.py | 61 ------------------------------- 4 files changed, 97 insertions(+), 66 deletions(-) create mode 100644 lseen/__init__.py create mode 100644 lseen/lseen.py delete mode 100644 seen/__init__.py delete mode 100644 seen/seen.py diff --git a/lseen/__init__.py b/lseen/__init__.py new file mode 100644 index 0000000..716f34d --- /dev/null +++ b/lseen/__init__.py @@ -0,0 +1,5 @@ +from .lseen import LastSeen + + +def setup(bot): + bot.add_cog(LastSeen(bot)) diff --git a/lseen/lseen.py b/lseen/lseen.py new file mode 100644 index 0000000..c4c0c42 --- /dev/null +++ b/lseen/lseen.py @@ -0,0 +1,92 @@ +from datetime import datetime + +import dateutil.parser +import discord +from discord.ext import commands +from redbot.core import Config, RedContext +from redbot.core.bot import Red + + +class LastSeen: + """ + V3 Cog Template + """ + + online_status = discord.Status.online + + offline_status = discord.Status.offline + + def __init__(self, bot: Red): + self.bot = bot + self.config = Config.get_conf(self, identifier=9811198108111121, force_registration=True) + default_global = {} + default_guild = { + "enabled": True + } + default_member = { + "seen": None + } + + self.config.register_global(**default_global) + self.config.register_guild(**default_guild) + self.config.register_member(**default_member) + + @staticmethod + def get_date_time(s): + d = dateutil.parser.parse(s) + return d + + @commands.group(aliases=['setlseen'], name='lseenset') + async def lset(self, ctx: RedContext): + """Change settings for lseen""" + if ctx.invoked_subcommand is None: + await ctx.send_help() + + @lset.command(name="toggle") + async def lset_toggle(self, ctx: RedContext): + """Toggles tracking seen for this server""" + enabled = not await self.config.guild(ctx.guild).enabled() + await self.config.guild(ctx.guild).enabled.set( + enabled) + + await ctx.send( + "Seen for this server is now {}".format( + "Enabled" if enabled else "Disabled")) + + @commands.command(aliases=['lastseen']) + async def lseen(self, ctx: RedContext, member: discord.Member): + """ + Just says the time the user was last seen + + :param member: + """ + + if member.status != self.offline_status: + last_seen = datetime.utcnow() + else: + last_seen = await self.config.member(member).seen() + if last_seen is None: + await ctx.send(embed=discord.Embed(description="I've never seen this user")) + return + last_seen = self.get_date_time(last_seen) + + # embed = discord.Embed( + # description="{} was last seen at this date and time".format(member.display_name), + # timestamp=self.get_date_time(last_seen)) + + embed = discord.Embed(timestamp=last_seen) + await ctx.send(embed=embed) + + # async def on_socket_raw_receive(self, data): + # try: + # if type(data) == str: + # raw = json.loads(data) + # print(data) + # except: + # print(data) + + async def on_member_update(self, before: discord.Member, after: discord.Member): + if before.status != self.offline_status and after.status == self.offline_status: + if not await self.config.guild(before.guild).enabled(): + return + await self.config.member(before).seen.set(datetime.utcnow().isoformat()) diff --git a/seen/__init__.py b/seen/__init__.py deleted file mode 100644 index 4c69a5e..0000000 --- a/seen/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from .seen import Seen - - -def setup(bot): - bot.add_cog(Seen(bot)) diff --git a/seen/seen.py b/seen/seen.py deleted file mode 100644 index 3b43dc3..0000000 --- a/seen/seen.py +++ /dev/null @@ -1,61 +0,0 @@ -from datetime import datetime - -import dateutil.parser -import discord -from discord.ext import commands -from redbot.core import Config, RedContext -from redbot.core.bot import Red - - -class Seen: - """ - V3 Cog Template - """ - - def __init__(self, bot: Red): - self.bot = bot - self.config = Config.get_conf(self, identifier=9811198108111121, force_registration=True) - default_global = {} - default_guild = { - "enabled": True - } - default_member = { - "seen": None - } - - self.config.register_global(**default_global) - self.config.register_guild(**default_guild) - self.config.register_member(**default_member) - - @staticmethod - def get_date_time(s): - d = dateutil.parser.parse(s) - return d - - @commands.command() - async def seen(self, ctx: RedContext, member: discord.Member): - - last_seen = await self.config.member(member).seen() - - if last_seen is None: - await ctx.send(embed=discord.Embed(description="I've never seen this user")) - else: - embed = discord.Embed( - description="{} was last seen at this date and time".format(member.display_name), - timestamp=self.get_date_time(last_seen)) - - await ctx.send(embed=embed) - - # async def on_socket_raw_recieve(self, data): - # try: - # if type(data) == str: - # raw = json.loads(data) - # print(data) - # except: - # print(data) - - async def on_member_update(self, before, after): - if before.status == 'online' and after.status == 'offline': - if not await self.config.guild(before.guild).enabled(): - return - await self.config.member(before).seen.set(datetime.now().isoformat())