1
0
Fork 0
mirror of https://github.com/diamondburned/arikawa.git synced 2024-12-03 20:32:55 +00:00
arikawa/bot
diamondburned 29582d6131 Bot: Allow both plumbed and normal commands
This commit changes the existing Plumb behavior to allow normal commands
to coexist along a plumbed command. This change allows certain behaviors
that would otherwise require manually switching on arguments.

An example use case of this change would be having a default behavior
when a subcommand call doesn't have a command name. For example, given
this code:

    func (b *Banana) Setup(sub *bot.Subcommand) { sub.SetPlumb(b.Help) }

    func (b *Banana) Green(*gateway.MessageCreateEvent) {}
    func (b *Banana) Help(*gateway.MessageCreateEvent)  {}

The subcommand "banana" could have its own help when it's called as
"!banana", while "!banana green" would trigger another handler.
2020-11-30 14:26:53 -08:00
..
extras Bot: Refactored accordingly to State's new Store API 2020-11-29 17:19:59 -08:00
arguments.go Bot: Fixed CustomParser arguments still having subcommand 2020-11-14 21:05:31 -08:00
arguments_test.go Bot: Added more tests and the Help API 2020-05-14 14:04:18 -07:00
command.go Bot: Added automatic Intents detection from handlers 2020-10-28 22:49:18 -07:00
ctx.go API: Added timeout if deadline is after rate limit (#173) 2020-11-25 12:08:42 -08:00
ctx_call.go Bot: Allow both plumbed and normal commands 2020-11-30 14:26:53 -08:00
ctx_plumb_test.go Bot: Allow both plumbed and normal commands 2020-11-30 14:26:53 -08:00
ctx_test.go Bot: Refactored accordingly to State's new Store API 2020-11-29 17:19:59 -08:00
error.go Bot: Proper unknown command error punctuations 2020-11-14 22:12:02 -08:00
error_test.go make all error messages lowercase 2020-05-16 23:14:49 +02:00
README.md Bot: Partially implemented middlewares 2020-05-14 13:59:17 -07:00
subcommand.go Bot: Added subcommand aliases and better setup API 2020-11-12 19:02:52 -08:00
subcommand_test.go Bot: Added more tests and the Help API 2020-05-14 14:04:18 -07:00

What are the performance impacts of this library?

Not a lot for a Discord bot:

THIS IS OUTDATED. TODO: UPDATE.

# Cold functions, or functions that are called once in runtime:
BenchmarkConstructor-8               	  150537	      7617 ns/op
BenchmarkSubcommandConstructor-8     	  155068	      7721 ns/op

# Hot functions, or functions that can be called multiple times:
BenchmarkCall-8                      	 1000000	      1194 ns/op
BenchmarkHelp-8                      	 1751619	       680 ns/op

# Hot functions, but called implicitly on non-message-create events:
BenchmarkReflectChannelID_1Level-8   	10111023	       113 ns/op
BenchmarkReflectChannelID_5Level-8   	 1872080	       686 ns/op