コード例 #1
0
ファイル: main.py プロジェクト: Korben85/bot
    async def nudge_channel(message, stripped, preferences):

        time_parser = TimeExtractor(stripped, preferences.timezone)

        try:
            t = time_parser.extract_displacement()

        except InvalidTime:
            await message.channel.send(embed=discord.Embed(
                description=preferences.language.get_string('nudge/invalid_time')))

        else:
            if 2 ** 15 > t > -2 ** 15:
                channel, _ = Channel.get_or_create(message.channel)

                channel.nudge = t

                session.commit()

                await message.channel.send(
                    embed=discord.Embed(description=preferences.language.get_string('nudge/success').format(t)))

            else:
                await message.channel.send(
                    embed=discord.Embed(description=preferences.language.get_string('nudge/invalid_time')))
コード例 #2
0
ファイル: main.py プロジェクト: TheDeadlyNightshade/bot
    async def offset_reminders(message, stripped, preferences):

        if message.guild is None:
            reminders = preferences.user.reminders
        else:
            reminders = itertools.chain(*[channel.reminders for channel in preferences.guild.channels])

        time_parser = TimeExtractor(stripped, preferences.timezone)

        try:
            time = time_parser.extract_displacement()

        except InvalidTime:
            await message.channel.send(
                embed=discord.Embed(description=preferences.language.get_string('offset/invalid_time')))

        else:
            if time == 0:
                await message.channel.send(embed=discord.Embed(
                    description=preferences.language.get_string('offset/help').format(prefix=preferences.prefix)))

            else:
                for r in reminders:
                    r.time += time

                session.commit()

                await message.channel.send(
                    embed=discord.Embed(description=preferences.language.get_string('offset/success').format(time)))
コード例 #3
0
ファイル: main.py プロジェクト: Korben85/bot
    async def pause_channel(self, message, stripped, preferences):

        channel, _ = Channel.get_or_create(message.channel)

        if len(stripped) > 0:
            # argument provided for time
            time_parser = TimeExtractor(stripped, preferences.timezone)

            try:
                t = time_parser.extract_displacement()

            except InvalidTime:
                await message.channel.send(embed=discord.Embed(
                    description=preferences.language['pause/invalid_time']))

            else:
                channel.paused = True
                channel.paused_until = datetime.now() + timedelta(seconds=t)

                display = channel.paused_until \
                    .astimezone(pytz.timezone(preferences.timezone)) \
                    .strftime('%Y-%m-%d, %H:%M:%S')

                await message.channel.send(
                    embed=discord.Embed(description=preferences.language['pause/paused_until'].format(display)))

        else:
            # otherwise toggle the paused status and clear the time
            channel.paused = not channel.paused
            channel.paused_until = None

            if channel.paused:
                await message.channel.send(
                    embed=discord.Embed(description=preferences.language['pause/paused_indefinite']))

            else:
                await message.channel.send(
                    embed=discord.Embed(description=preferences.language['pause/unpaused']))
コード例 #4
0
ファイル: main.py プロジェクト: TheDeadlyNightshade/bot
    async def remind(self, is_interval, message, stripped, server):

        args = stripped.split(' ')

        if len(args) < 2:
            if is_interval:
                await message.channel.send(embed=discord.Embed(
                    description=server.language.get_string('interval/no_argument').format(prefix=server.prefix)))

            else:
                await message.channel.send(embed=discord.Embed(
                    description=server.language.get_string('remind/no_argument').format(prefix=server.prefix)))

        else:
            if is_interval and not await self.is_patron(message.author.id):
                await message.channel.send(
                    embed=discord.Embed(description=server.language.get_string('interval/donor')))

            else:
                interval = None
                scope_id = message.channel.id

                if args[0][0] == '<' and message.guild is not None:
                    arg = args.pop(0)
                    scope_id = int(''.join(x for x in arg if x in '0123456789'))

                t = args.pop(0)
                time_parser = TimeExtractor(t, server.timezone)

                try:
                    mtime = time_parser.extract_exact()

                except InvalidTime:
                    await message.channel.send(
                        embed=discord.Embed(description=server.language.get_string('remind/invalid_time')))
                else:
                    if is_interval:
                        i = args.pop(0)

                        parser = TimeExtractor(i, server.timezone)

                        try:
                            interval = parser.extract_displacement()

                        except InvalidTime:
                            await message.channel.send(embed=discord.Embed(
                                description=server.language.get_string('interval/invalid_interval')))
                            return

                    text = ' '.join(args)

                    result = await self.create_reminder(message, scope_id, text, mtime, interval, method='remind')

                    response = server.language.get_string(REMIND_STRINGS[result.status]).format(
                        location=result.location.mention, offset=int(result.time - unix_time()),
                        min_interval=MIN_INTERVAL, max_time=MAX_TIME_DAYS)

                    await message.channel.send(embed=discord.Embed(description=response))
コード例 #5
0
ファイル: main.py プロジェクト: pgsvox/bot
    async def nudge_channel(self, message, stripped, prefs):

        time_parser = TimeExtractor(stripped, prefs.timezone)

        try:
            t = time_parser.extract_displacement()

        except:
            await message.channel.send(embed=discord.Embed(description=prefs.language.get_string('nudge/invalid_time')))

        else:
            query = session.query(ChannelNudge).filter(ChannelNudge.channel == message.channel.id)

            if query.count() < 1:
                new = ChannelNudge(channel=message.channel.id, time=t)
                session.add(new)

            else:
                query.first().time = t

            session.commit()

            await message.channel.send(embed=discord.Embed(description=prefs.language.get_string('nudge/success').format(t)))
コード例 #6
0
ファイル: main.py プロジェクト: pgsvox/bot
    async def offset_reminders(self, message, stripped, prefs):

        if message.guild is None:
            channels = [message.channel.id]
        else:
            channels = [x.id for x in message.guild.channels]

        time_parser = TimeExtractor(stripped, prefs.timezone)

        try:
            time = time_parser.extract_displacement()

        except:
            await message.channel.send(embed=discord.Embed(description=prefs.language.get_string('offset/invalid_time')))

        else:
            reminders = session.query(Reminder).filter(Reminder.channel.in_(channels))

            for r in reminders:
                r.time += time

            session.commit()

            await message.channel.send(embed=discord.Embed(description=prefs.language.get_string('offset/success').format(time)))