Best Flask open-source libraries and packages

Discord qalib

๐Ÿ‘พ Discord library built on discord.py to simplify source code by rendering markup (xml) templates of embeds and menus (Pagination).
Updated 2 months ago

Discord-Qalib Tests codecov Codacy Badge Python Version Gitmoji PyPI PyPI - Downloads

Discord templating engine built on discord.py, to help separate text of embeds from the source code. Inspired by Flask.


Key Features:

  • use of xml files to hold the various template responses
  • allows for pagination, in an abstract form simplifying the interface in the source code

โš™๏ธ Installing:

Python3.8 or higher is required

๐Ÿงช Tests

To run the tests, run the following command in the root directory:

Windows:

python -m unittest tests -v 

Linux:

python3 -m unittest tests -v

โšก Usage

This is explained in more detail in the wiki

Wrap expressions that need to evaluated with {}, such as {player.name} or {todays_date}

Sample XML file:

<discord>
    <message key="test_key">
        <embed>
            <title>Test</title>
            <description>Test Description</description>
            <colour>magenta</colour>
            <timestamp format="%Y-%m-%d %H:%M:%S.%f">{todays_date}</timestamp>
            <url>https://www.discord.com</url>
            <fields>
                <field>
                    <name>Test Field</name>
                    <value>Test Text</value>
                </field>
            </fields>
            <footer>
                <text>Test Footer</text>
                <icon>https://cdn.discordapp.com/embed/avatars/0.png</icon>
            </footer>
            <thumbnail>https://cdn.discordapp.com/embed/avatars/0.png</thumbnail>
            <image>https://cdn.discordapp.com/embed/avatars/0.png</image>
            <author>
                <name>Test Author</name>
                <icon>https://cdn.discordapp.com/embed/avatars/0.png</icon>
                <url>https://discordapp.com</url>
            </author>
        </embed>
        <view>
            <components>
                <button key="understood_button">
                    <label>Understood</label>
                    <style>success</style>
                </button>
            </components>
        </view>
    </message>
</discord>

using the above xml file, for example, you can create an embed with the following code:

import datetime
from typing import Literal

import discord
from discord.ext import commands

import qalib
from qalib.template_engines import formatter

bot = commands.AutoShardedBot(command_prefix="!", intents=discord.Intents.all())

Messages = Literal["test_key"]


async def acknowledged(interaction: discord.Interaction):
    await interaction.response.send_message("Acknowledged", ephemeral=True)


@bot.command()
@qalib.qalib_context(formatter.Formatter(), "templates/test.xml")
async def test(ctx: qalib.QalibContext[Messages]):
    callables = {"understood_button": acknowledged}

    await ctx.rendered_send("test_key", callables, keywords={
        "todays_date": datetime.datetime.now()
    })