示例#1
0
async def levelUp(channel, memberId, level):
    mem = channel.guild.get_member(memberId)
    path = "Temp/{}.png".format(memberId)
    PictureCreator.CreateLevelUpMessage(mem, str(level)).save(path,
                                                              format="png")
    file = File(path, filename="LevelUp.png")
    await channel.send(file=file)
    os.remove(path)
示例#2
0
    async def on_member_remove(self, member):
        server = session.query(Server).filter(
            Server.Id == member.guild.id).first()
        try:
            await member.guild.fetch_ban(member)
        except discord.NotFound:
            path = "Temp/{0}.png".format(member.id)
            PictureCreator.CreateLostMessage(PictureCreator.GetAvatar(member),
                                             member.name,
                                             member.top_role,
                                             server.MemberName) \
                .save(path, format="png")
            SQLWorker.SetDead(serverId=server.Id, memberId=member.id)
            file = discord.File(path, filename="MemRemove.png")
            await member.guild.get_channel(server.InfoChannel).send(file=file)
            os.remove(path)

        if not member.bot:
            XpSys.DelMem(member.id, member.guild.id)
示例#3
0
 async def getRank(self, ctx, message: discord.Message):
     author = message.author
     path = "Temp/{}.png".format(author.id)
     info = session.query(Member) \
         .filter(Member.MemberId == author.id) \
         .filter(Member.ServerId == author.guild.id).first()
     PictureCreator.CreateRank(author, info).save(path)
     file = discord.File(path, filename="profile.png")
     await ctx.send(file=file)
     os.remove(path)
示例#4
0
    async def on_member_ban(self, guild, mem):
        server = session.query(Server).filter(
            Server.Id == mem.guild.id).first()
        path = "Temp/{0}.png".format(mem.id)
        PictureCreator.CreateLostMessage(PictureCreator.GetAvatar(mem),
                                         mem.name,
                                         None,
                                         server.MemberName) \
            .save(path, format="png")
        SQLWorker.SetDead(guild.id, mem.id)
        file = discord.File(path, filename="MemRemove.png")

        reason = await guild.fetch_ban(mem)
        embed = discord.Embed(title=mem.name + " " + server.BanText)
        embed.add_field(name="Причина:",
                        value=(reason[0] if reason[0] else "Отсутсвует"),
                        inline=False)
        await guild.get_channel(server.InfoChannel).send(embed=embed,
                                                         file=file)
        os.remove(path)
示例#5
0
    async def on_member_join(self, member):
        server = session.query(Server).filter(
            Server.Id == member.guild.id).first()
        path = "Temp/{0}.png".format(member.id)
        memberSql = session.query(Member).filter(
            Member.MemberId == member.id).first()
        if memberSql:
            SQLWorker.SetAlive(serverId=server.Id, memberId=member.id)
            PictureCreator.CreatWelcomeMessage(PictureCreator.GetAvatar(member),
                                               member.name,
                                               server.MemberName) \
                .save(path, format="png")
        else:
            SQLWorker.AddNewMem(serverId=server.Id, memberId=member.id)
            PictureCreator.CreateFirstWelcomeMessage(PictureCreator.GetAvatar(member),
                                                     member.name,
                                                     server.MemberName) \
                .save(path, format="png")

        file = discord.File(path, filename="MemJoin.png")
        await member.guild.get_channel(server.InfoChannel).send(file=file)
        os.remove(path)

        if not memberSql:
            if server.JoinRole:
                await member.add_roles(member.guild.get_role(server.JoinRole))
        else:
            for roleList in session.query(RoleList).filter(
                    RoleList.MemberId == memberSql.MemberId):
                try:
                    await member.add_roles(
                        member.guild.get_role(roleList.RoleId))
                except AttributeError:
                    session.delete(roleList)
                    session.commit()
                except discord.errors.Forbidden:
                    pass

        if not member.bot:
            XpSys.AddMem(member.id, server.Id)
示例#6
0
    async def avatar(self, ctx, member: Option(discord.Member,
                                               "Пользователь",
                                               required=False,
                                               default=None)):
        if member:
            author = member
        else:
            author = ctx.author

        path = PictureCreator.utils.GetAvatarFromUrl(
            PictureCreator.GetAvatar(author, size=4096))
        file = discord.File(path, filename="avatar.gif")
        await ctx.send("Avatar " + author.name, file=file)
示例#7
0
    async def setbg(self, ctx, img: Option(discord.Attachment,
                                           "Изображение для заднего фона",
                                           required=False,
                                           default=None),
                    url: Option(str,
                                "Ссылка на задний фон",
                                required=False,
                                default=None)):
        if url:
            try:
                PictureCreator.SetBG(ctx.guild.id, ctx.author.id, url)
            except:
                await ctx.send('Некорректная ссылка на изображение.')
                return
        elif img:
            if 'image' not in img.content_type:
                await ctx.send('Некорректное изображение.')
                return
            PictureCreator.SetBG(ctx.guild.id, ctx.author.id, img.url)
        else:
            try:
                os.remove("src/Images/Usr/{}/{}/profile.png".format(
                    ctx.guild.id, ctx.author.id))
            except:
                pass

        path = "Temp/{}.png".format(ctx.author.id)

        info = session.query(Member) \
            .filter(Member.MemberId == ctx.author.id) \
            .filter(Member.ServerId == ctx.author.guild.id).first()
        PictureCreator.CreateProfile(ctx.author, info).save(path)

        file = discord.File(path, filename="profile.png")
        await ctx.send(file=file)
        os.remove(path)
示例#8
0
    async def rank(self, ctx, member: Option(discord.Member,
                                             "Пользователь",
                                             required=False,
                                             default=None)):
        if member:
            author = member
        else:
            author = ctx.author

        path = "Temp/{}.png".format(author.id)
        info = session.query(Member) \
            .filter(Member.MemberId == author.id) \
            .filter(Member.ServerId == author.guild.id).first()
        PictureCreator.CreateRank(author, info).save(path)
        file = discord.File(path, filename="profile.png")
        await ctx.send(file=file)
        os.remove(path)
示例#9
0
    async def settext(self, ctx, text: Option(str,
                                              description="Подпись профиля.",
                                              required=False,
                                              default="")):
        member = session.query(Member) \
            .filter(Member.MemberId == ctx.author.id) \
            .filter(Member.ServerId == ctx.guild.id).first()
        member.Info = text

        path = "Temp/{}.png".format(ctx.author.id)
        info = session.query(Member) \
            .filter(Member.MemberId == ctx.author.id) \
            .filter(Member.ServerId == ctx.author.guild.id).first()
        PictureCreator.CreateProfile(ctx.author, info).save(path)
        file = discord.File(path, filename="profile.png")
        await ctx.send(file=file)
        os.remove(path)
示例#10
0
    async def top(self, ctx,
                  cat: Option(str,
                              "Категория рейтинга",
                              default='Опыт',
                              choices=["Опыт", "Упоминания", "Эмоджи"],
                              required=False),
                  page: Option(int,
                               'Страница рейтинга',
                               min_value=1,
                               default=1,
                               required=True)):

        members = []
        page = int(page)
        if cat.isnumeric():
            page = int(cat)
            cat = "Опыт"

        page -= 1
        if cat == 'Опыт':
            for member in session.query(Member) \
                    .filter(Member.IsAlive) \
                    .filter(Member.ServerId == ctx.guild.id) \
                    .order_by(desc(Member.TotalXp)).limit(5).offset(5 * page):
                mem = ctx.guild.get_member(member.MemberId)
                members.append({
                    "mem":
                    mem,
                    "data":
                    ConvrterToCI(round(member.TotalXp, 2)) + "xp",
                    "url":
                    PictureCreator.GetAvatar(mem, size=64)
                })
        elif cat == "Упоминания":
            for member in session.query(Member) \
                    .filter(Member.IsAlive) \
                    .filter(Member.ServerId == ctx.guild.id) \
                    .order_by(desc(Member.Mentions)).limit(5).offset(5 * page):
                mem = ctx.guild.get_member(member.MemberId)
                members.append({
                    "mem": mem,
                    "url": PictureCreator.GetAvatar(mem, size=64),
                    "data": str(member.Mentions) + " mentions"
                })
        elif cat == "Эмоджи":
            for emojie in session.query(Emojie) \
                    .filter(Emojie.ServerId == ctx.guild.id) \
                    .order_by(desc(Emojie.CountUsage)).limit(5).offset(5 * page):
                emoji = await ctx.guild.fetch_emoji(emojie.Id)
                members.append({
                    "mem": emoji,
                    "url": emoji.url,
                    "data": str(emojie.CountUsage) + " detected"
                })
        else:
            await ctx.send("Параметр не найден!")
            return

        path = "Temp/top{}.png".format(page)
        PictureCreator.GetTop(members, page).save(path)

        file = discord.File(path, filename="top.png")
        await ctx.send(file=file)

        os.remove(path)
示例#11
0
 async def getAvatar(self, ctx, message: discord.Message):
     path = PictureCreator.utils.GetAvatarFromUrl(
         PictureCreator.GetAvatar(message.author, size=4096))
     file = discord.File(path, filename="avatar.gif")
     await ctx.send("Avatar " + message.author.name, file=file)