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)
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")
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")
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")
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")
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)
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)
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)
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()
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)
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)
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"])
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()
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))
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)
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")