Commands Object¶
Note
This commands object is an extention of basic-client.
Usage..
from slack import commands
client = commands.Client(..., prefix="!")
@client.command(name="msg")
async def message(ctx: commands.Context, *args):
await ctx.channel.send("message received!")
@client.command()
async def ping(ctx: commands.Context, *args):
await ctx.channel.send("pong!")
If commands was start your prefix and the command was registered, dispatch command-function.
Bot¶
This class need…
user-token.
bot-token.
app-token.
prefix.
Prefix is a string for command occur. If you don’t need this, you put prefix=””
- class slack.commands.Bot¶
This is
slack.Client’s subclass.New in version 1.2.0.
- token¶
App-level token. It is startwith ‘xapp-…’
Changed in version 1.4.0: To optional.
- Type:
Optional[
str]
- logger¶
Logger object.
New in version 1.4.0.
- Type:
Logger.Logger
- @command(name=None)¶
Register command of your client-object.
- Parameters:
name (
str) – command name. If you don’t set, use function name.
- @event¶
- event is a decorator that takes a coroutine function and sets
it as an attribute of the class it’s decorating.
- Parameters:
coro (
Coro) – The coroutine function to be decorated.- Return type:
The coro function itself.
- property commands: Dict[str, Command]¶
Return all commands
New in version 1.4.0.
- Return type:
Dict[:class:`str,
Command]
- is_closed() bool¶
It returns a boolean value.
- Returns:
The return value is a boolean value.
- Return type:
- await on_error(event_name, exc: Exception, *args, **kwargs) None¶
It prints the name of the event that raised the exception, the name of the exception, and the name of the class that the event is in.
- Parameters:
event_name – The name of the event that was raised.
exc (Exception) – The exception that was raised.
- run() None¶
A blocking call that abstracts away the event loop initialisation from you. If you want more control over the event loop then this function should not be used. Use
start()coroutine orconnect()+login(). Roughly Equivalent to:try: loop.run_until_complete(start(*args, **kwargs)) except KeyboardInterrupt: loop.run_until_complete(close()) # cancel all tasks lingering finally: loop.close()
Warning
This function must be the last function to call due to the fact that it is blocking. That means that registration of events or anything being called after this function call will not execute until it returns.
- wait_for(event: str, check: Optional[Callable[[...], bool]] = None, timeout: Optional[float] = None)¶
This function is a coroutine
Waits for a WebSocket event to be dispatched.
This could be used to wait for a user to reply to a message, or to react to a message, or to edit a message in a self-contained way.
The
timeoutparameter is passed ontoasyncio.wait_for(). By default, it does not time out. Note that this does propagate theasyncio.TimeoutErrorfor you in case of timeout and is provided for ease of use.- Parameters:
event (
str) – The event name, similar to the event reference, but without theon_prefix, to wait for.check (Optional[Callable[…,
bool]]) – A predicate to check what to wait for. The arguments must meet the parameters of the event being waited for.timeout (Optional[
float]) – The number of seconds to wait before timing out and raisingasyncio.TimeoutError.
- Returns:
Returns no arguments, a single argument, or a
tupleof multiple arguments that mirrors the parameters passed in the event reference.- Return type:
Any
- Raises:
asyncio.TimeoutError – Raised if a timeout is provided and reached.
Examples
Waiting for a user reply:
@bot.event async def on_message(message): if message.content.startswith('$greet'): channel = message.channel await channel.send('Say hello!') def check(m): return m.content == 'hello' and m.channel == channel msg = await bot.wait_for('message', check=check) await channel.send(f'Hello {msg.author}!')
Waiting for a thumbs up reaction from the message author:
@bot.event async def on_message(message): if message.content.startswith('$thumb'): channel = message.channel await channel.send('Send me that 👍 reaction, mate') def check(reaction, user): return user == message.author try: reaction, user = await bot.wait_for('channel_create', timeout=60.0, check=check) except asyncio.TimeoutError: await channel.send('👎') else: await channel.send('👍')
Context¶
- asyncarchive
- asyncdelete
- asyncget_scheduled_messages
- asynchistory
- asyncsend
- asyncsend_ephemeral
- asyncsend_file
- asyncsend_schedule
- class slack.commands.Context¶
A context is a message that is sent to a handler
- await delete() DeletedMessage¶
Delete context message.
- Returns:
Data of deleted message.
- Return type:
DeletedMessage
- await get_scheduled_messages(limit: Optional[int] = None, latest: Optional[datetime, int, float] = None, oldest: Optional[datetime, int, float] = None) List[Optional[ScheduledMessage]]¶
Examples
Examples
messages = await channel.get_scheduled_messages(): for message in messages: print(message.content)
- await history() List[Message]¶
Examples
Examples
async for message in channel.history(): print(message.content)
- await send(text: Optional[str] = None, view: Optional[ViewFrame] = None, as_user: bool = False) Message¶
This function is a coroutine
It sends a message to a channel.
Changed in version 1.4.0: Add view parameter.
- Parameters:
- Raises:
InvalidArgumentException – Raise when text and view are in param.
- Returns:
A Message object.
- Return type:
Message
- await send_ephemeral(text: str, member: Member) datetime¶
This function is a coroutine Send Ephemeral message.
New in version 1.4.0.
- Parameters:
text (
str) – The text of the message to send.member (
Member) – send member.
- Returns:
Message posted time.
- Return type:
datetime
- await send_file(attachment: Attachment) slack.File¶
This function occur sending file.
- Parameters:
attachment (
Attachment) – Your file to send.- Returns:
Sended data of file.
- Return type:
File
Command¶
Note
If raise exception in commands object, it will go to on_command_error(ctx, err) event.