예제 #1
0
    def clear(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        try:
            ctx.args[0] = int(ctx.args[0]) + 1
        except:
            return handler.error_handler(ctx, "arguments", "clear (ilość wiadomości 1-99) [osoba]")

        if not len(ctx.args) <= 1 and int(ctx.args[0]) > 100:
            return handler.error_handler(ctx, "arguments", "clear (ilość wiadomości 1-99) [osoba]")

        messages = list(map(lambda x: x["id"], discord.get_messages(ctx.data["channel_id"], ctx.args[0])))

        if len(ctx.data["mentions"]) == 1:
            x = []
            ctx.args[0] = int(ctx.args[0]) - 1
            for message in messages:
                message = discord.get_message(ctx.data["channel_id"], message)
                if "author" in message and message["author"]["id"] == ctx.data["mentions"][0]["id"]:
                    x.append(message["id"])

            messages = x
            message = f"Usunięto `{ctx.args[0]}` wiadomości użytkownika `{ctx.data['mentions'][0]['username']}`"
        else:
            message = f"Usunięto `{ctx.args[0]}` wiadomości"

        bulk_delete = discord.bulk_delete_messages(ctx.data["channel_id"], {
            "messages": messages
        })

        if not bulk_delete.status_code == 204:
            return handler.error_handler(ctx, 8)

        ctx.send(message)
예제 #2
0
    def encode(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        ctx.args = " ".join(ctx.args).lower().split(" | ")
        if not len(ctx.args) == 2:
            return handler.error_handler(
                ctx, "arguments",
                "encode (tekst wyświetlany) | (tekst ukryty)")

        text = ctx.args[0][0]

        other = {
            "ą": "a",
            "ś": "s",
            "ó": "o",
            "ł": "l",
            "ę": "e",
            "ń": "n",
            "ź": "z",
            "ż": "z",
            "ć": "c"
        }

        for char in ctx.args[1]:
            if char in other:
                ctx.args[1] = ctx.args[1].replace(char, other[char])

        for char in ctx.args[1]:
            if char in arrays._characters:
                text += arrays._characters[char] + "\u200f"

        text += ctx.args[0][1:]

        ctx.send("`" + text + "`")
예제 #3
0
    def decode(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        ctx.args = " ".join(ctx.args)
        if not ctx.args:
            return handler.error_handler(
                ctx, "arguments",
                "encode (tekst wyświetlany) | (tekst ukryty)")

        text = ""
        letter = ""
        chars = {value: key for key, value in arrays._characters.items()}

        for char in ctx.args:
            if char in chars or char == "\u200f":
                if char == "\u200f":
                    text += chars[letter]
                    letter = ""
                else:
                    letter += char

        if not text:
            return ctx.send("W tej wiadomości nie ma ukrytego tekstu")

        ctx.send("`" + text + "`")
예제 #4
0
    def gay(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        if not ctx.data["mentions"]:
            user = ctx.data["author"]["id"], ctx.data["author"]["avatar"]
        else:
            user = ctx.data["mentions"][0]["id"], ctx.data["mentions"][0][
                "avatar"]

        content = ctx.requests.get(
            f"https://cdn.discordapp.com/avatars/{user[0]}/{user[1]}.png?size=2048"
        ).content
        open("images/image.png", "wb").write(content)

        image = Image.open("images/image.png").convert("RGBA")
        lgbt = Image.open("images/lgbt.png").convert("RGBA")

        image = ImageOps.fit(image, (512, 512))
        lgbt = ImageOps.fit(lgbt, (512, 512))

        mask = Image.new("L", (512, 512), 128)

        avatar = Image.composite(image, lgbt, mask)
        avatar.save("images/gay.png")

        ctx.send(files=[("gay.png", open("images/gay.png", "rb"))])
예제 #5
0
    def _ascii(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        if not ctx.args:
            return handler.error_handler(ctx, "arguments", "ascii (tekst)")

        ctx.send("```" + pyfiglet.Figlet().renderText(" ".join(ctx.args)) +
                 "```")
예제 #6
0
    def panda(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        image_url = ctx.requests.get(
            "https://some-random-api.ml/img/panda").json()["link"]
        image = ctx.requests.get(image_url).content

        ctx.send(files=[("panda.png", image)])
예제 #7
0
    def howgay(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        if not ctx.data["mentions"]:
            user = ctx.data["author"]["username"]
        else:
            user = ctx.data["mentions"][0]["username"]

        ctx.send(f"{user} jest gejem w {random.randint(0, 100)}%!")
예제 #8
0
    def rnumber(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        if not len(ctx.args) == 2:
            return handler.error_handler(ctx, "arguments", "rnumber (od) (do)")

        ctx.args = list(map(lambda x: int(x), ctx.args))

        ctx.send(random.randint(ctx.args[0], ctx.args[1]))
예제 #9
0
    def meme(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        channel = discord.get_channel(ctx.data["channel_id"])
        if not channel["nsfw"]:
            return handler.error_handler(ctx, "nsfw")

        url = ctx.requests.get("https://cenzurabot.pl/api/memes/jbzd").json()
        ctx.send(url["meme"])
예제 #10
0
    def servericon(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        guild = discord.get_guild(ctx.data["guild_id"])
        image = ctx.requests.get(
            f"https://cdn.discordapp.com/icons/{ctx.data['guild_id']}/{guild['icon']}.png?size=2048"
        ).content

        ctx.send(files=[("servericon.png", image)])
예제 #11
0
    def serverinfo(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        guild = ctx.guilds[ctx.data["guild_id"]]

        ctx.send(embed = {
            "title": f"Informacje o {guild['name']}:",
            "color": 0xe74c3c,
            "fields": [
                {
                    "name": "Właściciel:",
                    "value": f"<@{guild['owner_id']}> ({guild['owner_id']})",
                    "inline": False
                },
                {
                    "name": "ID:",
                    "value": ctx.data["guild_id"],
                    "inline": False
                },
                {
                    "name": "Ilość osób:",
                    "value": guild["member_count"],
                    "inline": False
                },
                {
                    "name": "Ilość kanałów:",
                    "value": len(guild["channels"]),
                    "inline": False
                },
                {
                    "name": "Ilość ról:",
                    "value": len(guild["roles"]),
                    "inline": False
                },
                {
                    "name": "Ilość emotek:",
                    "value": len(guild["emojis"]),
                    "inline": False
                },
                {
                    "name": "Został stworzony:",
                    "value": str(datetime.fromtimestamp(((int(ctx.data["guild_id"]) >> 22) + 1420070400000) / 1000)).split(".")[0],
                    "inline": False
                },
                {
                    "name": "Boosty:",
                    "value": f"{guild['premium_subscription_count']} boosty / {guild['premium_tier']} poziom",
                    "inline": False
                }
            ],
            "thumbnail": {
                "url": f"https://cdn.discordapp.com/icons/{ctx.data['guild_id']}/{guild['icon']}.png?size=2048"
            }
        })
예제 #12
0
    def google(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        ctx.args = " ".join(ctx.args)
        if not ctx.args:
            return handler.error_handler(ctx, "arguments",
                                         "google (zapytanie)")

        ctx.send(
            f"https://google.com/search?q={urllib.parse.quote_plus(ctx.args)}")
예제 #13
0
    def rchoice(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        ctx.args = " ".join(ctx.args)
        ctx.args = ctx.args.split(" | ")

        if not len(ctx.args) >= 2:
            return handler.error_handler(ctx, "arguments",
                                         "rchoice (a) | (b) | [c] itd.")

        ctx.send(random.choice(ctx.args))
예제 #14
0
    def hug(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        if not len(ctx.data["mentions"]) == 1:
            return handler.error_handler(ctx, "arguments", "hug (osoba)")

        image_url = ctx.requests.get(
            "https://nekos.life/api/hug").json()["url"]
        image = ctx.requests.get(image_url).content

        ctx.send(
            f"**{ctx.data['author']['username']}** przytulił **{ctx.data['mentions'][0]['username']}**!",
            files=[("hug.gif", image)])
예제 #15
0
    def avatar(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        if not ctx.data["mentions"]:
            user = ctx.data["author"]["id"], ctx.data["author"]["avatar"]
        else:
            user = ctx.data["mentions"][0]["id"], ctx.data["mentions"][0][
                "avatar"]

        image = ctx.requests.get(
            f"https://cdn.discordapp.com/avatars/{user[0]}/{user[1]}.png?size=2048"
        ).content

        ctx.send(files=[("avatar.png", image)])
예제 #16
0
    def removewarnsevent(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        if not len(ctx.args) == 1 or ctx.args[0] not in ["kick", "ban", "mute"]:
            return handler.error_handler(ctx, "arguments", "warnsevent (kick/ban/mute)")

        guild = ctx.data["guild_id"]
        guilds = functions.read_json("guilds")

        del guilds[guild]["warnsevent"][ctx.args[0]]

        ctx.send("Usunięto event")

        functions.write_json("guilds", guilds)
예제 #17
0
    def clearwarns(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        if not len(ctx.args) == 1:
            return handler.error_handler(ctx, "arguments", "clearwarns (osoba)")

        guild = ctx.data["guild_id"]
        guilds = functions.read_json("guilds")

        if not "warns" in guilds[guild] or not ctx.data["mentions"][0]["id"] in guilds[guild]["warns"]:
            return handler.error_handler(ctx, "notfound")

        del guilds[guild]["warns"][ctx.data["mentions"][0]["id"]]

        ctx.send("Wyczyszczono ostrzeżenia")

        functions.write_json("guilds", guilds)
예제 #18
0
    def removewarn(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        if not len(ctx.args) == 2:
            return handler.error_handler(ctx, "arguments", "removewarn (osoba) (id)")

        guild = ctx.data["guild_id"]
        guilds = functions.read_json("guilds")

        if not "warns" in guilds[guild] or not ctx.data["mentions"][0]["id"] in guilds[guild]["warns"]:
            return handler.error_handler(ctx, "notfound")

        del guilds[guild]["warns"][ctx.data["mentions"][0]["id"]][int(ctx.args[1])]

        ctx.send("Usunięto ostrzeżenie")

        functions.write_json("guilds", guilds)
예제 #19
0
    def warns(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        if not len(ctx.data["mentions"]) == 1:
            return handler.error_handler(ctx, "arguments", "warns (osoba)")

        guild = ctx.data["guild_id"]
        guilds = functions.read_json("guilds")

        if not "warns" in guilds[guild] or not ctx.data["mentions"][0]["id"] in guilds[guild]["warns"]:
            return handler.error_handler(ctx, "notfound")

        ctx.send(embed = {
            "title": f"Warny użytkownika {ctx.data['mentions'][0]['username']}:",
            "description": "\n".join([f"{guilds[guild]['warns'][ctx.data['mentions'][0]['id']].index(i)}. {i}" for i in guilds[guild]["warns"][ctx.data["mentions"][0]["id"]]]),
            "color": 0xe74c3c
        })
예제 #20
0
    def warnsevent(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        if not len(ctx.args) == 2 or ctx.args[0] not in ["kick", "ban", "mute"]:
            return handler.error_handler(ctx, "arguments", "warnsevent (kick/ban/mute) (ilość warnów)")

        guild = ctx.data["guild_id"]
        guilds = functions.read_json("guilds")

        if not "warnsevent" in guilds[guild]:
            guilds[guild]["warnsevent"] = {}

        guilds[guild]["warnsevent"][ctx.args[0]] = str(ctx.args[1])

        ctx.send("Dodano event")

        functions.write_json("guilds", guilds)
예제 #21
0
    def kick(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        if not len(ctx.data["mentions"]) == 1:
            return handler.error_handler(ctx, "arguments", "kick (osoba) [powód]")

        if len(ctx.args) >= 2:
            ctx.args = " ".join(ctx.args[1:])
            reason = ctx.args
        else:
            reason = "nie podano powodu"

        status = discord.remove_guild_member(ctx.data["guild_id"], ctx.data["mentions"][0]["id"])
        
        if not status.status_code == 204:
            return handler.error_handler(ctx, 6)

        ctx.send(f"Wyrzucono użytkownika `{ctx.data['mentions'][0]['username']}` z powodu `{reason}`")
예제 #22
0
    def unmute(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)
        
        if not len(ctx.args) == 1:
            return handler.error_handler(ctx, "arguments", "unmute (osoba)")

        guild = ctx.data["guild_id"]
        guilds = functions.read_json("guilds")

        if not "mute_role" in guilds[guild]:
            return handler.error_handler(ctx, "notfound")

        status = discord.remove_guild_member_role(guild, ctx.data["mentions"][0]["id"], guilds[guild]["mute_role"])

        if not status.status_code == 204:
            return handler.error_handler(ctx, 6)

        ctx.send("Odmutowano użytkownika")
예제 #23
0
    def ship(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        if len(ctx.data["mentions"]) == 1:
            me = ctx.data["author"]["id"], ctx.data["author"][
                "avatar"], ctx.data["author"]["username"]
            me_avatar = f"https://cdn.discordapp.com/avatars/{me[0]}/{me[1]}.png?size=2048"
            m = ctx.data["mentions"][0]["id"], ctx.data["mentions"][0][
                "avatar"], ctx.data["mentions"][0]["username"]
            m_avatar = f"https://cdn.discordapp.com/avatars/{m[0]}/{m[1]}.png?size=2048"
        elif len(ctx.data["mentions"]) == 2:
            me = ctx.data["mentions"][1]["id"], ctx.data["mentions"][1][
                "avatar"], ctx.data["mentions"][1]["username"]
            me_avatar = f"https://cdn.discordapp.com/avatars/{me[0]}/{me[1]}.png?size=2048"
            m = ctx.data["mentions"][0]["id"], ctx.data["mentions"][0][
                "avatar"], ctx.data["mentions"][0]["username"]
            m_avatar = f"https://cdn.discordapp.com/avatars/{m[0]}/{m[1]}.png?size=2048"
        else:
            return handler.error_handler(ctx, "arguments",
                                         "ship (osoba) [osoba]")

        open("images/member1.png",
             "wb").write(ctx.requests.get(m_avatar).content)
        open("images/member2.png",
             "wb").write(ctx.requests.get(me_avatar).content)

        para = Image.open("images/para.png").convert("RGBA")
        member1 = Image.open("images/member1.png").convert("RGBA")
        member2 = Image.open("images/member2.png").convert("RGBA")

        member1 = ImageOps.fit(member1, (300, 300))
        member2 = ImageOps.fit(member2, (300, 300))

        para.paste(member1, (360, 250), member1)
        para.paste(member2, (890, 180), member2)

        para.save("images/ship.png")

        ctx.send(
            f"**{m[2]}** + **{me[2]}** = **{m[2][:round(len(m[2]) / 2)].lower()}{me[2][round(len(me[2]) / 2):].lower()}**\nIch miłość jest równa **{random.randint(0, 100)}%**!",
            files=[("ship.png", open("images/ship.png", "rb"))])
예제 #24
0
    def mute(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)
        
        if not len(ctx.args) == 1:
            return handler.error_handler(ctx, "arguments", "mute (osoba)")

        guild = ctx.data["guild_id"]
        guilds = functions.read_json("guilds")

        if not "mute_role" in guilds[guild]:
            role = discord.create_guild_role(guild, {"name": "muted"}).json()

            guilds[guild]["mute_role"] = role["id"]
            channels = discord.get_guild_channels(guild)

            for channel in channels:
                if channel["type"] == 0:
                    a = discord.edit_channel_permissions(channel["id"], role["id"], {
                        "deny": permissions.permissions["SEND_MESSAGES"],
                        "allow": permissions.permissions["ADD_REACTIONS"],
                        "type": 0
                    })

                elif channel["type"] == 2:
                    discord.edit_channel_permissions(channel["id"], role["id"], {
                        "deny": permissions.permissions["SPEAK"],
                        "allow": permissions.permissions["VIEW_CHANNEL"],
                        "type": 0
                    })

            functions.write_json("guilds", guilds)

        status = discord.add_guild_member_role(guild, ctx.data["mentions"][0]["id"], guilds[guild]["mute_role"])

        if not status.status_code == 204:
            return handler.error_handler(ctx, 6)

        ctx.send("Zmutowano użytkownika")
예제 #25
0
    def garfield(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        ctx.args = (" ".join(ctx.args)).lower()
        if not ctx.args:
            return handler.error_handler(ctx, "arguments", "garfield (tekst)")
        elif len(ctx.args) > 100:
            return handler.error_handler(ctx, "toolongtext", 100)

        other = {
            "ą": "a",
            "ś": "s",
            "ó": "o",
            "ł": "l",
            "ę": "e",
            "ń": "n",
            "ź": "z",
            "ż": "z",
            "ć": "c"
        }

        text = ""

        for letter in ctx.args:
            if ("garfield_" + letter in arrays.emotes) or (letter in other):
                if letter in other:
                    letter = other[letter]
                letter = "garfield_" + letter
                text += f"<:{letter}:{arrays.emotes[letter]}>"
            elif letter in ["`", "\\"]:
                text += ""
            elif letter == " ":
                text += f"<:space:{arrays.emotes[' ']}>"
            else:
                text += letter

        ctx.send(text)
예제 #26
0
파일: inne.py 프로젝트: CZUBIX/cenzura
    def snipe(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        if not hasattr(ctx, "snipe"):
            return ctx.send("Nie udało sie złapać żadnej usuniętej wiadomości")

        snipe = ctx.snipe[ctx.data["guild_id"]] if len(
            ctx.snipe[ctx.data["guild_id"]]) < 10 else [
                ctx.snipe[ctx.data["guild_id"]][::-1][_] for _ in range(10)
            ][::-1]

        ctx.send(
            embed={
                "title":
                "Lista ostatnich usuniętych wiadomości:",
                "description":
                "\n".join([
                    f"<#{message['channel_id']}> <@{message['author']['id']}>: {message['content']}"
                    for message in snipe
                ]),
                "color":
                0xe74c3c
            })
예제 #27
0
    def achievement(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        ctx.args = " ".join(ctx.args)
        if not ctx.args:
            return handler.error_handler(ctx, "arguments",
                                         "achievement (tekst)")
        elif len(ctx.args) > 23:
            return handler.error_handler(ctx, "toolongtext", 23)

        ctx.args = ctx.args.replace(" ", "+").replace("ś", "s").replace(
            "ę",
            "e").replace("ż", "z").replace("ź", "z").replace("ł", "l").replace(
                "ó", "o").replace("ą", "a").replace("ć", "c").replace(
                    "Ś", "S").replace("Ę", "E").replace("Ż", "Z").replace(
                        "Ź", "Z").replace("Ł", "L").replace("Ó", "O").replace(
                            "Ą", "A").replace("Ć", "C")

        image = ctx.requests.get(
            f"https://minecraftskinstealer.com/achievement/{random.randint(1, 40)}/Achievement+Get%21/{ctx.args}"
        ).content

        ctx.send(files=[("achievement.png", image)])
예제 #28
0
    def cantseeme(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        formats = ("image/png", "image/jpeg", "image/gif", "image/webp")

        if (len(ctx.data["mentions"]) and len(ctx.args)) == 1:
            message_type = "image"
            content = ctx.requests.get(
                f"https://cdn.discordapp.com/avatars/{ctx.data['mentions'][0]['id']}/{ctx.data['mentions'][0]['avatar']}.png?size=2048"
            ).content
            open("images/image.png", "wb").write(content)

        elif len(ctx.data["attachments"]) == 1:
            req = ctx.requests.get(ctx.data["attachments"][0]["url"])
            message_type = "text"
            if req.headers["content-type"] in formats:
                message_type = "image"
                open("images/image.png", "wb").write(req.content)

        elif len(ctx.args) == 1 and ctx.args[0].startswith(
            ("https://", "http://")):
            req = ctx.requests.get(ctx.args[0])
            message_type = "text"
            if req.headers["content-type"] in formats:
                message_type = "image"
                open("images/image.png", "wb").write(req.content)

        elif len(ctx.args) >= 1:
            message_type = "text"

        elif not ctx.args:
            message_type = "image"
            content = ctx.requests.get(
                f"https://cdn.discordapp.com/avatars/{ctx.data['author']['id']}/{ctx.data['author']['avatar']}.png?size=2048"
            ).content
            open("images/image.png", "wb").write(content)

        krzak = Image.open("images/krzak.png")
        image = Image.open("images/image.png")

        if message_type == "text":
            ctx.args = " ".join(ctx.args)
            center = [
                round(krzak.size[0] / 2) - 50,
                round(krzak.size[1] / 2) - 60
            ]
            if len(ctx.args) > 15:
                new_args = ""
                x = 0
                for char in ctx.args:
                    if x == 16:
                        new_args += "\n"
                        x = 0

                    new_args += char
                    x += 1

                ctx.args = new_args

            draw = ImageDraw.Draw(krzak)
            font = ImageFont.truetype("fonts/arial.ttf", 30)

            center = (round(center[0]), round(center[1]))

            draw.text(center, ctx.args, font=font)

        elif message_type == "image":
            width, height = image.size
            if width > 150:
                width = 150
            if height > 100:
                height = 100

            image.thumbnail((width, height))

            center = (round(krzak.size[0] / 2) - round(image.size[0] / 2),
                      round(krzak.size[1] / 2) - round(image.size[1] / 2) - 30)
            krzak.paste(image, center)

        krzak.save("images/cantseeme.png")

        ctx.send(files=[("cantseeme.png", open("images/cantseeme.png", "rb"))])
예제 #29
0
파일: inne.py 프로젝트: CZUBIX/cenzura
    def cmd(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)\

        guild = ctx.data["guild_id"]
        guilds = functions.read_json("guilds")

        if not "cmd" in guilds[guild]:
            guilds[guild]["cmd"] = {}

        if not ctx.args:
            return ctx.send(
                embed={
                    "title": "Komendy cmd:",
                    "description":
                    "> `cmd add (komenda) (tekst)`, `cmd remove (komenda)`, `cmd info (komenda)`, `cmd list`",
                    "color": 0xe74c3c,
                    "footer": {
                        "text": "<> = nazwa użytkownika, [] = wzmianka"
                    }
                })

        if ctx.args[0] == "add":
            if not len(ctx.args) >= 3:
                return handler.error_handler(
                    ctx, "arguments", "cmd add (nazwa komendy) (tekst)")

            guilds[guild]["cmd"][ctx.args[1]] = {}
            guilds[guild]["cmd"][ctx.args[1]]["author"] = ctx.data["author"]
            guilds[guild]["cmd"][ctx.args[1]]["text"] = ctx.args[2]

            ctx.send("Dodano komende")

        elif ctx.args[0] == "remove":
            if not len(ctx.args) == 2:
                return handler.error_handler(ctx, "arguments",
                                             "cmd remove (nazwa komendy)")

            del guilds[guild]["cmd"][ctx.args[1]]
            ctx.send("Usunięto komende")

        elif ctx.args[0] == "info":
            if not len(ctx.args) == 2:
                return handler.error_handler(ctx, "arguments",
                                             "cmd info (nazwa komendy)")

            ctx.send(
                embed={
                    "title":
                    f"Informacje o {ctx.args[1]}:",
                    "color":
                    0xe74c3c,
                    "fields":
                    [{
                        "name": "Autor:",
                        "value":
                        f"{guilds[guild]['cmd'][ctx.args[1]]['author']['username']}#{guilds[guild]['cmd'][ctx.args[1]]['author']['discriminator']} ({guilds[guild]['cmd'][ctx.args[1]]['author']['id']})",
                        "inline": False
                    }, {
                        "name": "Tekst w komendzie:",
                        "value": guilds[guild]["cmd"][ctx.args[1]]["text"],
                        "inline": False
                    }]
                })

        elif ctx.args[0] == "list":
            ctx.send(
                embed={
                    "title": f"Lista komend ({len(guilds[guild]['cmd'])}):",
                    "description": "\n".join([x
                                              for x in guilds[guild]["cmd"]]),
                    "color": 0xe74c3c
                })

        else:
            return ctx.send(
                embed={
                    "title": "Komendy cmd:",
                    "description":
                    "> `cmd add (komenda) (tekst)`, `cmd remove (komenda)`, `cmd info (komenda)`, `cmd list`",
                    "color": 0xe74c3c,
                    "footer": {
                        "text": "<> = nazwa użytkownika, [] = wzmianka"
                    }
                })

        functions.write_json("guilds", guilds)
예제 #30
0
    def calc(ctx):
        if not functions.has_permission(ctx):
            return handler.error_handler(ctx, "nopermission", ctx.command)

        msg = ctx.send("```0```",
                       other_data={
                           "components": [{
                               "type":
                               1,
                               "components": [{
                                   "type": 2,
                                   "label": "x\u02b8",
                                   "style": 2,
                                   "custom_id": "power"
                               }, {
                                   "type": 2,
                                   "label": "%",
                                   "style": 2,
                                   "custom_id": "percent"
                               }, {
                                   "type": 2,
                                   "label": "<-",
                                   "style": 2,
                                   "custom_id": "backspace"
                               }, {
                                   "type": 2,
                                   "label": "C",
                                   "style": 4,
                                   "custom_id": "clear"
                               }]
                           }, {
                               "type":
                               1,
                               "components": [{
                                   "type": 2,
                                   "label": "7",
                                   "style": 2,
                                   "custom_id": "7"
                               }, {
                                   "type": 2,
                                   "label": "8",
                                   "style": 2,
                                   "custom_id": "8"
                               }, {
                                   "type": 2,
                                   "label": "9",
                                   "style": 2,
                                   "custom_id": "9"
                               }, {
                                   "type": 2,
                                   "label": "/",
                                   "style": 2,
                                   "custom_id": "divide"
                               }, {
                                   "type": 2,
                                   "label": "(",
                                   "style": 2,
                                   "custom_id": "leftbracket"
                               }]
                           }, {
                               "type":
                               1,
                               "components": [{
                                   "type": 2,
                                   "label": "4",
                                   "style": 2,
                                   "custom_id": "4"
                               }, {
                                   "type": 2,
                                   "label": "5",
                                   "style": 2,
                                   "custom_id": "5"
                               }, {
                                   "type": 2,
                                   "label": "6",
                                   "style": 2,
                                   "custom_id": "6"
                               }, {
                                   "type": 2,
                                   "label": "*",
                                   "style": 2,
                                   "custom_id": "multiply"
                               }, {
                                   "type": 2,
                                   "label": ")",
                                   "style": 2,
                                   "custom_id": "rightbracket"
                               }]
                           }, {
                               "type":
                               1,
                               "components": [{
                                   "type": 2,
                                   "label": "1",
                                   "style": 2,
                                   "custom_id": "1"
                               }, {
                                   "type": 2,
                                   "label": "2",
                                   "style": 2,
                                   "custom_id": "2"
                               }, {
                                   "type": 2,
                                   "label": "3",
                                   "style": 2,
                                   "custom_id": "3"
                               }, {
                                   "type": 2,
                                   "label": "-",
                                   "style": 2,
                                   "custom_id": "minus"
                               }]
                           }, {
                               "type":
                               1,
                               "components": [{
                                   "type": 2,
                                   "label": "0",
                                   "style": 2,
                                   "custom_id": "0"
                               }, {
                                   "type": 2,
                                   "label": ".",
                                   "style": 2,
                                   "custom_id": "dot"
                               }, {
                                   "type": 2,
                                   "label": "=",
                                   "style": 1,
                                   "custom_id": "equal"
                               }, {
                                   "type": 2,
                                   "label": "+",
                                   "style": 2,
                                   "custom_id": "add"
                               }]
                           }]
                       })

        msg = msg.json()
        interactions.append(("calc", ctx.data["author"]["id"],
                             ctx.data["channel_id"], msg["id"]))