From a714f4d53c38e28d547f8c408e9941b7270ac536 Mon Sep 17 00:00:00 2001 From: Paillat Date: Sun, 4 May 2025 00:27:03 +0200 Subject: [PATCH] Update quality.yaml to include uv installation step and modify README.md for library name and description --- .github/workflows/quality.yaml | 5 + README.md | 294 +++------------------------------ 2 files changed, 32 insertions(+), 267 deletions(-) diff --git a/.github/workflows/quality.yaml b/.github/workflows/quality.yaml index f52df19..3f18cdb 100644 --- a/.github/workflows/quality.yaml +++ b/.github/workflows/quality.yaml @@ -42,6 +42,11 @@ jobs: with: python-version: ${{ matrix.python-version }} + - name: "Install uv" + uses: astral-sh/setup-uv@v6 + with: + enable-cache: true + - name: Install dependencies run: uv sync --no-managed-python --no-python-downloads diff --git a/README.md b/README.md index be54d2b..1d34c3c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@
-

Discord Progress Bar

+

dismoji

@@ -12,8 +12,7 @@ -A Python library for creating customizable progress bars with Discord emojis in your -Discord bot messages. +A Python library for converting Discord emoji names to their Unicode equivalents.
@@ -22,295 +21,60 @@ Discord bot messages. - [Overview](#overview) - [Installation](#installation) - [Quick Start](#quick-start) -- [Core Concepts](#core-concepts) - - [How It Works](#how-it-works) - - [Key Components](#key-components) - [Features](#features) - - [Type Safety](#type-safety) -- [Usage Examples](#usage-examples) - - [Basic Progress Bar](#basic-progress-bar) - - [Different Progress Bar States](#different-progress-bar-states) - - [Custom Progress Bar Length](#custom-progress-bar-length) -- [Configuration](#configuration) - - [Bot Configuration](#bot-configuration) - - [Progress Bar Manager Initialization](#progress-bar-manager-initialization) - - [Custom Progress Bar Styles](#custom-progress-bar-styles) - [Limitations](#limitations) - [Getting Help](#getting-help) - [Development](#development) - - [Local Testing](#local-testing) - - [Contributing](#contributing) +- [Contributing](#contributing) - [License](#license) ## Overview -Discord Progress Bar is a Python library that allows you to create visually appealing -progress bars in your Discord bot messages using custom emojis. It provides a simple API -to generate progress bars of different styles and lengths, making it easy to display -progress, loading states, or completion percentages in your Discord applications. +dismoji is a lightweight Python library that provides a simple way to convert Discord +emoji names to their Unicode equivalents. With just a single function call, you can +transform text containing Discord-style emoji codes (like `:smile:`) into text with +actual Unicode emoji characters (like "😄"). -Built on: - -- [py-cord](https://github.com/Pycord-Development/pycord) - A modern, easy-to-use, - feature-rich, and async-ready API wrapper for Discord -- Custom Discord emojis - Used to create visually consistent progress bar segments +This library uses +[Paillat-dev/discord-emojis](https://github.com/Paillat-dev/discord-emojis) as the +source for Discord emoji names and aliases. ## Installation ```bash -pip install discord-progress-bar --pre +pip install dismoji ``` - -> [!NOTE] -> The package is currently in pre-release. - ## Quick Start - -> [!TIP] -> Create beautiful progress bars in your Discord bot with just a few lines of code! ```python -import discord -from discord_progress_bar import ProgressBarManager +import dismoji -# Create a Discord bot with emoji caching enabled -bot = discord.Bot(cache_app_emojis=True) - -progress_bar_manager = None -progress_bar = None - -@bot.event -async def on_ready(): - """Initialize the ProgressBarManager when the bot is ready.""" - global progress_bar_manager, progress_bar - - # Initialize the progress bar manager - progress_bar_manager = await ProgressBarManager(bot) - # Get a progress bar with the "green" style - progress_bar = await progress_bar_manager.progress_bar("green") - -@bot.slash_command() -async def show_progress(ctx, percent: float = 0.5): - """Display a progress bar with the specified percentage.""" - - await ctx.respond(f"Progress: {progress_bar.partial(percent)}") - -# Run your bot -bot.run("YOUR_TOKEN") +# Convert Discord emoji names to Unicode emojis +text = "Hello, :wave: I'm excited! :partying_face:" +converted_text = dismoji.emojize(text) +print(converted_text) # Output: "Hello, 👋 I'm excited! 🥳" ``` - -> [!NOTE] -> For a complete example, check the [examples directory](/examples). - -## Core Concepts - -### How It Works - -Discord Progress Bar works by using custom Discord emojis to create visually appealing -progress bars in your bot messages. Here's how it works: - -1. **Progress Bar Structure**: Each progress bar consists of multiple emoji segments: - -- Left edge (filled or empty) -- Middle sections (filled or empty) -- Right edge (filled or empty) - -2. **Emoji Management**: The `ProgressBarManager` class handles: - -- Loading existing emojis from your bot -- Creating new emojis from URLs or files if needed -- Providing the appropriate emojis to the `ProgressBar` class - -3. **Progress Bar Rendering**: The `ProgressBar` class handles: - -- Rendering full progress bars (100%) -- Rendering empty progress bars (0%) -- Rendering partial progress bars (any percentage) - -4. **Default Styles**: The library comes with a default "green" style, but you can - create custom styles by providing your own emoji images. - -### Key Components - -- **ProgressBarManager**: Initializes with your Discord bot and manages emoji resources -- **ProgressBar**: Renders progress bars with different percentages -- **ProgressBarPart**: Enum defining the different parts of a progress bar (LEFT_EMPTY, - LEFT_FILLED, etc.) -- **Default Bars**: Pre-configured progress bar styles that can be used out of the box - ## Features -- **Easy Integration**: Seamlessly integrates with Discord bots built using py-cord -- **Customizable Progress Bars**: Create progress bars with different styles and lengths -- **Default Styles**: Comes with a pre-configured "green" style ready to use -- **Custom Styles**: Create your own progress bar styles using custom emoji images -- **Flexible Rendering**: Render progress bars at any percentage (0-100%) -- **Async Support**: Fully supports asynchronous operations for Discord bots -- **Emoji Management**: Automatically handles emoji creation and management - -### Type Safety - -Discord Progress Bar is fully type-annotated and type-safe. It uses `basedpyright` for -type checking. - - -> [!NOTE] -> While Discord Progress Bar itself is fully typed, the underlying py-cord library has limited type annotations, which may affect type checking in some areas. - -## Usage Examples - -### Basic Progress Bar - -```python -@discord.slash_command() -async def show_progress(self, ctx: discord.ApplicationContext, percent: float = 0.5) -> None: - """Display a progress bar with the specified percentage.""" - # Get a progress bar with the default "green" style - progress_bar = await self.progress_bar_manager.progress_bar("green", length=10) - # Render the progress bar at the specified percentage - await ctx.respond(f"Progress: {progress_bar.partial(percent)}") -``` - -### Different Progress Bar States - -```python -@discord.slash_command() -async def show_progress_states(self, ctx: discord.ApplicationContext) -> None: - """Display different progress bar states.""" - progress_bar = await self.progress_bar_manager.progress_bar("green", length=10) - - # Empty progress bar (0%) - empty = progress_bar.empty() - - # Partial progress bar (50%) - half = progress_bar.partial(0.5) - - # Full progress bar (100%) - full = progress_bar.full() - - await ctx.respond(f"Empty: {empty}\nHalf: {half}\nFull: {full}") -``` - -### Custom Progress Bar Length - -```python -@discord.slash_command() -async def show_different_lengths(self, ctx: discord.ApplicationContext) -> None: - """Display progress bars with different lengths.""" - # Short progress bar (5 segments) - short_bar = await self.progress_bar_manager.progress_bar("green", length=5) - - # Medium progress bar (10 segments) - medium_bar = await self.progress_bar_manager.progress_bar("green", length=10) - - # Long progress bar (20 segments) - long_bar = await self.progress_bar_manager.progress_bar("green", length=20) - - await ctx.respond( - f"Short (5): {short_bar.partial(0.7)}\n" - f"Medium (10): {medium_bar.partial(0.7)}\n" - f"Long (20): {long_bar.partial(0.7)}" - ) -``` - -For more examples, check the [examples directory](/examples) in the repository. - -## Configuration - -### Bot Configuration - -When creating your Discord bot, make sure to enable emoji caching: - -```python -bot = discord.Bot(cache_app_emojis=True) -``` - -This is required for the `ProgressBarManager` to properly load and manage emojis. - -### Progress Bar Manager Initialization - -Initialize the `ProgressBarManager` after your bot is ready: - -```python -@discord.Cog.listener() -async def on_ready(self) -> None: - self.progress_bar_manager = await ProgressBarManager(self.bot) -``` - -### Custom Progress Bar Styles - -You can create custom progress bar styles by providing your own emoji images: - -#### From URLs - -```python -from discord_progress_bar import ProgressBarPart - -# Define URLs for each part of the progress bar -custom_style = { - ProgressBarPart.LEFT_EMPTY: "https://example.com/left_empty.png", - ProgressBarPart.LEFT_FILLED: "https://example.com/left_filled.png", - ProgressBarPart.MIDDLE_EMPTY: "https://example.com/middle_empty.png", - ProgressBarPart.MIDDLE_FILLED: "https://example.com/middle_filled.png", - ProgressBarPart.RIGHT_EMPTY: "https://example.com/right_empty.png", - ProgressBarPart.RIGHT_FILLED: "https://example.com/right_filled.png", -} - -# Create emojis from URLs -await self.progress_bar_manager.create_emojis_from_urls("custom_style", custom_style) -``` - -#### From Files - -```python -import pathlib -from discord_progress_bar import ProgressBarPart - -# Define file paths for each part of the progress bar -custom_style = { - ProgressBarPart.LEFT_EMPTY: pathlib.Path("path/to/left_empty.png"), - ProgressBarPart.LEFT_FILLED: pathlib.Path("path/to/left_filled.png"), - ProgressBarPart.MIDDLE_EMPTY: pathlib.Path("path/to/middle_empty.png"), - ProgressBarPart.MIDDLE_FILLED: pathlib.Path("path/to/middle_filled.png"), - ProgressBarPart.RIGHT_EMPTY: pathlib.Path("path/to/right_empty.png"), - ProgressBarPart.RIGHT_FILLED: pathlib.Path("path/to/right_filled.png"), -} - -# Create emojis from files -await self.progress_bar_manager.create_emojis_from_files("custom_style", custom_style) -``` - -## Limitations - - -> [!WARNING] -> Please be aware of the following limitations: -> -> - **Python Version**: Supports Python 3.12 only -> - **Discord Bot Framework**: Currently only supports py-cord, not discord.py or other Discord API wrappers -> - **Emoji Limits**: Subject to Discord's app emoji limits (2'000 emojis per app - should be plenty for most use cases) -> - **Pre-release Status**: This package is currently in alpha stage and may have unexpected behaviors or breaking changes in future versions -> - **Custom Styles**: Creating custom styles requires providing all six emoji parts (LEFT_EMPTY, LEFT_FILLED, MIDDLE_EMPTY, MIDDLE_FILLED, RIGHT_EMPTY, RIGHT_FILLED) +- **Simple API**: Just one function to remember - `dismoji.emojize()` +- **Discord Compatible**: Supports Discord's emoji naming conventions +- **Comprehensive**: Includes all standard emojis available on Discord +- **Type Safe**: Fully type-annotated for better IDE integration +- **Zero Dependencies**: Lightweight with no external dependencies +- **Fast**: Optimized for quick emoji replacement ## Getting Help -If you encounter issues or have questions about discord-progress-bar: +If you encounter issues or have questions about dismoji: - **GitHub Issues**: - [Submit a bug report or feature request](https://github.com/Paillat-dev/discord-progress-bar/issues) -- **Discord Support**: - - For py-cord related questions: Join the - [Pycord Official Server](https://discord.gg/pycord) - - For discord-progress-bar specific help: Join the - [Pycord Official Server](https://discord.gg/pycord) and mention `@paillat` - - -> [!TIP] -> Before asking for help, check if your question is already answered in the [examples directory](/examples) or existing GitHub issues. + [Submit a bug report or feature request](https://github.com/Paillat-dev/dismoji/issues) +- **Discord Support**: Join the [Pycord Official Server](https://discord.gg/pycord) and + mention `@paillat` ## Development @@ -319,7 +83,7 @@ If you encounter issues or have questions about discord-progress-bar: 1. Fork the repository 2. Create a feature branch 3. Make your changes -4. Run linter, formatter and type checker: `ruff check .`,`ruff format .`, +4. Run linter, formatter and type checker: `ruff check .`, `ruff format .`, `basedpyright .` 5. Submit a pull request @@ -330,10 +94,6 @@ If you encounter issues or have questions about discord-progress-bar: - **HashiCorp Copywrite**: For managing license headers - **basedpyright**: For type checking - -> [!CAUTION] -> This is an early-stage project and may have unexpected behaviors or bugs. Please report any issues you encounter. - ## License MIT License - Copyright (c) 2025 Paillat-dev