Skip to main content

Discord Bot Library - UI & Image Manipulation for Making Games

Project description

Discord Bot Library for Writing Discord Bots with in Python

A wrapper over discord.py and Pillow for bot management, image manipulation, easy data persistence, and more for making gameplay focused discord bots, but capable of making pretty much any kind of discord bot Provides:

  • Image creation with a UI system, and sprite management
  • Out-of-the-box persistent data management for players with extensibility to handle anything
  • Various utilities for testing, and debugging to assist in development

Table of Contents

  1. Installation
  2. Troubleshooting
  3. Getting Help

Installation

Requires:

  • Python 3.13+
  • discord.py
  • pillow

Installing CordForge

py -m venv .venv
<activate venv>
pip install cordforge

Or install from source:

git clone https://github.com/Robert-DeForrest-Reynolds/CordForge
cd CordForge
py -m venv .venv
<activate venv>
pip install -e .

Create Your Bot Token

First, create a Discord application and bot at Discord Developer Portal.

Set Up Your Project

Create a keys file in your project directory: key_name~your_discord_bot_token_here

dev_name=OTk3MDA...

Your "main" file must be called entry.py

Basic Bot Setup

entry.py

from CordForge import *

bot = Cord("cmd")

# Initial send of dashboard, all other functions are replys/edits of the sent message
async def entry(user_card:Card) -> Card:
    await user_card.new_image()
    panel:Panel = await user_card.panel(border=True)
    await user_card.text("Hello", Vector2(5, 5), parent=panel)
    await user_card.add_button("Some other thing", some_other_card, [])


async def some_other_card(user_card:Card, interaction) -> None:
    await user_card.new_image()
    await user_card.add_button("Home", roc.home, [])
    await roc.reply(user_card, interaction)

# any necessary setup, loading images into memory, data management, etc.
bot.launch(entry)

Launch & Use Bot

cordforge dev_name

or

cf dev_name

Type cmd into the Discord server where Bot is a member.

Use stop to stop the bot completely. Use restart to restart the Discord bot, implementing any changes in scripts. Use exit to exit the launcher. The launcher will not let you exit with a running bot. Use // to emergency stop the bot. Easy to type in cases of wild loops, or other problems.

Player Data & Persistence

A players profile is created, and saved as soon as they use their first panel. You can add traits to their Player object, and they will automatically be saved and reloaded.

from CordForge import *

bot = Cord("cmd")

# Initial send of dashboard, all other functions are replys/edits of the sent message
async def entry(user_card:Card) -> Card:
    await user_card.new_image()
    await user_card.add_button(f"Money: {user_card.user.wallet}", give_money, [])


async def give_money(user_card:Card, interaction) -> None:
    user_card.user.wallet += 1
    await bot.home(user_card, interaction)


traits = [
    # [trait name, trait value]
    ["wallet", 0.00],
]
bot.user_traits = traits
bot.launch(entry)

More Information

Cord inherits from discord.py's Bot class, so you could add commands, cogs, and whatnot as you might normally.

The Card class _.image is a pillow image, and you can use all of it's variables, and functions.

Anything that CordForge can't do, can easily be implemented alongside it.

Discord channel for any help

Version Control Recommendation

Ensure your Keys file is hidden, here is a recommend .gitignore for example:

__pycache__
.venv
Keys
Data

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cordforge-0.3.19.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cordforge-0.3.19-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

Details for the file cordforge-0.3.19.tar.gz.

File metadata

  • Download URL: cordforge-0.3.19.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for cordforge-0.3.19.tar.gz
Algorithm Hash digest
SHA256 dce8d235c586a7ca6475466ca258c431e884fc5ed439f9e70c92bbb95ab20fe2
MD5 3a34a7d261054a348fb715087dd5fb4a
BLAKE2b-256 4c68cef2f016a0073e7ec83c89db6569c07da6a21a08cbd8895721c548138237

See more details on using hashes here.

File details

Details for the file cordforge-0.3.19-py3-none-any.whl.

File metadata

  • Download URL: cordforge-0.3.19-py3-none-any.whl
  • Upload date:
  • Size: 22.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for cordforge-0.3.19-py3-none-any.whl
Algorithm Hash digest
SHA256 5bb29a31a3a3381b3d9995c044112d6899889397a38fe601dc7a117ccf780743
MD5 d1f00cc42cc7cea269c74f1c1c8de142
BLAKE2b-256 5b57f06e47006901714ffe8596d2d82fe05f14a2ca7630e30bb4a8b0bf9ab276

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page