Typed commands for discord.py
Project description
discord-ext-typed-commands
This package contains a discord.py extension to provide classes to more easily use typed commands
Installation
pip install discord-ext-typed-commands
NOTE: Because discord.py
uses namespace packages for its extensions, mypy
must be configured to use namespace packages either with the --namespace-packages
command line flag, or by setting namespace_packages = True
in your mypy
configuration file. See the import discovery section of the mypy
documentation for more details.
Usage
The most common usage will be in connection with discord.py-stubs in order to allow bot authors to use the command classes from discord.py while also using the generics defined in the stubs:
from typing import Any, Type, TypeVar, Union, cast, overload
import discord
from discord.ext import typed_commands
OtherContextType = TypeVar('OtherContextType', bound=typed_commands.Context)
class MyContext(typed_commands.Context):
async def send_with_hello(self, text: str) -> None:
await self.send(f'Hello! {text}')
class MyCog(typed_commands.Cog[MyContext]):
@typed_commands.command()
async def speak(self, ctx: MyContext, text: str) -> None:
await ctx.send_with_hello(text)
class MyBot(typed_commands.Bot[MyContext]):
@overload
async def get_context(self, message: discord.Message) -> MyContext:
...
@overload
async def get_context(
self, message: discord.Message, *, cls: Type[OtherContextType]
) -> OtherContextType:
...
async def get_context(
self,
message: discord.Message,
*,
cls: Type[OtherContextType] = cast(Any, MyContext),
) -> Union[MyContext, OtherContextType]:
return await super().get_context(message, cls=cls)
my_bot = MyBot('$')
my_bot.add_cog(MyCog())
my_bot.run('...')
NOTE: Because it is not a runtime dependency, discord.py-stubs will need to be explicitly installed to type check a bot while it is being developed. It is recommended that the stubs be added as a development dependency using your preferred method of package management.
Development
Make sure you have poetry installed.
poetry install
poetry run pre-commit install --hook-type pre-commit --hook-type post-checkout
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
Built Distribution
File details
Details for the file discord-ext-typed-commands-1.0.3.tar.gz
.
File metadata
- Download URL: discord-ext-typed-commands-1.0.3.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.8.6 Linux/5.4.0-1032-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9bffb46dfc93b50356624bfe7756a4f0dad3a8933ffc160c9a44babaa7bc194d |
|
MD5 | ab22e130e952e3d2f1dd54b7ac46797c |
|
BLAKE2b-256 | decf5c9dfab1cb22e66de1c6af5ec662d73ccffd15f86ee23aa0f5f4e7eaac87 |
File details
Details for the file discord_ext_typed_commands-1.0.3-py3-none-any.whl
.
File metadata
- Download URL: discord_ext_typed_commands-1.0.3-py3-none-any.whl
- Upload date:
- Size: 4.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.8.6 Linux/5.4.0-1032-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d19e01bef9b256df7506d735ca7a42e4ecb49f8a68fc4536d4221e1921d8c5c |
|
MD5 | 424812c31aee01fec555b940a1caa186 |
|
BLAKE2b-256 | d5ba0354a5bca1481c5aed309e9766ca10446b127918d83f8c79d1038d231fa2 |