Exemplo n.º 1
0
    async def userinfo(self, ctx, *, member: discord.Member = None):
        """Shows info about you/given menber"""
        if not member:
            member = ctx.author

        id = member.id
        name = member.name
        created = format_time(member.created_at)
        joined = format_time(member.joined_at)
        status = member.status
        embed = discord.Embed(title=f"{name}'s Information",
                              color=ctx.author.top_role.color)
        embed.add_field(
            name="**General Information**",
            value=
            f"__Discord Name__: {name}\n__ID__: {id}\n__Created__: {created}")
        roles = ''.join([
            r.mention for r in member.roles[:-11:-1]
            if not r.name == "@everyone"
        ])
        embed.add_field(
            name=f"**Server Information**",
            value=
            f"__Joined At__: {joined}\n__Nickname__: {member.nick}\n__Roles__: {roles}"
        )
        embed.set_thumbnail(url=member.avatar_url)
        await ctx.send(embed=embed)
Exemplo n.º 2
0
    def test_format_time__less_than_an_hour_elapsed(self):
        infraction_time = datetime.datetime(2019, 2, 11, 6, 7, 3)
        last_infraction_time = infraction_time - datetime.timedelta(minutes=34,
                                                                    seconds=42)

        time = format_time(infraction_time, last_infraction_time)
        self.assertEqual(time, "34 minutes and 42 seconds")
Exemplo n.º 3
0
    def test_format_time__less_than_a_day_elapsed(self):
        infraction_time = datetime.datetime(2019, 2, 11, 22, 7, 3)
        last_infraction_time = infraction_time - datetime.timedelta(
            hours=14, minutes=34, seconds=42)

        time = format_time(infraction_time, last_infraction_time)
        self.assertEqual(time, "14 hours, 34 minutes, and 42 seconds")
Exemplo n.º 4
0
    def test_format_time__more_than_a_day_elapsed(self):
        infraction_time = datetime.datetime(2019, 2, 11, 22, 7, 3)
        last_infraction_time = infraction_time - datetime.timedelta(days=1,
                                                                    minutes=42)

        time = format_time(infraction_time, last_infraction_time)
        self.assertEqual(time, "1 day, 42 minutes, and 0 seconds")
Exemplo n.º 5
0
    def test_format_time__one_of_each_elapsed(self):
        infraction_time = datetime.datetime(2019, 2, 11, 22, 7, 3)
        last_infraction_time = infraction_time - datetime.timedelta(
            days=1, hours=1, minutes=1, seconds=1)

        time = format_time(infraction_time, last_infraction_time)
        self.assertEqual(time, "1 day, 1 hour, 1 minute, and 1 second")
Exemplo n.º 6
0
    async def temp_mute(self, ctx, member: MemberConverter, duration: str,
                        *args):
        if self.is_muted(member) is True:
            await ctx.send("Member {} is not muted.".format(member.name))
            return

        if re.match('\\d{1,2}\\w{1}', duration) is False:
            await ctx.send(
                'Format for duration of mute is incorrect. Example: 1d10m4s')
            return

        if (self.settings.get()['punishments']['muterole'] is None):
            await ctx.send("There is no role set to mute members.")
            return

        await member.add_roles(
            ctx.guild.get_role(self.settings.get()['punishments']['muterole']))
        converted_duration = self.convert_to_time(duration)
        reason = "No reason"
        if len(args) > 0: reason = " ".join(args[:])
        msg = "Temporarily muted {} for {}".format(
            str(member.user), timeutils.format_time(converted_duration))
        self.add_punishment(ctx, PunishmentType.TEMP_MUTE, reason,
                            self.convert_to_time(duration))
        await ctx.send(msg)
        self.console.log(msg)
Exemplo n.º 7
0
 async def serverinfo(self, ctx):
     """Shows info about the server"""
     guild = ctx.guild
     id = guild.id
     region = guild.region
     afk_timeout = guild.afk_timeout
     afk_channel = guild.afk_channel
     boost_tier = guild.premium_tier
     boost_count = guild.premium_subscription_count
     members = len(guild.members)
     bots = 0
     for member in guild.members:
         if member.bot:
             bots += 1
     created = format_time(guild.created_at)
     embed = discord.Embed(color=discord.Color.blurple())
     embed.set_thumbnail(url=guild.icon_url)
     embed.add_field(
         name="**General Info**",
         value=
         f"Name: {guild.name}\nID: {id}\nOwner: {guild.owner}\nRegion: {region}\nCreated: {created}\nChannels: Text: {len(guild.text_channels)} | Voice: {len(guild.voice_channels)}\nVC Bitrate Limit: {round(guild.bitrate_limit)}kbps\nFile Upload limit: {round(guild.filesize_limit)}mb\nEmoji limit: {guild.emoji_limit}(used: {len(guild.emojis)})"
     )
     roles = ''.join(r.mention for r in ctx.guild.roles[:-11:-1]
                     if not r.name == "@everyone")
     embed.add_field(
         name="**Role & Member Info**",
         value=f"Members: {members} and {bots} bots\nRoles: {roles}")
     await ctx.send(embed=embed)
Exemplo n.º 8
0
    async def temp_ban(self,
                       ctx,
                       member: MemberConverter,
                       delete_msg_days: int = 0,
                       duration: str = '1h',
                       *args):
        if await self.is_banned(ctx.guild, member) is True:
            await ctx.send('User {} has already been banned.'.format(
                str(member.user)))
            return

        if re.march('\\d{1,2}\\w{1}', duration) is False:
            await ctx.send(
                'Format for duration of ban is incorrect: Example: 1d10m4s.')
            return

        if self.settings.get()['punishments']['tempbanrole'] is None:
            await ctx.send('There is no role set to temp ban members')
            return

        converted_duration = self.convert_to_time(duration)
        reason = "No reason"
        if len(args) > 0: reason = " ".join(args[:])
        self.add_punishment(ctx, member, PunishmentType.TEMP_BAN, True, reason,
                            converted_duration)
        msg = "Temporarily banned {} for {} for".format(
            str(member.user), reason,
            timeutils.format_time(
                timeutils.convert(converted_duration, TimeUnit.MILISECONDS,
                                  TimeUnit.SECONDS)))
        self.console.log(msg)
        await ctx.send(msg)
Exemplo n.º 9
0
 async def on_member_join(self, member):
     cursor = await self.bot.db.execute(
         f"SELECT channel FROM welcomer WHERE guild_id = {member.guild.id}")
     chrow = await cursor.fetchone()
     if chrow is None:
         return
     else:
         msgrow = await self.bot.db.execute(
             f"SELECT message FROM welcomer WHERE guild_id = {member.guild.id}"
         )
         msg = await msgrow.fetchone()
         name = member.name
         mention = member.mention
         members = member.guild.member_count
         server = member.guild
         embed = discord.Embed(color=discord.Color.dark_green(),
                               description=msg[0].format(name=name,
                                                         mention=mention,
                                                         members=members,
                                                         server=server))
         embed.set_thumbnail(
             url=f"{member.avatar_url_as(format='png', size=2048)}")
         created = format_time(member.created_at)
         embed.set_footer(text=f"{member.name} Created on {created}")
         ch = self.bot.get_channel(int(chrow[0]))
         await ch.send(embed=embed)
     await cursor.close()
Exemplo n.º 10
0
def handle_detected_banned_word(current_time, current_server, author, banned_word):
    called_out = current_server.awake and not banned_word.is_cooldown_active
    time_lasted = format_time(current_time, banned_word.infracted_at)
    banned_word.send_infringing_message(current_time, author, called_out)
    
    if not called_out:
        return ""
    return callout_phrase.format(author.mention, banned_word.banned_word, time_lasted)
Exemplo n.º 11
0
    async def joined(self, ctx, *, member: discord.Member = None):
        """Shows the joined date of you/given member"""
        if not member:
            member = ctx.author

        joined = format_time(member.joined_at)
        embed = discord.Embed(color=ctx.author.top_role.color,
                              description=f"{member.name} joined at {joined}")
        await ctx.send(embed=embed)
Exemplo n.º 12
0
    def update_twitch_metadatas(self):
        twitch_video_id = self.get_twitch_id_from_url()
        metadatas = self.topLevelWidget(
        ).twitch_interface.get_twitch_metadatas(twitch_video_id)

        self.loaded_video.metadatas = metadatas

        duration = parse_duration(metadatas["duration"])

        self.id_twitch_field.setText(metadatas["id"])
        self.created_at_field.setText(str(metadatas["created_at"]))
        self.duration_field.setText(format_time(duration.seconds))
        self.title_field.setText(metadatas["title"])
        self.streamer_field.setText(metadatas["user_login"])
Exemplo n.º 13
0
 async def on_member_remove(self, member):
     cursor = await self.bot.db.execute(
         f"SELECT channel FROM leaver WHERE guild_id = {ctx.guild.id}")
     chrow = await cursor.fetchone()
     if chrow is None:
         return
     else:
         msg = await self.bot.db.execute(
             f"SELECT msg FROM leaver WHERE guild_id = {member.guild.id}")
         name = member.name
         mention = member.mention
         server = member.server
         members = member.guild.member_count
         embed.set_thumbnail(
             url=f"{member.avatar_url_as(format='png', size=2048)}")
         created = format_time(member.joined_at)
         embed.set_footer(text=f"{member.name} Created joined on {joined}")
         ch = self.bot.get_channel(int(chrow[0]))
         await ch.send(embed=embed)
     await cursor.close()
Exemplo n.º 14
0
    def update_twitch_metadatas(self):
        twitch_video_id = self.get_twitch_id_from_filepath()
        metadatas = self.twitch_interface.get_twitch_metadatas(twitch_video_id)

        self.loaded_video.metadatas = metadatas

        duration = parse_duration(metadatas["duration"])

        self.id_twitch_field.setText(metadatas["id"])
        self.created_at_field.setText(str(metadatas["created_at"]))
        self.duration_field.setText(format_time(duration.seconds))
        self.title_field.setText(metadatas["title"])
        self.streamer_field.setText(metadatas["user_login"])

        for moment in self.twitch_interface.get_video_games_list(
                metadatas["id"]):
            s = Segment()

            s.name = f"{moment['description']} ({moment['type']})"
            s.start_time = moment['positionMilliseconds'] / 1000
            s.end_time = (moment['positionMilliseconds'] +
                          moment['durationMilliseconds']) / 1000

            self.segments_list.addItem(SegmentListItem(s))
Exemplo n.º 15
0
 def get_banned_word_text(self, ban, current_time):
     time_lasted = format_time(current_time, ban.infracted_at)
     return "'{}': {}.".format(ban.banned_word, time_lasted)
Exemplo n.º 16
0
    def test_format_time__less_than_a_minute_elapsed(self):
        infraction_time = datetime.datetime(2019, 2, 11, 7, 31, 3)
        last_infraction_time = infraction_time - datetime.timedelta(seconds=42)

        time = format_time(infraction_time, last_infraction_time)
        self.assertEqual(time, "42 seconds")