# Chat Command Based Extension

**PluginCore.cs**

```csharp
[Plugin(1, "Bot Viewer Extension Plugin", "Test plugin to showcase bot viewer possible extensions using chat command invocations.")]
public class PluginCore : IStartPlugin
{
    public override void OnLoad(int version, int subversion, int buildversion) { }
    public override PluginResponse OnEnable(IBotSettings botSettings) { return base.OnEnable(botSettings); }
}

public class ExampleChatHandler : IBotServerChatHandler {
    public override string Name { get; set; } = "test";
    public override string Description { get; set; } = "This is a test chat command handler for OQMineBot's bot server.";
    public override string[] RequiredArguments { get; set; } = {"none|all", "opt|opt2|opt3" };
    public override string[] OptionalArguments { get; set; } = { "greet|insult" };

    public override ChatHandlerResult Execute(IBotContext Context, IConnectedClient Client, IBotServerEvents Events, string[] arguments) {

        // Sanity checks.
        if (arguments.Length < 1) return new ChatHandlerResult(false, "Argument not found.");
        var argument = arguments[0].ToLower();
        if (argument != "none" && argument != "all") return new ChatHandlerResult(false, "Invalid argument.");

        /*
         * Execute command here.
         */

        return new ChatHandlerResult(true); // success
    }
}
```

<div align="left"><img src="https://3614267652-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LnCwyAn9DfsyNsBpyeT%2F-M8Nsx9Bhvrc9DcuE-lK%2F-M8NtJGQkyD--LDREIfR%2Fimage.png?alt=media&#x26;token=f28e1abc-91bd-4c30-be32-dc46b0b34b45" alt="Result from running the example code."></div>
