Exemple #1
0
    async def aed_add(self,
                      ctx,
                      server,
                      searchstr,
                      group,
                      time_offset: int = 0):
        """Add a new autoeventdm"""
        server = normalize_server_name(server)
        if server not in SUPPORTED_SERVERS:
            await ctx.send("Unsupported server, pick one of NA, KR, JP")
            return
        group = group.lower()
        if group not in GROUPS:
            await ctx.send("Unsupported group, pick one of red, blue, green")
            return
        if time_offset and not user_is_donor(ctx):
            await ctx.send("You must be a donor to set a time offset!")
            return
        if time_offset < 0:
            await ctx.send("Offset cannot be negative")
            return

        default = {
            'key': datetime.datetime.now().timestamp(),
            'server': server,
            'group': group,
            'searchstr': searchstr,
            'offset': time_offset,
        }

        async with self.config.user(ctx.author).dmevents() as dmevents:
            dmevents.append(default)
        await ctx.tick()
Exemple #2
0
    async def testevent(self, ctx, server, seconds: int = 0):
        server = normalize_server_name(server)
        if server not in SUPPORTED_SERVERS:
            await ctx.send("Unsupported server, pick one of NA, KR, JP")
            return

        dg_cog = self.bot.get_cog('Dadguide')
        await dg_cog.wait_until_ready()
        # TODO: Don't use this awful importing hack
        dg_module = __import__('.'.join(dg_cog.__module__.split('.')[:-1]) +
                               ".models.scheduled_event_model")
        timestamp = int((datetime.datetime.now(pytz.utc) +
                         timedelta(seconds=seconds)).timestamp())
        self.fake_uid -= 1

        te = dg_module.models.scheduled_event_model.ScheduledEventModel(
            event_id=self.fake_uid,
            server_id=SUPPORTED_SERVERS.index(server),
            event_type_id=EventType.Guerrilla.value,
            start_timestamp=timestamp,
            end_timestamp=timestamp + 60,
            group_name='red',
            dungeon_model=DummyObject(
                name_en='fake_dungeon_name',
                clean_name_en='fake_dungeon_name',
                dungeon_type=DungeonType.Unknown7,
                dungeon_id=1,
            ))
        self.events.append(Event(te, self.bot.get_cog('Dadguide').database))
        await ctx.tick()
Exemple #3
0
    async def aep_add(self, ctx, key, server=None, searchstr=None, red: discord.Role = None, blue: discord.Role = None,
                      green: discord.Role = None):
        """Add a new autoeventping"""
        if green is None and server is not None:
            await ctx.send("Multi-word keys must be in quotes.")
            return

        default = {
            'roles': [None, None, None],
            'channels': [None, None, None],
            'server': 'NA',
            'searchstr': None,
            'regex': False,
            'enabled': False,
            'offset': 0,
        }

        if green is not None:
            server = normalize_server_name(server)
            if server not in SUPPORTED_SERVERS:
                await ctx.send("Unsupported server, pick one of NA, KR, JP")
                return
            default.update({
                'roles': [red.id, blue.id, green.id],
                'channels': [ctx.channel.id] * 3,
                'server': server,
                'searchstr': searchstr,
                'enabled': True,
            })

        async with self.config.guild(ctx.guild).pingroles() as pingroles:
            pingroles[key] = default
        await ctx.tick()
Exemple #4
0
    async def active(self, ctx, server):
        server = normalize_server_name(server)
        if server not in SUPPORTED_SERVERS:
            await ctx.send("Unsupported server, pick one of NA, KR, JP")
            return

        msg = self.make_active_text(server)
        await self.page_output(ctx, msg)
Exemple #5
0
 async def aep_s_server(self, ctx, key, server):
     """Sets which server to listen to events in"""
     server = normalize_server_name(server)
     if server not in SUPPORTED_SERVERS:
         await ctx.send("Unsupported server, pick one of NA, KR, JP")
         return
     await self.aeps(ctx, key, 'server', server)
     await ctx.tick()
Exemple #6
0
 async def getServer(self, ctx, user_id, server=None):
     if server is None:
         server = self.settings.getDefaultServer(user_id)
     server = normalize_server_name(server)
     if server not in SUPPORTED_SERVERS:
         await ctx.send(inline('Unsupported server: ' + server))
         return
     return server
Exemple #7
0
    async def setServer(self, ctx, server):
        """Set your default server to one of [NA, EU, JP, KR]

        This server is used to default the idme command if you don't provide a server.
        """
        server = normalize_server_name(server)
        if server not in SUPPORTED_SERVERS:
            await ctx.send(inline('Unsupported server: ' + server))
            return

        self.settings.setDefaultServer(ctx.author.id, server)
        await ctx.send(inline('Set your default server to: ' + server))
Exemple #8
0
    async def rmchanneldaily(self, ctx, server):
        server = normalize_server_name(server)
        if server not in SUPPORTED_SERVERS:
            await ctx.send("Unsupported server, pick one of NA, KR, JP")
            return

        channel_id = ctx.channel.id
        if not self.settings.check_daily_reg(channel_id, server):
            await ctx.send("Channel is not active.")
            return

        self.settings.remove_daily_reg(channel_id, server)
        await ctx.send("Channel deactivated.")
Exemple #9
0
    async def addchanneldaily(self, ctx, server):
        server = normalize_server_name(server)
        if server not in SUPPORTED_SERVERS:
            await ctx.send("Unsupported server, pick one of NA, KR, JP")
            return

        channel_id = ctx.channel.id
        if self.settings.check_daily_reg(channel_id, server):
            await ctx.send("Channel already active.")
            return

        self.settings.add_daily_reg(channel_id, server)
        await ctx.send("Channel now active.")
Exemple #10
0
    async def clear(self, ctx, server=None):
        """Deletes your saved profile for a server

        If no server is provided then all profiles are deleted.
        """
        user_id = ctx.author.id
        if server is None:
            self.settings.clearProfile(user_id)
            await ctx.send(inline('Cleared your profile for all servers'))
        else:
            server = normalize_server_name(server)
            self.settings.clearProfile(user_id, server)
            await ctx.send(inline('Cleared your profile for ' + server))
Exemple #11
0
    async def do_partial(self, ctx, server):
        server = normalize_server_name(server)
        if server not in SUPPORTED_SERVERS:
            await ctx.send("Unsupported server, pick one of NA, KR, JP")
            return

        events = EventList(self.events)
        events = events.with_server(server)
        events = events.in_dungeon_type(
            [DungeonType.Etc, DungeonType.CoinDailyOther])
        events = events.is_grouped()

        active_events = events.active_only().items_by_open_time(reverse=True)
        pending_events = events.pending_only().items_by_open_time(reverse=True)

        group_to_active_event = {e.group: e for e in active_events}
        group_to_pending_event = {e.group: e for e in pending_events}

        # active_events = list(group_to_active_event.values())
        # pending_events = list(group_to_pending_event.values())

        active_events.sort(
            key=lambda e: (GROUPS.index(e.group), e.open_datetime))
        pending_events.sort(
            key=lambda e: (GROUPS.index(e.group), e.open_datetime))

        if len(active_events) == 0 and len(pending_events) == 0:
            await ctx.send("No events available for " + server)
            return

        output = "Events for {}".format(server)

        if len(active_events) > 0:
            output += "\n\n" + "  Remaining Dungeon"
            for e in active_events:
                output += "\n" + e.to_partial_event(self)

        if len(pending_events) > 0:
            output += "\n\n" + "  PT    ET    ETA     Dungeon"
            for e in pending_events:
                output += "\n" + e.to_partial_event(self)

        for page in pagify(output):
            await ctx.send(box(page))
Exemple #12
0
def make_channel_reg(channel_id, server):
    server = normalize_server_name(server)
    return {"channel_id": channel_id, "server": server}
Exemple #13
0
 def with_server(self, server):
     return self.with_func(
         lambda e: e.server == normalize_server_name(server))