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
Hashes for discord-ext-typed-commands-1.0.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9bffb46dfc93b50356624bfe7756a4f0dad3a8933ffc160c9a44babaa7bc194d |
|
MD5 | ab22e130e952e3d2f1dd54b7ac46797c |
|
BLAKE2b-256 | decf5c9dfab1cb22e66de1c6af5ec662d73ccffd15f86ee23aa0f5f4e7eaac87 |
Hashes for discord_ext_typed_commands-1.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d19e01bef9b256df7506d735ca7a42e4ecb49f8a68fc4536d4221e1921d8c5c |
|
MD5 | 424812c31aee01fec555b940a1caa186 |
|
BLAKE2b-256 | d5ba0354a5bca1481c5aed309e9766ca10446b127918d83f8c79d1038d231fa2 |