コード例 #1
0
ファイル: tree.py プロジェクト: cloudagon/Bonsai-Discord-Bot
    async def rename_tree(self, ctx, input_tree_name, *, new_name):
        """Rename tree of input_tree_name."""

        if len(new_name) > 50:
            await ctx.send(embed=error_embed(
                ctx.author, "Tree Name cannot be over 50 characters long."))
            return

        user = find_or_insert_user(ctx.author.id)

        tree_index = find_tree_index(user, input_tree_name)

        if tree_index == None:
            await ctx.send(embed=error_embed(
                ctx.author,
                f"You do not have a tree with the name {input_tree_name}."))
            return

        user["trees"][tree_index]["name"] = new_name
        user_col.update_one({"user_id": ctx.author.id}, {"$set": user})

        tree_to_display = find_tree(user, new_name)

        im_tree = create_tree_image(user, tree_to_display)
        embed = tree_embed(user, ctx.author, tree_to_display)

        await ctx.send(file=im_tree, embed=embed)
コード例 #2
0
ファイル: tree.py プロジェクト: cloudagon/Bonsai-Discord-Bot
    async def change_color(self, ctx, hex_code, *, input_tree_name):
        """Replaces the background color with a new color."""

        user = find_or_insert_user(ctx.author.id)

        tree_index = find_tree_index(user, input_tree_name)

        if tree_index == None:
            await ctx.send(embed=error_embed(
                ctx.author,
                f"You do not have a tree with the name {input_tree_name}."))
            return

        # convert to rgb
        try:
            h = hex_code.lstrip("#")
            user["trees"][tree_index]["background_color"] = tuple(
                int(h[i:i + 2], 16) for i in (0, 2, 4))

        except:
            await ctx.send(
                embed=error_embed(ctx.author, f"{hex_code} is not valid."))
            return

        user_col.update_one({"user_id": ctx.author.id}, {"$set": user})

        tree_to_display = find_tree(user, input_tree_name)

        im_tree = create_tree_image(user, tree_to_display)
        embed = tree_embed(user, ctx.author, tree_to_display)

        await ctx.send(file=im_tree, embed=embed)
コード例 #3
0
ファイル: tree.py プロジェクト: cloudagon/Bonsai-Discord-Bot
    async def reset_tree(self, ctx, *, input_tree_name):
        """Resets the tree of input_tree_name."""

        user = find_or_insert_user(ctx.author.id)

        tree_index = find_tree_index(user, input_tree_name)

        if tree_index == None:
            await ctx.send(embed=error_embed(
                ctx.author,
                f"You do not have a tree with the name {input_tree_name}."))
            return

        # Reset tree and update in db
        tree_for_name = find_tree(user, input_tree_name)

        user["trees"][tree_index] = default_tree.copy()
        user["trees"][tree_index]["name"] = tree_for_name["name"]

        user_col.update_one({"user_id": ctx.author.id}, {"$set": user})

        tree_to_display = find_tree(user, input_tree_name)

        im_tree = create_tree_image(user, tree_to_display)
        embed = tree_embed(user, ctx.author, tree_to_display)

        await ctx.send(file=im_tree, embed=embed)
コード例 #4
0
ファイル: tree.py プロジェクト: cloudagon/Bonsai-Discord-Bot
    async def replace_part(self, ctx, input_inventory_num: int, *,
                           input_tree_name):
        """Replaces a part of the tree of input_tree_name with the new input_inventory_num."""

        user = find_or_insert_user(ctx.author.id)

        inventory_num = input_inventory_num - 1

        if input_inventory_num <= 0:
            await ctx.send(embed=error_embed(
                ctx.author, "Inventory numbers must be over 0."))
            return

        elif len(user["inventory"]) - 1 < inventory_num:
            await ctx.send(embed=error_embed(
                ctx.author,
                f"Your inventory only goes up to {len(user['inventory'])}, but #{input_inventory_num} was entered."
            ))
            return

        tree_index = find_tree_index(user, input_tree_name)

        if tree_index == None:
            await ctx.send(embed=error_embed(
                ctx.author,
                f"You do not have a tree with the name {input_tree_name}."))
            return

        # get new part from user
        part = user["inventory"].pop(inventory_num)

        # set tree part to new part
        part_type = part.pop("type")

        # add old part to inventory
        part_for_inventory = user["trees"][tree_index][part_type]
        part_for_inventory["type"] = part_type
        user["inventory"].append(part_for_inventory)

        # add new part to tree
        user["trees"][tree_index][part_type] = part

        user_col.update_one({"user_id": ctx.author.id}, {"$set": user})

        tree_to_display = find_tree(user, input_tree_name)

        im_tree = create_tree_image(user, tree_to_display)
        embed = tree_embed(user, ctx.author, tree_to_display)

        await ctx.send(file=im_tree, embed=embed)
コード例 #5
0
ファイル: tree.py プロジェクト: cloudagon/Bonsai-Discord-Bot
    async def display_tree(self, ctx, *, input_tree_name):
        """Displays the tree of input_tree_name."""

        user = find_or_insert_user(ctx.author.id)

        tree_to_display = find_tree(user, input_tree_name)

        if tree_to_display == None:
            await ctx.send(embed=error_embed(
                ctx.author,
                f"You do not have a tree with the name {input_tree_name}."))
            return

        im_tree = create_tree_image(user, tree_to_display)
        embed = tree_embed(user, ctx.author, tree_to_display)

        await ctx.send(file=im_tree, embed=embed)
コード例 #6
0
ファイル: tree.py プロジェクト: cloudagon/Bonsai-Discord-Bot
    async def create_tree(self, ctx, *, input_tree_name):
        """Creates a new tree."""

        user = find_or_insert_user(ctx.author.id)

        if len(input_tree_name) > 50:
            await ctx.send(embed=error_embed(
                ctx.author, "Tree Name cannot be over 50 characters long."))
            return

        if len(user["trees"]) >= 3:
            await ctx.send(embed=error_embed(
                ctx.author,
                "You are already at the max number of trees! To reset a tree, use the reset [Tree Name] command. To delete a tree, use the delete [Tree Name] command."
            ))
            return

        if find_tree(user, input_tree_name) != None:
            await ctx.send(embed=error_embed(
                ctx.author,
                f"A tree with the name {input_tree_name} already exists."))
            return

        new_tree = default_tree.copy()
        new_tree["name"] = input_tree_name
        user["trees"].append(new_tree)

        user_col.update_one({"user_id": ctx.author.id}, {"$set": user})

        tree_to_display = find_tree(user, input_tree_name)

        if tree_to_display == None:
            await ctx.send(embed=error_embed(
                ctx.author,
                f"You do not have a tree with the name {input_tree_name}."))
            return

        im_tree = create_tree_image(user, tree_to_display)
        embed = tree_embed(user, ctx.author, tree_to_display)

        await ctx.send(file=im_tree, embed=embed)
コード例 #7
0
ファイル: tree.py プロジェクト: cloudagon/Bonsai-Discord-Bot
    async def view_other_tree(self, ctx, member: discord.User, *,
                              input_tree_name):
        """Displays the tree of input_tree_name of a certain member."""

        user = find_user(member.id)

        if user == None:
            await ctx.send(embed=error_embed(
                ctx.author, f"{member} does not have any trees."))
            return

        tree_to_display = find_tree(user, input_tree_name)

        if tree_to_display == None:
            await ctx.send(embed=error_embed(
                ctx.author,
                f"{member} does not have a tree with the name {input_tree_name}."
            ))
            return

        im_tree = create_tree_image(user, tree_to_display)
        embed = tree_embed(user, member, tree_to_display)

        await ctx.send(file=im_tree, embed=embed)