2024-06-19 22:33:28 +07:00

111 lines
2.0 KiB
Markdown

# XHandler
```py
import PyserSSH.extensions.XHandler as XHandler
```
XHandler is eXternal Handler. Coding your command like discord.py
## Setup
You can enable XHandler by
```py
XH = XHandler()
ssh = Server(XHandler=XH)
```
This enable is disable `command` event and enable 2 event. [click here](../system/events/extension.md) goto XHandler event.
## Quick Example
```py
@XH.command()
def calculate(client, mode="add", x=3, y=1, hello=False):
"""Perform mathematical operations."""
x, y, = int(x), int(y)
if mode == "add":
Send(client, x + y)
elif mode == "sub":
Send(client, x - y)
elif mode == "mul":
Send(client, x * y)
elif mode == "div":
Send(client, x / y)
if hello:
Send(client, "Hello World!")
```
```bash
> calculate
4
```
this command you can custom value by use `-` in your command
```bash
> calculate -mode sub
2
> calculate -x 5 -y 2
7
> calculate -x 5 -y 2 -mode mul
10
```
you can use `--` for boolean only
```bash
> calculate --hello
4
Hello World!
```
## Help command
You can disable help command by `enablehelp=False`
```bash
> help
No Category:
calculate - Perform mathematical operations.
```
you can use `help <command>` for more command info
```bash
> help calculate
calculate
Perform mathematical operations.
Usage: calculate [-mode add] [-x 3] [-y 1] [--hello]
```
## Error
You can show error input command by `showusageonworng=False`
### Command Not Found
```bash
> hello
hello not found
```
#### Handle
You can handle command not found by using `.commandnotfound`
```py
def notfound(client, command):
# your process
XH.commandnotfound = notfound
```
### Missing argument
if enable `showusageonworng`
```bash
> hello
hello
Usage: hello <testvalue>
```
or if disable `showusageonworng`
```bash
Missing required argument 'testvalue' for command 'hello'
```
### Invalid argument
if enable `showusageonworng`
```bash
> hello -testvalue
hello
Usage: hello <testvalue>
```
or if disable `showusageonworng`
```bash
> hello -testvalue
Invalid number of arguments for command 'hello'.
```