Skip to main content

A Discord.py module to facilitate easier viewing for large amounts of content.

Project description

DiscordBook

A Discord module for bot developers wanting a lightweight and customizable package for a book-like info display.

Example of a well-formatted book display:

Terminology:

  • Book - abstracted structure to use
  • Line - particular item inside the book - in the above example, "Abyssal Buckler" would be a line
  • Chapter - group of lines - in the example, "A" would be a chapter
  • Page - combination of chapter headers and lines that can be displayed on the embed

Options

Currently, 2 types of books are supported - a default book with the following default parameters:

Book(chapters = [], title = "\a", description = '\a', color = 1, image = None, per_page = 10)

Example usage of Book:

from discordbook import Book

# Creating the content for the book
lines1 = ["test line 1", "test line 2", "test line 3"]
chapter1 = Chapter("Test Chapter 1", lines1)

lines2 = ["test line 1", "test line 2", "test line 3"]
chapter2 = Chapter("Test Chapter 2", lines2)

lines3 = ["test line 1", "test line 2", "test line 3"]
chapter3 = Chapter("Test Chapter 3", lines3)

lines4 = ["test line 1", "test line 2", "test line 3"]
chapter4 = Chapter("Test Chapter 4", lines4)

lines5 = ["test line 1", "test line 2", "test line 3"]
chapter5 = Chapter("Test Chapter 5", lines5)

# Initializing the object itself
item_book = Book([chapter1, chapter2, chapter3, chapter4, chapter5], "Test Book", "Test book Desc")

# A blocking method that will send and constantly update the book display
await item_book.open_book(client, message.channel, message.author)

And an alphabetically ordered book with the following default parameters:

AlphabeticalBook(content = [], title = "\a", description = '\a', color = 1, per_page = 10, ignore_caps = True)

Example usage of Alphabetical Book:

from discordbook import AlphabeticalBook

# Creating the content for the book
lines1 = ["Test", "test", "Abc", "bc", "D", "Zee"]

# Initializing the object itself
a_book = AlphabeticalBook(lines1, "Test Book", "test desc", ignore_caps = False)

# A blocking method that will send and constantly update the book display
await a_book.open_book(client, message.channel)

Result

Caveats

  • Books are static once generated
  • Opening a book should be the last call in your function, since it will prevent the rest of your code from running
  • Creating a book with empty lines will result in errors

TODO:

  • Develop ordering of chapters based of less than function?
  • Bookmark feature to come back to this page after?
  • Give more fine-grained control with non-blocking books
  • Better error checking on small/empty books
  • Set browsing speed, better options for settings
  • Better documentation

Open to pull requests or issues!

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

discordbook-0.2.4.tar.gz (5.0 kB view hashes)

Uploaded Source

Built Distribution

discordbook-0.2.4-py3-none-any.whl (6.6 kB view hashes)

Uploaded Python 3

Supported by

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