> For the complete documentation index, see [llms.txt](https://docs.yarnspinner.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.yarnspinner.dev/2.3/api/csharp/yarn.unity/yarn.unity.dialoguerunner/yarn.unity.dialoguerunner.addcommandhandler-5.md).

# AddCommandHandler(string,System.Func\<T1, T2, Coroutine>)

Method in [DialogueRunner](/2.3/api/csharp/yarn.unity/yarn.unity.dialoguerunner.md)

## Summary

Adds a command handler. Dialogue will pause execution after the command is called.

```csharp
public void AddCommandHandler<T1, T2>(string commandName, System.Func<T1, T2, Coroutine> handler);
```

## Remarks

When this command handler has been added, it can be called from your Yarn scripts like so:

```
<<commandName param1 param2>>
```

If `handler` is a method that returns a `UnityEngine.Coroutine`, when the command is run, the [DialogueRunner](/2.3/api/csharp/yarn.unity/yarn.unity.dialoguerunner.md) will wait for the returned coroutine to stop before delivering any more content.

If `handler` is a method that returns an `System.Collections.IEnumerator`, when the command is run, the [DialogueRunner](/2.3/api/csharp/yarn.unity/yarn.unity.dialoguerunner.md) will start a coroutine using that method and wait for that coroutine to stop before delivering any more content.

## Parameters

| Name                              | Description                                                                                                        |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| `string` commandName              | The name of the command.                                                                                           |
| `Func<T1, T2, Coroutine>` handler | The [CommandHandler](/2.3/api/csharp/yarn/yarn.commandhandler.md) that will be invoked when the command is called. |
