Ejemplo n.º 1
0
 async def userinfo(self, ctx, user: discord.Member = None):
     """Get user information"""
     if user is None:
         user = ctx.author
     roles = [x.mention for x in user.roles if x.name != "@everyone"]
     roles = ', '.join(roles)
     embed = discord.Embed(colour=0x36393E)
     embed.set_thumbnail(url=user.avatar_url)
     embed.add_field(name="Name", value=user, inline=True)
     if hasattr(user, "nick"):
         embed.add_field(name="Nickname", value=user.nick, inline=True)
     else:
         embed.add_field(name="Nickname", value="No nickname.", inline=True)
     embed.add_field(name="Joined Discord on",
                     value=default.date(user.created_at),
                     inline=True)
     if hasattr(user, "joined_at"):
         embed.add_field(name="Joined this server on",
                         value=default.date(user.joined_at),
                         inline=True)
     if roles != "":
         embed.add_field(name="Roles", value=roles)
     else:
         embed.add_field(name="Roles", value="User has no roles.")
     await ctx.send(embed=embed)
Ejemplo n.º 2
0
    async def user(self, ctx, user: discord.Member = None):
        """ Get user information """
        if user is None:
            user = ctx.author

        embed = discord.Embed(color=user.color)
        embed.set_thumbnail(url=user.avatar_url)

        embed.add_field(name="Full name", value=user, inline=True)

        if hasattr(user, "nick"):
            embed.add_field(name="Nickname", value=user.nick, inline=True)
        else:
            embed.add_field(name="Nickname", value="None", inline=True)

        embed.add_field(name="Account created",
                        value=default.date(user.created_at),
                        inline=True)

        if hasattr(user, "joined_at"):
            embed.add_field(name="Joined this server",
                            value=default.date(user.joined_at),
                            inline=True)

        await ctx.send(content=f"ℹ About **{user.id}**", embed=embed)
Ejemplo n.º 3
0
    async def user_info(self, ctx, *, user: discord.Member = None):
        """ 取得使用者自己的資訊 """
        user = user or ctx.author

        show_roles = ', '.join([
            f"<@&{x.id}>"
            for x in sorted(user.roles, key=lambda x: x.position, reverse=True)
            if x.id != ctx.guild.default_role.id
        ]) if len(user.roles) > 1 else '空空如也'

        embed = discord.Embed(colour=user.top_role.colour.value)
        embed.set_thumbnail(url=user.avatar_url)

        embed.add_field(name="名字", value=user, inline=True)
        embed.add_field(name="暱稱",
                        value=user.nick if hasattr(user, "nick") else "無",
                        inline=True)
        embed.add_field(name="建立帳號於",
                        value=default.date(user.created_at),
                        inline=True)
        embed.add_field(name="加入伺服器於",
                        value=default.date(user.joined_at),
                        inline=True)

        embed.add_field(name="身份組", value=show_roles, inline=False)

        await ctx.send(content=f"ℹ 汪嗚!窩找到了<@{user.id}>的名片哦 ٩(。・ω・。)و",
                       embed=embed)
Ejemplo n.º 4
0
    async def user(self, ctx, *, user: discord.Member = None):
        """ Get user information """
        user = user or ctx.author

        show_roles = ', '.join([
            f"<@&{x.id}>"
            for x in sorted(user.roles, key=lambda x: x.position, reverse=True)
            if x.id != ctx.guild.default_role.id
        ]) if len(user.roles) > 1 else 'None'

        embed = discord.Embed(colour=user.top_role.colour.value)
        embed.set_thumbnail(url=user.avatar_url)

        embed.add_field(name="Full name", value=user, inline=True)
        embed.add_field(name="Nickname",
                        value=user.nick if hasattr(user, "nick") else "None",
                        inline=True)
        embed.add_field(name="Account created",
                        value=default.date(user.created_at),
                        inline=True)
        embed.add_field(name="Joined this server",
                        value=default.date(user.joined_at),
                        inline=True)

        embed.add_field(name="Roles", value=show_roles, inline=False)

        await ctx.send(content=f"ℹ About **{user.id}**", embed=embed)
Ejemplo n.º 5
0
    async def about(self, ctx):
        """ About the bot """
        ramUsage = self.process.memory_full_info().rss / 1024**2
        avgmembers = sum(g.member_count
                         for g in self.bot.guilds) / len(self.bot.guilds)

        embedColour = None
        if hasattr(ctx, "guild") and ctx.guild is not None:
            embedColour = ctx.me.top_role.colour

        embed = discord.Embed(colour=embedColour)
        embed.set_thumbnail(url=ctx.bot.user.avatar)
        embed.add_field(name="Last boot",
                        value=default.date(self.bot.uptime, ago=True))
        embed.add_field(
            name=f"Developer{'' if len(self.config['owners']) == 1 else 's'}",
            value=", ".join(
                [str(self.bot.get_user(x)) for x in self.config["owners"]]))
        embed.add_field(name="Library", value="discord.py")
        embed.add_field(
            name="Servers",
            value=
            f"{len(ctx.bot.guilds)} ( avg: {avgmembers:,.2f} users/server )")
        embed.add_field(name="Commands loaded",
                        value=len([x.name for x in self.bot.commands]))
        embed.add_field(name="RAM", value=f"{ramUsage:.2f} MB")

        await ctx.send(content=f"ℹ About **{ctx.bot.user}**", embed=embed)
Ejemplo n.º 6
0
    async def server(self, ctx):
        """ Check info about current server """
        if ctx.invoked_subcommand is None:
            findbots = sum(1 for member in ctx.guild.members if member.bot)

            embed = discord.Embed()

            if ctx.guild.icon:
                embed.set_thumbnail(url=ctx.guild.icon_url)
            if ctx.guild.banner:
                embed.set_image(url=ctx.guild.banner_url_as(format="png"))

            embed.add_field(name="Server Name",
                            value=ctx.guild.name,
                            inline=True)
            embed.add_field(name="Server ID", value=ctx.guild.id, inline=True)
            embed.add_field(name="Members",
                            value=ctx.guild.member_count,
                            inline=True)
            embed.add_field(name="Bots", value=findbots, inline=True)
            embed.add_field(name="Owner", value=ctx.guild.owner, inline=True)
            embed.add_field(name="Region", value=ctx.guild.region, inline=True)
            embed.add_field(name="Created",
                            value=default.date(ctx.guild.created_at),
                            inline=True)
            await ctx.send(content=f"ℹ information about **{ctx.guild.name}**",
                           embed=embed)
Ejemplo n.º 7
0
    async def server(self, ctx):
        """ 查看頻道的資訊。 """
        if ctx.invoked_subcommand is None:
            findbots = sum(1 for member in ctx.guild.members if member.bot)

            embed = discord.Embed()

            if ctx.guild.icon:
                embed.set_thumbnail(url=ctx.guild.icon_url)
            if ctx.guild.banner:
                embed.set_image(url=ctx.guild.banner_url_as(format="png"))

            embed.add_field(name="頻道名稱", value=ctx.guild.name, inline=True)
            embed.add_field(name="頻道 ID", value=ctx.guild.id, inline=True)
            embed.add_field(name="會員人數",
                            value=ctx.guild.member_count,
                            inline=True)
            embed.add_field(name="機器人數量", value=str(findbots), inline=True)
            embed.add_field(name="管理員", value=ctx.guild.owner, inline=True)
            embed.add_field(name="位址", value=ctx.guild.region, inline=True)
            embed.add_field(name="建立於",
                            value=default.date(ctx.guild.created_at),
                            inline=True)
            await ctx.send(
                content=f"ℹ 這是 **{ctx.guild.name}** 頻道的基本資訊哦汪嗚 ٩(。・ω・。)و",
                embed=embed)
Ejemplo n.º 8
0
 async def serverinfo(self, ctx):
     """Check info about current server """
     members = set(ctx.guild.members)
     offline = filter(lambda m: m.status is discord.Status.offline, members)
     offline = set(offline)
     bots = filter(lambda m: m.bot, members)
     bots = set(bots)
     users = members - bots
     embed = discord.Embed(colour=0x36393E)
     embed.set_thumbnail(url=ctx.guild.icon_url)
     embed.add_field(name="Server Name", value=ctx.guild.name, inline=True)
     embed.add_field(name="Server ID", value=ctx.guild.id, inline=True)
     embed.add_field(name="Owner", value=ctx.guild.owner, inline=True)
     embed.add_field(name="Region", value=ctx.guild.region, inline=True)
     embed.add_field(name="Created on",
                     value=default.date(ctx.guild.created_at),
                     inline=True)
     embed.add_field(
         name="Users",
         value=
         f"**Total Users:** {len(users)}\n**Users Online:** {len(users - offline)}\n**Users Offline:** {len(users & offline)}",
         inline=True)
     embed.add_field(
         name="Bots",
         value=
         f"**Total Bots:** {len(bots)}\n**Bots Online:** {len(bots - offline)}\n**Bots Offline:** {len(bots & offline)}",
         inline=True)
     await ctx.send(embed=embed)
Ejemplo n.º 9
0
 async def on_member_join(self, member):
     channel = self.bot.get_channel(Channel id goes here)
     embed = discord.Embed(color=0x21d3f3)
     embed.description = f"**{member.mention}** just joined!"
     embed.add_field(name="User Number:", value=len(list(member.guild.members)), inline=False)
     embed.add_field(name="Guild ID:", value=member.guild.id, inline=False)
     embed.add_field(name="Account created:", value=default.date(member.created_at), inline=False)
     await channel.send(embed=embed)
Ejemplo n.º 10
0
    async def on_member_update(self, before, after):
        channel = self.bot.get_channel(set channel id here)
        author_id = str(after.id)

        if len(before.roles) < len(after.roles):
            new_role = next(role for role in after.roles if role not in before.roles)
            if new_role.name in ('-online-'):
                try:
                    embed = discord.Embed(color=0x21d3f3)
                    embed.description = f"{after.mention} just verified!"
                    embed.add_field(name="Account created:", value=default.date(after.created_at), inline=True)
                    embed.add_field(name="Joined this server:", value=default.date(after.joined_at), inline=False)
                    embed.add_field(name="Verification:", value=":white_check_mark: Verified!", inline=False)
                    await channel.send(embed=embed)

                    return await channel.send(f"{after.mention} Change your color by doing .color [hexcode]")
                except Exception as e:
                    await channel.send(f"{e}")
Ejemplo n.º 11
0
    async def user_info(self, ctx, user: discord.Member = None):
        user = user or ctx.author
        embed = discord.Embed(title=f"**{user}**", colour=user.colour)
        embed.set_thumbnail(url=user.avatar_url)
        embed.add_field(name="Current display name",
                        value=user.display_name,
                        inline=False)
        embed.add_field(name="Joined Discord",
                        value=default.date(user.created_at),
                        inline=False)
        embed.add_field(name="Joined server",
                        value=default.date(user.joined_at),
                        inline=False)
        embed.add_field(name="Highest role in server",
                        value=user.top_role.mention,
                        inline=False)

        await ctx.send(embed=embed)
Ejemplo n.º 12
0
    async def userinfo(self, ctx, *, user: discord.Member = None):
        """ Get user information """
        if user is None:
            user = ctx.author

        embed = discord.Embed(colour=self.bot.embed_color)
        shared = str(len([i for i in ctx.bot.guilds if i.get_member(user.id)]))


        embed.add_field(name=get_text(ctx.guild, 'info', 'info.name'), value=user, inline=True)
        embed.add_field(name=get_text(ctx.guild, 'info', 'info.nick'), value=user.nick if hasattr(user, "nick") else get_text(ctx.guild, 'info', 'info.none'), inline=True)
        embed.add_field(name=get_text(ctx.guild, 'info', 'info.acc_created'), value=default.date(user.created_at), inline=True)
        embed.add_field(name=get_text(ctx.guild, 'info', 'info.user_id'), value=user.id)
        embed.add_field(name=get_text(ctx.guild, 'info', 'info.bot'), value=user.bot)
        embed.add_field(name=get_text(ctx.guild, 'info', 'info.joined_server'), value=default.date(user.joined_at), inline=True)
        embed.add_field(name=get_text(ctx.guild, 'info', 'info.shared'), value=shared)
        embed.add_field(name=get_text(ctx.guild, 'info', 'info.avatar'), value=f"[{get_text(ctx.guild, 'info', 'info.click')}]({user.avatar_url})")

        acknowledgements = []

        supportguild = self.bot.get_guild(514232441498763279)

        if user == self.bot.get_user(self.bot.owner_id):
            owner = "<:owner:621436626257838090> " + get_text(ctx.guild, 'info', 'info.acknowledgements.owner')
            acknowledgements.append(owner)

        translator_role = supportguild.get_role(592319743692898326)
        if user in supportguild.members:
            if user in translator_role.members:
                translator = "<:google_tr:621435195102461952> " + get_text(ctx.guild, 'info', 'info.acknowledgements.translator')
                acknowledgements.append(translator)

        bughunter_role = supportguild.get_role(521132262587236364)
        if user in supportguild.members:
            if user in bughunter_role.members:
                bughunter = "<:bughunter:633796873144238090> Bug Hunter"
                acknowledgements.append(bughunter)

        embed.add_field(name=get_text(ctx.guild, 'info', 'info.status'), value=f"**{get_text(ctx.guild, 'info', 'info.status.mobile')}:** {user.mobile_status}\n**{get_text(ctx.guild, 'info', 'info.status.desktop')}:** {user.desktop_status}\n**{get_text(ctx.guild, 'info', 'info.status.web')}:** {user.web_status}")
        if acknowledgements:
            embed.add_field(name=get_text(ctx.guild, 'info', 'info.acknowledgements'), value="\n".join(acknowledgements))

        embed.set_thumbnail(url=user.avatar_url_as(static_format='png'))

        userroles = []
        for role in user.roles:
            userroles.append(role.id)

        userroles = userroles[::-1][:-1]

        embed.add_field(
            name=get_text(ctx.guild, 'info', 'info.roles'),
            value=', '.join([f"<@&{x}>" for x in userroles]) if len(user.roles) > 1 else get_text(ctx.guild, 'info', 'info.none'),
            inline=False
        )

        await ctx.send(content="<:info:603362826358095922> " + get_text(ctx.guild, 'info', 'info.info_about').format(user), embed=embed)
Ejemplo n.º 13
0
    async def joindate(self, ctx, *, user: discord.Member = None):
        """ Check when a user joined the current server """
        if user is None:
            user = ctx.author

        embed = discord.Embed(colour=self.bot.embed_color)
        embed.set_thumbnail(url=user.avatar_url)
        embed.description = get_text(ctx.guild, 'info',
                                     'info.join_date').format(
                                         user, ctx.guild.name,
                                         default.date(user.joined_at))
        await ctx.send(embed=embed)
Ejemplo n.º 14
0
    async def about(self, ctx):

        version = self.bot.version
        channel_types = Counter(type(c) for c in self.bot.get_all_channels())
        voice = channel_types[discord.channel.VoiceChannel]
        text = channel_types[discord.channel.TextChannel]

        te = len([c for c in set(self.bot.walk_commands()) if c.cog_name == "Owner"])
        se = len([c for c in set(self.bot.walk_commands()) if c.cog_name == "Staff"])
        xd = len([c for c in set(self.bot.walk_commands())])
        if await ctx.bot.is_owner(ctx.author):
            ts = 0
        elif await ctx.bot.is_admin(ctx.author):
            ts = te
        elif not await ctx.bot.is_admin(ctx.author):
            ts = te + se
        totcmd = xd - ts

        mems = sum([x.member_count for x in self.bot.guilds])
        website = 'https://dredd-bot.xyz/'
        Moksej = self.bot.get_user(345457928972533773)

        embed = discord.Embed(color=self.bot.settings['colors']['embed_color'])
        embed.set_author(name=_("About {0}").format(self.bot.user), icon_url=self.bot.user.avatar_url)
        embed.description = _("""
Dredd is a bot that will help your server with moderation, provide fun to your members, and much more! The bot is currently running on **V{0}** and is currently maintained.

**Developer:** [{1}](https://discord.com/users/345457928972533773)
**Library & version:** {2} [enhanced discord.py {3}](https://github.com/iDutchy/discord.py)
**Last boot:** {4}
**Created:** {5} ({6})

**Links:**
• [Support server]({7})
• [Bot invite]({8})
• [Website]({17})

**Latest Changes:**
{9}

**Total:**
• Commands: **{10}**
• Members: **{11}**
• Servers: **{12}**
• Channels: {13} **{14}** | {15} **{16}**\n
""").format(version, escape_markdown(str(Moksej), as_needed=False), self.bot.settings['emojis']['misc']['python'], discord.__version__, btime.human_timedelta(self.bot.uptime),
            default.date(self.bot.user.created_at), default.timeago(datetime.utcnow() - self.bot.user.created_at.replace(tzinfo=None)), self.bot.support, self.bot.invite,
            self.get_last_commits(), f'{totcmd:,}', f'{mems:,}', f'{len(self.bot.guilds):,}', self.bot.settings['emojis']['logs']['unlock'], f'{text:,}',
            self.bot.settings['emojis']['logs']['vcunlock'], f'{voice:,}', website)
        embed.set_image(
            url=self.bot.settings['banners']['default'])

        await ctx.send(embed=embed)
Ejemplo n.º 15
0
    async def userinfo(self, ctx, *, user: discord.Member = None):
        """ See a user's info """
        if not user:
            user = ctx.author

        if str(user.status) == 'dnd':
            status = 'Do Not Disturb'
        else:
            status = user.status

        uroles = []
        for role in user.roles:
            if role.is_default():
                continue
            uroles.append(role.mention)

        uroles.reverse()

        if len(uroles) > 10:
            uroles = [f"{', '.join(uroles[:10])} (+{len(user.roles) - 11})"]

        e = discord.Embed(color=user.colour)
        e.set_author(name=user.display_name, icon_url=user.avatar_url)
        e.set_thumbnail(url=user.avatar_url)
        e.description = _("""
**Username:** {0}
**User ID:** {1}
**Created on {2}**
**Joined on {3}**
**Flag value:** {4}
**Status:** {5}
""").format(user, user.id, default.date(user.created_at),
            default.date(user.joined_at), user.public_flags.value, status)
        if len(uroles) > 0:
            e.add_field(
                name=_("__**Roles ({0})**__").format(len(user.roles) - 1),
                value=", ".join(uroles),
                inline=False)

        await ctx.send(embed=e)
Ejemplo n.º 16
0
    async def on_member_unban(self, guild, user):
        await asyncio.sleep(2)

        db_check1 = cm.get_cache(self.bot, guild.id, 'moderation')
        #logchannel = await self.bot.db.fetchval("SELECT channel_id FROM moderation WHERE guild_id = $1", guild.id)
        case = cm.get_cache(self.bot, guild.id, 'case_num')

        channel = self.bot.get_channel(db_check1)

        if db_check1 is None:
            return
        deleted = ""
        reason = ""
        try:
            if guild.me.guild_permissions.view_audit_log:
                async for entry in guild.audit_logs(
                        action=discord.AuditLogAction.unban, limit=50):
                    if entry.target == user:
                        if (datetime.utcnow() -
                                entry.created_at).total_seconds() < 10:
                            deleted += f"{entry.user} ({entry.user.id})"
                            reason += f"{entry.reason}"
        except Exception as e:
            print(e)
            pass

        casenum = case or 1

        embed = discord.Embed(
            color=self.color['logging_color'],
            description=f"{emotes.log_unban} Member unbanned! `[#{casenum}]`",
            timestamp=datetime.utcnow())
        embed.add_field(name="User name",
                        value=f'{user} ({user.id})',
                        inline=False)
        embed.add_field(name="Member created at:",
                        value=default.date(user.created_at),
                        inline=False)
        if deleted:
            embed.add_field(name="Moderator", value=deleted, inline=False)
        if reason:
            embed.add_field(name="Reason:", value=reason, inline=False)
        embed.set_thumbnail(url=user.avatar_url)
        await self.update_query(guildid=guild.id, case=casenum)
        self.bot.case_num[guild.id] += 1
        try:
            await channel.send(embed=embed)
        except Exception as e:
            await self.event_error(error=e,
                                   event='on_member_unban',
                                   guild=guild)
            return
Ejemplo n.º 17
0
    async def user(self, ctx, *, user: discord.Member = None):
        """ Get user information """
        fuckmenigga = ctx.message.author
        if discord.utils.get(fuckmenigga.roles, name="Muted") != None:
            return
        if user is None:
            user = ctx.author

        embed = discord.Embed(colour=user.top_role.colour.value)
        embed.set_thumbnail(url=user.avatar_url)

        embed.add_field(name="Full name", value=user, inline=True)
        embed.add_field(name="Nickname", value=user.nick if hasattr(user, "nick") else "None", inline=True)
        embed.add_field(name="Account created", value=default.date(user.created_at), inline=True)
        embed.add_field(name="Joined this server", value=default.date(user.joined_at), inline=True)

        embed.add_field(
            name="Roles",
            value=', '.join([f"<@&{x.id}>" for x in user.roles if x is not ctx.guild.default_role]) if len(user.roles) > 1 else 'None',
            inline=False
        )

        await ctx.send(content=f"ℹ About **{user.id}**", embed=embed)
Ejemplo n.º 18
0
    async def info(self, ctx, emote: discord.Emoji):
        """ Get info about an emote """
        e = discord.Embed(color=discord.Color.dark_teal())
        e.set_author(name=emote.name, icon_url=emote.guild.icon_url)
        e.description = _("""
**Created on {0}**
**From** {1} (`{2}`)
**Emote ID:** `{3}`
**Emote URL:** [Click here]({4})
**Escaped:** \{5}
""").format(default.date(emote.created_at), emote.guild, emote.guild_id,
            emote.id, emote.url, emote)
        e.set_thumbnail(url=emote.url)
        await ctx.send(embed=e)
Ejemplo n.º 19
0
    async def server(self, ctx):
        """ Check info about current server """
        fuckmenigga = ctx.message.author
        if discord.utils.get(fuckmenigga.roles, name="Muted") != None:
            return
        if ctx.invoked_subcommand is None:
            findbots = sum(1 for member in ctx.guild.members if member.bot)

            embed = discord.Embed()
            embed.set_thumbnail(url=ctx.guild.icon_url)
            embed.add_field(name="Server Name", value=ctx.guild.name, inline=True)
            embed.add_field(name="Server ID", value=ctx.guild.id, inline=True)
            embed.add_field(name="Members", value=ctx.guild.member_count, inline=True)
            embed.add_field(name="Bots", value=findbots, inline=True)
            embed.add_field(name="Owner", value=ctx.guild.owner, inline=True)
            embed.add_field(name="Region", value=ctx.guild.region, inline=True)
            embed.add_field(name="Created", value=default.date(ctx.guild.created_at), inline=True)
            await ctx.send(content=f"ℹ information about **{ctx.guild.name}**", embed=embed)
Ejemplo n.º 20
0
    async def roleinfo(self, ctx, *, role: discord.Role):
        """ See a role's info """

        managed = _("Yes") if role.managed else _("No")
        hoisted = _("Yes") if role.hoist else _("No")
        position = len(ctx.guild.roles) - role.position
        permissions = dict(role.permissions)
        perms = []
        for perm in permissions.keys():
            if permissions[
                    perm] is True and not role.permissions.administrator:  # I guess role.permissions.administrator works, not sure
                perms.append(perm.lower().replace('_', ' ').title())

        if role.permissions.administrator:
            perms.append("Administrator")

        rolemembers = []
        for member in role.members:
            rolemembers.append(member.mention)

        if len(rolemembers) > 10:
            rolemembers = [
                f"{', '.join(rolemembers[:10])} (+{len(role.members) - 11})"
            ]

        e = discord.Embed(color=role.color)
        e.description = _("""
**ID:** {0}
**Created at:** {1}
**Managed:** {2}
**Position:** {3}
**Hoisted:** {4}
**Color:** `{5}`
**Permissions:** `{6}`
**Members ({7}):** {8} 
""").format(role.id, default.date(role.created_at), managed,
            position, hoisted, role.colour, "`, `".join(perms),
            len(role.members), ", ".join(rolemembers))
        await ctx.send(_("Information about role **{0}**").format(role.name),
                       embed=e)
Ejemplo n.º 21
0
    async def server(self, ctx):
        """ Check info about current server """
        if ctx.invoked_subcommand is None:

            rowcheck = await self.getserverstuff(ctx)

            findbots = sum(1 for member in ctx.guild.members if member.bot)

            emojilist = "​"
            for Emoji in ctx.guild.emojis:
                emojilist += f"{Emoji} "
            if len(emojilist) > 1024:
                emojilist = "Too long!"

            if rowcheck["embeds"] == 0 or not permissions.can_embed(ctx):
                return await ctx.send(
                    f"```\nServer Name: {ctx.guild.name}\nServer ID: {ctx.guild.id}\nMembers: {ctx.guild.member_count}\nBots: {findbots}\nOwner: {ctx.guild.owner}\nRegion: {ctx.guild.region}\nCreated At: {default.date(ctx.guild.created_at)}\n```\nEmojis: {emojilist}"
                )

            embed = discord.Embed(colour=249_742)
            embed.set_thumbnail(url=ctx.guild.icon_url)
            embed.add_field(name="Server Name",
                            value=ctx.guild.name,
                            inline=True)
            embed.add_field(name="Server ID", value=ctx.guild.id, inline=True)
            embed.add_field(name="Members",
                            value=ctx.guild.member_count,
                            inline=True)
            embed.add_field(name="Bots", value=findbots, inline=True)
            embed.add_field(name="Owner", value=ctx.guild.owner, inline=True)
            embed.add_field(name="Region", value=ctx.guild.region, inline=True)
            embed.add_field(name="Emojis", value=emojilist, inline=False)
            embed.add_field(name="Created",
                            value=default.date(ctx.guild.created_at),
                            inline=False)
            await ctx.send(content=f"ℹ information about **{ctx.guild.name}**",
                           embed=embed)
Ejemplo n.º 22
0
    async def user(self, ctx, user: discord.Member = None):
        """ Get user information """
        rowcheck = await self.getserverstuff(ctx)

        if user is None:
            user = ctx.author

        embed = discord.Embed(colour=249_742)

        usrstatus = user.status

        if usrstatus == "online" or usrstatus == discord.Status.online:
            usrstatus = "<:online:514203909363859459> Online"
        elif usrstatus == "idle" or usrstatus == discord.Status.idle:
            usrstatus = "<:away:514203859057639444> Away"
        elif usrstatus == "dnd" or usrstatus == discord.Status.dnd:
            usrstatus = "<:dnd:514203823888138240> DnD"
        elif usrstatus == "offline" or usrstatus == discord.Status.offline:
            usrstatus = "<:offline:514203770452836359> Offline"
        else:
            usrstatus = "Broken"

        if user.nick:
            nick = user.nick
        else:
            nick = "No Nickname"

        if user.activity:
            usrgame = f"{user.activity.name}"
        else:
            usrgame = "No current game"

        usrroles = ""

        for Role in user.roles:
            if "@everyone" in Role.name:
                usrroles += "| @everyone | "
            else:
                usrroles += f"{Role.name} | "

        if len(usrroles) > 1024:
            usrroles = "Too many to count!"

        if rowcheck["embeds"] == 0 or not permissions.can_embed(ctx):
            return await ctx.send(
                f"Name: `{user.name}#{user.discriminator}`\nNick: `{nick}`\nUID: `{user.id}`\nStatus: {usrstatus}\nGame: `{usrgame}`\nIs a bot? `{user.bot}`\nCreated On: `{default.date(user.created_at)}`\nRoles:\n```\n{usrroles}\n```"
            )

        embed.set_thumbnail(url=user.avatar_url)
        embed.add_field(
            name="Name",
            value=f"{user.name}#{user.discriminator}\n{nick}\n({user.id})",
            inline=True,
        )
        embed.add_field(name="Status", value=usrstatus, inline=True)
        embed.add_field(name="Game", value=usrgame, inline=True)
        embed.add_field(name="Is bot?", value=user.bot, inline=True)
        embed.add_field(name="Roles", value=usrroles, inline=False)
        embed.add_field(name="Created On",
                        value=default.date(user.created_at),
                        inline=True)
        if hasattr(user, "joined_at"):
            embed.add_field(
                name="Joined this server",
                value=default.date(user.joined_at),
                inline=True,
            )
        await ctx.send(content=f"ℹ About **{user.name}**", embed=embed)
Ejemplo n.º 23
0
    async def on_member_join(self, member):
        #print(f'{member} has joined a server ({member.guild}).')

        # ! Join role (Role on join)
        db_check1 = await self.bot.db.fetchval(
            "SELECT guild_id FROM joinrole WHERE guild_id = $1",
            member.guild.id)
        peoplerole = await self.bot.db.fetchval(
            "SELECT role_id FROM joinrole WHERE guild_id = $1",
            member.guild.id)
        botrole = await self.bot.db.fetchval(
            "SELECT bots FROM joinrole WHERE guild_id = $1", member.guild.id)
        # ! Join log (Member join log)
        db_check2 = await self.bot.db.fetchval(
            "SELECT guild_id FROM joinlog WHERE guild_id = $1",
            member.guild.id)
        joinlog = await self.bot.db.fetchval(
            "SELECT channel_id FROM joinlog WHERE guild_id = $1",
            member.guild.id)
        # ! Join message (Welcome msg)
        db_check3 = await self.bot.db.fetchval(
            "SELECT guild_id FROM joinmsg WHERE guild_id = $1",
            member.guild.id)
        joinmsg = await self.bot.db.fetchval(
            "SELECT channel_id FROM joinmsg WHERE guild_id = $1",
            member.guild.id)
        message = await self.bot.db.fetchval(
            "SELECT msg FROM joinmsg WHERE guild_id = $1", member.guild.id)
        bots = await self.bot.db.fetchval(
            "SELECT bot_join FROM joinmsg WHERE guild_id = $1",
            member.guild.id)
        # ! Temp mute
        temp_mute = await self.bot.db.fetchval(
            "SELECT user_id FROM moddata WHERE user_id = $1 AND guild_id = $2",
            member.id, member.guild.id)

        with open('db/badges.json', 'r') as f:
            data = json.load(f)
        try:
            badges = data['Users'][f"{member.id}"]['Badges']
        except KeyError:
            badges = ''
            pass
        except Exception as e:
            badges = ''
            print(e)
            pass

        if db_check1 is not None:
            if member.guild.me.guild_permissions.manage_roles:
                # Role on join
                if member.bot and botrole is not None:
                    role = member.guild.get_role(botrole)

                    try:
                        await member.add_roles(role, reason='Autorole')
                    except Exception as e:
                        await self.event_error(
                            error=e,
                            event='on_member_join (bot role)',
                            guild=before.guild)
                        return
                elif not member.bot and peoplerole is not None:
                    role = member.guild.get_role(peoplerole)
                    try:
                        await member.add_roles(role, reason='Autorole')
                    except Exception as e:
                        await self.event_error(
                            error=e,
                            event='on_member_join (people role)',
                            guild=before.guild)
                        return
                if temp_mute:
                    muterole = discord.utils.find(
                        lambda r: r.name.lower() == "muted",
                        member.guild.roles)
                    if muterole:
                        try:
                            await member.add_roles(
                                muterole, reason='User was muted before')
                        except Exception as e:
                            await self.event_error(
                                error=e,
                                event='on_member_join (anti evading mute)',
                                guild=member.guild)
                            return
                    else:
                        return
        if db_check3 is not None:
            if member.bot and bots == False:
                return
            elif member.bot and bots == True:
                pass
            elif bots is None:
                pass
            if message:
                joinmessage = str(message)
                joinmessage = joinmessage.replace("::member.mention::",
                                                  member.mention)
                joinmessage = joinmessage.replace("::member.name::",
                                                  member.name)
                joinmessage = joinmessage.replace("::server.name::",
                                                  member.guild.name)
                joinmessage = joinmessage.replace(
                    "::server.members::", str(member.guild.member_count))
            elif message is None:
                joinmessage = f"{emotes.joined} {member.mention} joined the server! There are {member.guild.member_count} members in the server now."
            # Welcome msg
            welcomechannel = self.bot.get_channel(joinmsg)
            try:
                await welcomechannel.send(
                    joinmessage,
                    allowed_mentions=discord.AllowedMentions(users=True))
            except Exception as e:
                await self.event_error(
                    error=e,
                    event='on_member_join (welcome message)',
                    guild=member.guild)
                return
        if db_check2 is not None:
            # Member join log
            logchannel = self.bot.get_channel(joinlog)
            embed = discord.Embed(
                color=self.bot.logging_color,
                description=f"{emotes.log_memberjoin} New member joined",
                timestamp=datetime.utcnow())
            #embed.set_author(icon_url=member.avatar_url)
            embed.add_field(name="Username:"******"User ID:", value=member.id, inline=True)
            embed.add_field(name="Created at:",
                            value=default.date(member.created_at),
                            inline=False)
            embed.set_thumbnail(url=member.avatar_url)
            if member.guild.id == 671078170874740756 and badges:
                embed.add_field(name='User badges',
                                value=', '.join(badges),
                                inline=False)
            try:
                await logchannel.send(embed=embed)
            except Exception as e:
                await self.event_error(
                    error=e,
                    event='on_member_join (welcome log message)',
                    guild=member.guild)
                return
Ejemplo n.º 24
0
    async def on_member_remove(self, member):

        await self.bot.db.execute(
            "DELETE FROM warnings WHERE user_id = $1 AND guild_id = $2",
            member.id, member.guild.id)
        await self.bot.db.execute(
            "DELETE FROM autowarns WHERE user_id = $1 AND guild_id = $2",
            member.id, member.guild.id)
        shared_server = len([
            x for x in self.bot.guilds
            if x.id != member.guild.id and x.get_member(member.id)
        ])
        if shared_server == 0:
            await self.bot.db.execute(
                "DELETE FROM useractivity WHERE user_id = $1", member.id)

        db_check1 = cm.get_cache(self.bot, member.guild.id, 'leavemsg')
        db_check2 = cm.get_cache(self.bot, member.guild.id, 'joinlog')

        moderation = cm.get_cache(self.bot, member.guild.id, 'moderation')
        case = cm.get_cache(self.bot, member.guild.id, 'case_num')

        if member == self.bot.user:
            return

        if member.guild.me.guild_permissions.view_audit_log:
            checks = await self.get_audit_logs(
                member.guild, limit=1, action=discord.AuditLogAction.kick)

        if db_check2 is not None:
            # Member leave log
            logchannel = self.bot.get_channel(db_check2)
            embed = discord.Embed(
                color=self.color['logging_color'],
                description=f"{emotes.log_memberleave} Member left",
                timestamp=datetime.utcnow())
            #embed.set_author(icon_url=member.avatar_url)
            embed.add_field(name="Username:"******"{member} ({member.id})",
                            inline=True)
            embed.add_field(name="Created at:",
                            value=default.date(member.created_at),
                            inline=False)
            embed.add_field(name="Joined at:",
                            value=default.date(member.joined_at),
                            inline=False)
            embed.set_thumbnail(url=member.avatar_url)
            try:
                await logchannel.send(embed=embed)
            except Exception as e:
                await self.event_error(
                    error=e,
                    event='on_member_remove (leave log message)',
                    guild=member.guild)
                pass

        if moderation is not None:
            try:
                deleted = ""
                reason = ""
                async for entry in member.guild.audit_logs(
                        limit=1, action=discord.AuditLogAction.kick):
                    if entry.target == member:
                        deleted += f"{entry.user} ({entry.user.id})"
                        reason += f"{entry.reason}"
                    #print(entry)
            except Exception as e:
                print(e)
                pass
            logchannel = self.bot.get_channel(moderation)
            if deleted and (datetime.utcnow() -
                            checks[0].created_at).total_seconds() < 5:

                casenum = cm.get_cache(self.bot, member.guild.id,
                                       'case_num') or 1
                embed = discord.Embed(
                    color=self.color['logging_color'],
                    description=
                    f"{emotes.log_memberleave} Member kicked `[#{casenum}]`",
                    timestamp=datetime.utcnow())
                #embed.set_author(icon_url=member.avatar_url)
                embed.add_field(name="Username:"******"{member} ({member.id})",
                                inline=False)
                embed.add_field(name="Created at:",
                                value=default.date(member.created_at),
                                inline=False)
                embed.add_field(name="Joined at:",
                                value=default.date(member.joined_at),
                                inline=False)
                if deleted:
                    embed.add_field(name='Moderator:',
                                    value=deleted,
                                    inline=False)
                if reason:
                    embed.add_field(name="Reason:", value=reason, inline=False)
                embed.set_thumbnail(url=member.avatar_url)
                await self.update_query(guildid=member.guild.id, case=casenum)
                self.bot.case_num[member.guild.id] += 1
                try:
                    await logchannel.send(embed=embed)
                except Exception as e:
                    await self.event_error(
                        error=e,
                        event='on_member_remove (kick message)',
                        guild=member.guild)
                    pass

            elif deleted and (datetime.utcnow() -
                              checks[0].created_at).total_seconds() > 5:
                pass

        if db_check1 is not None:
            if member.bot and db_check1['bot_joins'] == False:
                return
            elif member.bot and db_check1['bot_joins'] == True:
                pass
            elif db_check1['bot_joins'] is None:
                pass
            if db_check1['message'] and not db_check1['embed']:
                leavemessage = str(db_check1['message'])
                leavemessage = leavemessage.replace("{{member.mention}}",
                                                    member.mention)
                leavemessage = leavemessage.replace("{{member.tag}}",
                                                    str(member))
                leavemessage = leavemessage.replace("{{member.id}}",
                                                    str(member.id))
                leavemessage = leavemessage.replace(
                    "{{member.name}}",
                    discord.utils.escape_markdown(member.name, as_needed=True))
                leavemessage = leavemessage.replace("{{server.name}}",
                                                    member.guild.name)
                leavemessage = leavemessage.replace(
                    "{{server.members}}", str(member.guild.member_count))
            elif db_check1['message'] is None and not db_check1['embed']:
                leavemessage = f"{emotes.left} {member.mention} left the server... There are {member.guild.member_count} members left in the server."
            elif db_check1['message'] and db_check1['embed'] == True:
                msg = json.loads(db_check1['message'])
                emb_dict = msg
                emb_dict = self.placeholder_replacer(emb_dict, member)
                if "author" in emb_dict:
                    emb_dict["author"] = self.placeholder_replacer(
                        emb_dict["author"], member)
                if "footer" in emb_dict:
                    emb_dict["footer"] = self.placeholder_replacer(
                        emb_dict["footer"], member)
                if "fields" in emb_dict:
                    for field in emb_dict["fields"]:
                        emb_dict["fields"] = self.placeholder_replacer(
                            field["name"], member)
                        emb_dict["fields"] = self.placeholder_replacer(
                            field["value"], member)
            elif db_check1['message'] is None and db_check1['embed'] == True:
                emb_dict = {
                    "description":
                    "{{member.name}} left the server! There are now {{server.members}} members left!",
                    "color": 13579316
                }
                emb_dict = self.placeholder_replacer(emb_dict, member)
                if "author" in emb_dict:
                    emb_dict["author"] = self.placeholder_replacer(
                        emb_dict["author"], member)
                if "footer" in emb_dict:
                    emb_dict["footer"] = self.placeholder_replacer(
                        emb_dict["footer"], member)
                if "fields" in emb_dict:
                    for field in emb_dict["fields"]:
                        emb_dict["fields"] = self.placeholder_replacer(
                            field["name"], member)
                        emb_dict["fields"] = self.placeholder_replacer(
                            field["value"], member)
            leavechannel = self.bot.get_channel(db_check1['channel'])
            try:
                if db_check1['embed']:
                    try:
                        await leavechannel.send(
                            content=emb_dict['plainText'],
                            embed=discord.Embed.from_dict(emb_dict),
                            allowed_mentions=discord.AllowedMentions(
                                users=True))
                    except:
                        await leavechannel.send(
                            embed=discord.Embed.from_dict(emb_dict),
                            allowed_mentions=discord.AllowedMentions(
                                users=True))
                else:
                    await leavechannel.send(
                        leavemessage,
                        allowed_mentions=discord.AllowedMentions(users=True))
            except Exception as e:
                await self.event_error(
                    error=e,
                    event='on_member_remove (leave message)',
                    guild=member.guild)
                return
Ejemplo n.º 25
0
    async def on_member_join(self, member):
        #print(f'{member} has joined a server ({member.guild}).')

        # ! Join role (Role on join)
        db_check1 = cm.get_cache(self.bot, member.guild.id, 'joinrole')
        # ! Join log (Member join log)
        db_check2 = cm.get_cache(self.bot, member.guild.id, 'joinlog')
        # ! Join message (Welcome msg)
        db_check3 = cm.get_cache(self.bot, member.guild.id, 'joinmsg')
        # ! Temp mute
        temp_mute = await self.bot.db.fetchval(
            "SELECT user_id FROM moddata WHERE user_id = $1 AND guild_id = $2",
            member.id, member.guild.id)

        badges = cm.get_cache(self.bot, f"{member.id}", 'user_badges')

        if db_check1 is not None:
            if member.guild.me.guild_permissions.manage_roles:
                # Role on join
                if member.bot and db_check1['bots'] is not None:
                    role = member.guild.get_role(db_check1['bots'])

                    try:
                        await member.add_roles(role, reason='Autorole')
                    except Exception as e:
                        await self.event_error(
                            error=e,
                            event='on_member_join (bot role)',
                            guild=member.guild)
                        pass
                elif not member.bot and db_check1['people'] is not None:
                    role = member.guild.get_role(db_check1['people'])
                    try:
                        await member.add_roles(role, reason='Autorole')
                    except Exception as e:
                        await self.event_error(
                            error=e,
                            event='on_member_join (people role)',
                            guild=member.guild)
                        pass
                if temp_mute:
                    muterole = discord.utils.find(
                        lambda r: r.name.lower() == "muted",
                        member.guild.roles)
                    if muterole:
                        try:
                            await member.add_roles(
                                muterole, reason='User was muted before')
                        except Exception as e:
                            await self.event_error(
                                error=e,
                                event='on_member_join (anti evading mute)',
                                guild=member.guild)
                            pass
                    else:
                        pass
        if db_check2 is not None:
            # Member join log
            logchannel = self.bot.get_channel(db_check2)
            embed = discord.Embed(
                color=self.color['logging_color'],
                description=f"{emotes.log_memberjoin} New member joined",
                timestamp=datetime.utcnow())
            #embed.set_author(icon_url=member.avatar_url)
            embed.add_field(name="Username:"******"User ID:", value=member.id, inline=True)
            embed.add_field(name="Created at:",
                            value=default.date(member.created_at),
                            inline=False)
            embed.set_thumbnail(url=member.avatar_url)
            if member.guild.id == 671078170874740756 and badges:
                embed.add_field(name='User badges',
                                value=', '.join(badges),
                                inline=False)
            try:
                await logchannel.send(embed=embed)
            except Exception as e:
                await self.event_error(
                    error=e,
                    event='on_member_join (welcome log message)',
                    guild=member.guild)
                pass

        if db_check3 is not None:
            if member.bot and db_check3['bot_joins'] == False:
                return
            elif member.bot and db_check3['bot_joins'] == True:
                pass
            elif db_check3['bot_joins'] is None:
                pass
            if db_check3['message'] and not db_check3['embed']:
                joinmessage = str(db_check3['message'])
                joinmessage = joinmessage.replace("{{member.mention}}",
                                                  member.mention)
                joinmessage = joinmessage.replace("{{member.tag}}",
                                                  str(member))
                joinmessage = joinmessage.replace("{{member.id}}",
                                                  str(member.id))
                joinmessage = joinmessage.replace(
                    "{{member.name}}",
                    discord.utils.escape_markdown(member.name, as_needed=True))
                joinmessage = joinmessage.replace("{{server.name}}",
                                                  member.guild.name)
                joinmessage = joinmessage.replace(
                    "{{server.members}}", str(member.guild.member_count))
            elif db_check3['message'] is None and not db_check3['embed']:
                joinmessage = f"{emotes.joined} {member.mention} joined the server! There are {member.guild.member_count} members in the server now."

            elif db_check3['message'] and db_check3['embed'] == True:
                msg = json.loads(db_check3['message'])
                emb_dict = msg
                emb_dict = self.placeholder_replacer(emb_dict, member)
                if "author" in emb_dict:
                    emb_dict["author"] = self.placeholder_replacer(
                        emb_dict["author"], member)
                if "footer" in emb_dict:
                    emb_dict["footer"] = self.placeholder_replacer(
                        emb_dict["footer"], member)
                if "fields" in emb_dict:
                    for field in emb_dict["fields"]:
                        emb_dict["fields"] = self.placeholder_replacer(
                            field["name"], member)
                        emb_dict["fields"] = self.placeholder_replacer(
                            field["value"], member)
            elif db_check3['message'] is None and db_check3['embed'] == True:
                emb_dict = {
                    "plainText": "{{member.mention}}",
                    "title": "Welcome to {{server.name}}",
                    "description":
                    "You are member #{{server.members}} in this server!",
                    "color": 6215030
                }
                emb_dict = self.placeholder_replacer(emb_dict, member)
                if "author" in emb_dict:
                    emb_dict["author"] = self.placeholder_replacer(
                        emb_dict["author"], member)
                if "footer" in emb_dict:
                    emb_dict["footer"] = self.placeholder_replacer(
                        emb_dict["footer"], member)
                if "fields" in emb_dict:
                    for field in emb_dict["fields"]:
                        emb_dict["fields"] = self.placeholder_replacer(
                            field["name"], member)
                        emb_dict["fields"] = self.placeholder_replacer(
                            field["value"], member)
            # Welcome msg
            welcomechannel = self.bot.get_channel(db_check3['channel'])
            try:
                if db_check3['embed']:
                    try:
                        await welcomechannel.send(
                            content=emb_dict['plainText'],
                            embed=discord.Embed.from_dict(emb_dict),
                            allowed_mentions=discord.AllowedMentions(
                                users=True))
                    except:
                        await welcomechannel.send(
                            embed=discord.Embed.from_dict(emb_dict),
                            allowed_mentions=discord.AllowedMentions(
                                users=True))
                else:
                    await welcomechannel.send(
                        joinmessage,
                        allowed_mentions=discord.AllowedMentions(users=True))
            except Exception as e:
                await self.event_error(
                    error=e,
                    event='on_member_join (welcome message)',
                    guild=member.guild)
                pass
Ejemplo n.º 26
0
    async def serverinfo(self, ctx):
        """ Check info about current server """
        if ctx.invoked_subcommand is None:
            findbots = sum(1 for member in ctx.guild.members if member.bot)

            roles = ""

            for role in ctx.guild.roles:
                if not role.name == "@everyone":
                    roles += role.mention + ", "

            embed = discord.Embed(color=self.bot.embed_color)
            if ctx.guild.icon_url:
                embed.set_thumbnail(url=ctx.guild.icon_url)
            else:
                embed.set_thumbnail(url="https://cdn.discordapp.com/embed/avatars/0.png")
            embed.add_field(name=get_text(ctx.guild, 'info', 'info.server_name'), value=ctx.guild.name, inline=True)
            embed.add_field(name=get_text(ctx.guild, 'info', 'info.server_id'), value=ctx.guild.id, inline=True)
            embed.add_field(name=get_text(ctx.guild, 'info', 'info.server_members'), value=f"{sum(1 for member in ctx.guild.members if not member.bot)} (+{sum(1 for member in ctx.guild.members if member.bot)} {get_text(ctx.guild, 'info', 'info.server_bots')})", inline=True)
            embed.add_field(name=get_text(ctx.guild, 'info', 'info.server_owner'), value=ctx.guild.owner, inline=True)
            embed.add_field(name=get_text(ctx.guild, 'info', 'info.server_region'), value=ctx.guild.region, inline=True)
            embed.add_field(name=get_text(ctx.guild, 'info', 'info.created'), value=default.date(ctx.guild.created_at), inline=True)
           
            info = []
            features = set(ctx.guild.features)
            all_features = {
                'PARTNERED': get_text(ctx.guild, 'info', 'info.features.partnered'),
                'VERIFIED': get_text(ctx.guild, 'info', 'info.features.verified'),
                'INVITE_SPLASH': get_text(ctx.guild, 'info', 'info.features.splash'),
                'VANITY_URL': get_text(ctx.guild, 'info', 'info.features.vanity'),
                'MORE_EMOJI': get_text(ctx.guild, 'info', 'info.features.emoji'),
                'ANIMATED_ICON': get_text(ctx.guild, 'info', 'info.features.animated'),
                'BANNER': get_text(ctx.guild, 'info', 'info.features.banner')
            }

            for feature, label in all_features.items():
                if feature in features:
                    info.append(label)

            if info:
                embed.add_field(name=get_text(ctx.guild, 'info', 'info.features'), value=',\n'.join(info))

            embed.add_field(name=get_text(ctx.guild, 'info', 'info.server_verification'), value=str(ctx.guild.verification_level).capitalize())

            def next_level_calc(ctx):
                if str(ctx.guild.premium_tier) == "0":
                    count = int(2 - ctx.guild.premium_subscription_count)
                    txt = get_text(ctx.guild, 'info', 'info.next_level_in').format(count)
                    return txt

                if str(ctx.guild.premium_tier) == "1":
                    count = int(15 - ctx.guild.premium_subscription_count)
                    txt = get_text(ctx.guild, 'info', 'info.next_level_in').format(count)
                    return txt


                if str(ctx.guild.premium_tier) == "2":
                    count = int(30 - ctx.guild.premium_subscription_count)
                    txt = get_text(ctx.guild, 'info', 'info.next_level_in').format(count)
                    return txt

                if str(ctx.guild.premium_tier) == "3":
                    txt = get_text(ctx.guild, 'info', 'info.max_level')
                    return txt

            boostmsg = f"{get_text(ctx.guild, 'info', 'info.boost_count').format(ctx.guild.premium_subscription_count)}"
            boostmsg += "\n{0}".format(next_level_calc(ctx))

            last_boost = max(ctx.guild.members, key=lambda m: m.premium_since or ctx.guild.created_at)
            if last_boost.premium_since is not None:
                boosts = f"{get_text(ctx.guild, 'info', 'info.last_boost')} {last_boost} ({humanize.naturaltime(last_boost.premium_since)})"
                boostmsg += f"\n{boosts}"
            boostmsg += "\n\n0Рађ" + make_pb(30, 2, (ctx.guild.premium_subscription_count if ctx.guild.premium_subscription_count <= 30 else 30)) + "Рађ30"

            embed.add_field(name=get_text(ctx.guild, 'info', 'info.boosts'), value=boostmsg, inline=False)

            embed.add_field(name=get_text(ctx.guild, 'info', 'info.server_roles').format(int(len(ctx.guild.roles) -1)), value=roles[:-2])
            await ctx.send(content=f"<:info:603362826358095922> {get_text(ctx.guild, 'info', 'info.info_about').format(ctx.guild.name)}", embed=embed)
Ejemplo n.º 27
0
    async def serverinfo(self, ctx):
        """ Overview about the information of a server """

        if not ctx.guild.chunked:
            await ctx.guild.chunk(cache=True)

        acks = default.server_badges(ctx, ctx.guild)
        ack = _("\n**Acknowledgements:** {0}").format(acks) if acks else ''
        unique_members = set(ctx.guild.members)
        unique_online = sum(1 for m in unique_members
                            if m.status is discord.Status.online
                            and not type(m.activity) == discord.Streaming)
        unique_offline = sum(1 for m in unique_members
                             if m.status is discord.Status.offline
                             and not type(m.activity) == discord.Streaming)
        unique_idle = sum(1 for m in unique_members
                          if m.status is discord.Status.idle
                          and not type(m.activity) == discord.Streaming)
        unique_dnd = sum(1 for m in unique_members
                         if m.status is discord.Status.dnd
                         and not type(m.activity) == discord.Streaming)
        unique_streaming = sum(1 for m in unique_members
                               if type(m.activity) == discord.Streaming)
        humann = sum(1 for member in ctx.guild.members if not member.bot)
        botts = sum(1 for member in ctx.guild.members if member.bot)
        num = 0
        for user in ctx.guild.members:
            if ctx.channel.permissions_for(user).kick_members or \
               ctx.channel.permissions_for(user).ban_members:
                if not user.bot:
                    num += 1
        bans = ''
        if ctx.channel.permissions_for(ctx.guild.me).ban_members:
            bans += _("\n**Banned:** {0}").format(
                f'{len(await ctx.guild.bans()):,}')
        nitromsg = _("This server has **{0}** boosts").format(
            ctx.guild.premium_subscription_count)
        nitromsg += _("\n{0}").format(default.next_level(ctx))
        region = default.region_flags(ctx)

        e = discord.Embed(color=self.bot.settings['colors']['embed_color'])
        e.set_author(name=_("{0} Information").format(ctx.guild.name),
                     icon_url=ctx.guild.icon_url)
        e.add_field(name=_('General Information:'),
                    value=_("""
**Name:** {0}
**ID:** {1}
**Guild created:** {2} ({3})
**Region:** {4}
**Verification level:** {5}

**Owner:** {6}
**Owner ID:** {7}{8}

**Nitro status:**
{9}
""").format(
                        ctx.guild.name, ctx.guild.id,
                        default.date(ctx.guild.created_at),
                        btime.human_timedelta(
                            ctx.guild.created_at.replace(tzinfo=None),
                            source=datetime.utcnow()), region,
                        str(ctx.guild.verification_level).capitalize(),
                        ctx.guild.owner or 'Unknown', ctx.guild.owner.id, ack,
                        nitromsg))

        members_info = (
            f"{self.bot.settings['emojis']['misc']['pc-online']} {unique_online:,}\n"
            f"{self.bot.settings['emojis']['misc']['pc-idle']} {unique_idle:,}\n"
            f"{self.bot.settings['emojis']['misc']['pc-dnd']} {unique_dnd:,}\n"
            f"{self.bot.settings['emojis']['misc']['offline']} {unique_offline:,}\n"
            f"{self.bot.settings['emojis']['misc']['streaming']} {unique_streaming:,}"
        )
        e.add_field(name=_('Other Information:'),
                    value=_("""**Members:** (Total: {0})
{1}
**Bots:** {2} | **Humans:** {3}
**Staff:** {4}{5}
**Channels:** {6} {7} | {8} {9}
""").format(f'{ctx.guild.member_count:,}', members_info, f'{botts:,}',
            f'{humann:,}', f'{num:,}', bans,
            self.bot.settings['emojis']['logs']['unlock'],
            f'{len(ctx.guild.text_channels):,}',
            self.bot.settings['emojis']['logs']['vcunlock'],
            f'{len(ctx.guild.voice_channels):,}'))
        info = []
        features = set(ctx.guild.features)
        all_features = {
            'PARTNERED': 'Partnered',
            'VERIFIED': 'Verified',
            'DISCOVERABLE': 'Server Discovery',
            'COMMUNITY': 'Community server',
            'INVITE_SPLASH': 'Invite Splash',
            'VIP_REGIONS': 'VIP Voice Servers',
            'VANITY_URL': 'Vanity Invite',
            'MORE_EMOJI': 'More Emoji',
            'COMMERCE': 'Commerce',
            'LURKABLE': 'Lurkable',
            'NEWS': 'News Channels',
            'ANIMATED_ICON': 'Animated Icon',
            'BANNER': 'Banner',
            'WELCOME_SCREEN_ENABLED': "Welcome screen"
        }
        for feature, label in all_features.items():
            if feature in features:
                info.append(label)

        if info:
            e.add_field(name=_("Features"),
                        value=', '.join(info),
                        inline=False)

        if not ctx.guild.is_icon_animated():
            e.set_thumbnail(url=ctx.guild.icon_url_as(format="png"))
        elif ctx.guild.is_icon_animated():
            e.set_thumbnail(url=ctx.guild.icon_url_as(format="gif"))
        if ctx.guild.banner:
            e.set_image(url=ctx.guild.banner_url_as(format="png"))
        await ctx.send(embed=e)
Ejemplo n.º 28
0
    async def userinfo(self,
                       ctx,
                       *,
                       user: typing.Union[discord.User, str] = None):
        """ Overview about the information of an user """
        embcolor = self.bot.settings['colors']['embed_color']
        user = await default.find_user(ctx, user)

        if not user:
            return await ctx.send(
                _("{0} | That user could not be found.").format(
                    ctx.bot.settings['emojis']['misc']['warn']))

        if not self.bot.get_user(user.id):
            embcolor = ctx.bot.settings['colors']['fetch_color']

        discord_badges = await default.public_flags(ctx, user)
        if user.bot and not discord_badges:
            discord_badges = f"{self.bot.settings['emojis']['badges']['bot']}"
        e = discord.Embed(color=embcolor)
        e.set_author(name=_("{0}'s Information").format(user),
                     icon_url=user.avatar_url)

        member = ctx.guild.get_member(user.id)
        if member:
            nick = member.nick or 'N/A'
            nicks = ''
            status = default.member_status(ctx, member)
            act = default.member_activity(ctx, member)
            uroles = []
            for role in member.roles:
                if role.is_default():
                    continue
                uroles.append(role.mention)
            uroles.reverse()
            if len(uroles) > 15:
                uroles = [
                    f"{', '.join(uroles[:10])} (+{len(member.roles) - 11})"
                ]
            if not member.bot:
                if CM.get(self.bot, 'nicks_op', member.id) is None:
                    nicks += _('\n**Latest nicknames:**  ')
                    nicknames = await self.bot.db.fetch(
                        "SELECT * FROM nicknames WHERE user_id = $1 AND guild_id = $2 ORDER BY time DESC LIMIT 5",
                        user.id, ctx.guild.id)
                    if nicknames:
                        for nickk in nicknames:
                            nicks += f"{escape_markdown(nickk['nickname'], as_needed=False)}, "
                    if not nicknames:
                        nicks += 'N/A  '
            user_roles = _(' **({0} Total)**').format(
                len(member.roles) - 1) if uroles != [] else _('No roles')
            e.add_field(name=_("General Information:"),
                        value=_("""
{0} {1} {2}
{3}
**User ID:** {4}
**Account created:** {5} ({6})""").format(
                            status, user, discord_badges, act, user.id,
                            user.created_at.__format__('%A %d %B %Y, %H:%M'),
                            btime.human_timedelta(
                                user.created_at.replace(tzinfo=None),
                                source=datetime.utcnow())),
                        inline=False)
            e.add_field(name=_("Server Information:"),
                        value=_("""
**Nickname:** {0}{1}
**Joined at:** {2} ({3})
**Roles:** {4}""").format(
                            nick, nicks[:-2], default.date(member.joined_at),
                            btime.human_timedelta(
                                member.joined_at.replace(tzinfo=None),
                                source=datetime.utcnow()),
                            ', '.join(uroles) + user_roles))

        else:

            guilds = [x for x in self.bot.guilds if x.get_member(user.id)]
            try:
                member = guilds[0].get_member(user.id)
                status = default.member_status(ctx, member)
                act = default.member_activity(ctx, member)
            except Exception:
                status = ''
                act = ''
            e.add_field(name=_("General Information:"),
                        value=_("""
{0} {1} {2}
{3}
**User ID:** {4}
**Account created:** {5} ({6})""").format(
                            status, user, discord_badges, act, user.id,
                            user.created_at.__format__('%A %d %B %Y, %H:%M'),
                            btime.human_timedelta(
                                user.created_at.replace(tzinfo=None),
                                source=datetime.utcnow())),
                        inline=False)

        if await self.bot.is_booster(user):
            media = await default.medias(ctx, user)
            if media:
                e.add_field(name=_('Social media:'), value=media, inline=False)

        if not user.is_avatar_animated():
            e.set_thumbnail(url=user.avatar_url_as(format='png'))
        elif user.is_avatar_animated():
            e.set_thumbnail(url=user.avatar_url_as(format='gif'))
        else:
            e.set_thumbnail(url=user.avatar_url)

        await ctx.send(embed=e)
Ejemplo n.º 29
0
    async def serverinfo(self, ctx):
        """ Get information about the server """

        owner = await self.bot.fetch_user(ctx.guild.owner_id)
        member_count = ctx.guild.member_count  # last known count because you don't have intents
        features = ", ".join(ctx.guild.features).lower().replace(
            '_', ' ').title() if len(ctx.guild.features) != 0 else None
        mfa = _("Optional") if ctx.guild.mfa_level else _("Required")
        verification = str(ctx.guild.verification_level).capitalize()

        e = discord.Embed(color=discord.Color.dark_teal())
        e.set_author(name=_("{0} Information").format(ctx.guild.name),
                     icon_url=ctx.guild.icon_url)
        e.add_field(name=_("**General Information**"),
                    value=_("**Owner:** {0} ({1})\n**Guild Created At:** {2}\n" \
                            "**MFA:** {3}\n**Verification Level:** {4}").format(owner, owner.id, default.date(ctx.guild.created_at), mfa, verification))
        e.add_field(name=_("**Other**"),
                    value=_("**Avg Member Count:** {0:,}\n**Text Channels:** {1}\n" \
                            "**Voice Channels:** {2}").format(member_count, len(ctx.guild.text_channels), len(ctx.guild.voice_channels)))
        #
        if features:
            e.add_field(name="**Server Features**",
                        value=features,
                        inline=False)

        if not ctx.guild.is_icon_animated():
            e.set_thumbnail(url=ctx.guild.icon_url_as(format="png"))
        elif ctx.guild.is_icon_animated():
            e.set_thumbnail(url=ctx.guild.icon_url_as(format="gif"))
        if ctx.guild.banner:
            e.set_image(url=ctx.guild.banner_url_as(format="png"))
        e.set_footer(text=f"Guild ID: {ctx.guild.id}")
        await ctx.send(embed=e)
Ejemplo n.º 30
0
    async def serverinfo(self, ctx):
        """ Check info about current server """
        if ctx.invoked_subcommand is None:
            findbots = sum(1 for member in ctx.guild.members if member.bot)

            roles = ""

            for role in ctx.guild.roles:
                if not role.name == "@everyone":
                    roles += role.mention + ", "

            embed = discord.Embed(color=self.bot.embed_color)
            if ctx.guild.icon_url:
                embed.set_thumbnail(url=ctx.guild.icon_url)
            else:
                embed.set_thumbnail(url="https://cdn.discordapp.com/embed/avatars/0.png")
            embed.add_field(name=get_text(ctx.guild, 'info', 'info.server_name'), value=ctx.guild.name, inline=True)
            embed.add_field(name=get_text(ctx.guild, 'info', 'info.server_id'), value=ctx.guild.id, inline=True)
            embed.add_field(name=get_text(ctx.guild, 'info', 'info.server_members'), value=f"{sum(1 for member in ctx.guild.members if not member.bot)} (+{sum(1 for member in ctx.guild.members if member.bot)} {get_text(ctx.guild, 'info', 'info.server_bots')})", inline=True)
            embed.add_field(name=get_text(ctx.guild, 'info', 'info.server_owner'), value=ctx.guild.owner, inline=True)
            embed.add_field(name=get_text(ctx.guild, 'info', 'info.server_region'), value=ctx.guild.region, inline=True)
            embed.add_field(name=get_text(ctx.guild, 'info', 'info.created'), value=default.date(ctx.guild.created_at), inline=True)
            embed.add_field(name=get_text(ctx.guild, 'info', 'info.server_verification'), value=str(ctx.guild.verification_level).capitalize())
           
            info = []
            features = set(ctx.guild.features)
            all_features = {
                'PARTNERED': get_text(ctx.guild, 'info', 'info.features.partnered'),
                'VERIFIED': get_text(ctx.guild, 'info', 'info.features.verified'),
                'INVITE_SPLASH': get_text(ctx.guild, 'info', 'info.features.splash'),
                'VANITY_URL': get_text(ctx.guild, 'info', 'info.features.vanity'),
                'MORE_EMOJI': get_text(ctx.guild, 'info', 'info.features.emoji'),
                'ANIMATED_ICON': get_text(ctx.guild, 'info', 'info.features.animated'),
                'BANNER': get_text(ctx.guild, 'info', 'info.features.banner')
            }

            for feature, label in all_features.items():
                if feature in features:
                    info.append(label)

            if info:
                embed.add_field(name=get_text(ctx.guild, 'info', 'info.features'), value=',\n'.join(info))


            def next_level_calc(ctx):
                if str(ctx.guild.premium_tier) == "0":
                    count = int(2 - ctx.guild.premium_subscription_count)
                    txt = get_text(ctx.guild, 'info', 'info.next_level_in').format(count)
                    #if ctx.author.is_on_mobile():
                    return txt
                    #centered = "⠀"*int(25 - len(txt)/2) + txt 
                    #return centered

                if str(ctx.guild.premium_tier) == "1":
                    count = int(10 - ctx.guild.premium_subscription_count)
                    txt = get_text(ctx.guild, 'info', 'info.next_level_in').format(count)
                    #if ctx.author.is_on_mobile():
                    return txt
                    #centered = "⠀"*int(25 - len(txt)/2) + txt
                    #return centered

                if str(ctx.guild.premium_tier) == "2":
                    count = int(20 - ctx.guild.premium_subscription_count)
                    txt = get_text(ctx.guild, 'info', 'info.next_level_in').format(count)
                    #if ctx.author.is_on_mobile():
                    return txt
                    #centered = "⠀"*int(25 - len(txt)/2) + txt
                    #return centered

                if str(ctx.guild.premium_tier) == "3":
                    txt = get_text(ctx.guild, 'info', 'info.max_level')
                    #if ctx.author.is_on_mobile():
                    return txt
                    #centered = "⠀"*int(25 - len(txt)/2) + txt
                    #return centered

            if not ctx.author.is_on_mobile():
                if ctx.guild.premium_subscription_count is not None:
                    boostmsg = get_text(ctx.guild, 'info', 'info.boost_count').format('⠀'*int(5), ctx.guild.premium_subscription_count)
                    boostmsg += "\n`{0}{1}`\n".format('\U00002588'*(int(round(ctx.guild.premium_subscription_count))), '⠀'*(20-(int(round(ctx.guild.premium_subscription_count)))))
                    boostmsg += "⠀|  ⠀⠀⠀⠀⠀|  ⠀⠀⠀⠀⠀⠀⠀⠀|\n"
                    boostmsg += "Lvl 1⠀⠀⠀Lvl 2⠀⠀⠀⠀⠀⠀⠀Lvl 3\n"
                    boostmsg += "{0}".format(next_level_calc(ctx))

                    last_boost = max(ctx.guild.members, key=lambda m: m.premium_since or ctx.guild.created_at)
                    if last_boost.premium_since is not None:
                        boosts = f"{get_text(ctx.guild, 'info', 'info.last_boost')} {last_boost} ({humanize.naturaltime(last_boost.premium_since)})"
                        #centered = "⠀"*int(27 - len(boosts)/2) + boosts
                        boostmsg += f"\n{boosts}"

                    embed.add_field(name=get_text(ctx.guild, 'info', 'info.boosts'), value=boostmsg)
                else:
                    embed.add_field(name=get_text(ctx.guild, 'info', 'info.boosts'), value=f"{'⠀'*18} {get_text(ctx.guild, 'info', 'info.no_boosts')} \n`{'⠀'*50}`\n⠀|  ⠀⠀⠀⠀⠀|  ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀|\nLvl 1⠀⠀⠀Lvl 2⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀Lvl 3\n{'⠀'*14}Next level in 2 boosts') #.format('⠀'*21, '⠀'*50, '⠀'*14)")
            else:
                if ctx.guild.premium_subscription_count is not None:

                    last_boost = max(ctx.guild.members, key=lambda m: m.premium_since or ctx.guild.created_at)
                    boosts = f"{get_text(ctx.guild, 'info', 'info.last_boost')} {last_boost} ({humanize.naturaltime(last_boost.premium_since)})"

                    embed.add_field(name=get_text(ctx.guild, 'info', 'info.boosts'), value=f"{get_text(ctx.guild, 'info', 'info.boosts')}: {ctx.guild.premium_subscription_count}\n"
                                                         f"{get_text(ctx.guild, 'info', 'info.boost_level')} {ctx.guild.premium_tier}\n"
                                                         f"{next_level_calc(ctx)}"
                                                         f"\n{boosts if last_boost.premium_since is not None else ''}")

            embed.add_field(name=get_text(ctx.guild, 'info', 'info.server_roles').format(int(len(ctx.guild.roles) -1)), value=roles[:-2])
            await ctx.send(content=f"<:info:603362826358095922> {get_text(ctx.guild, 'info', 'info.info_about').format(ctx.guild.name)}", embed=embed)