- /help is sent as a few messages (Discord caps an embed at 6000 characters), with a test for the limits - command reference, features, self-hosting, beta and getting-started pages describe the commands; the SQL section is gone - development and contributing: every setting needs a command Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package help
|
|
|
|
import (
|
|
"testing"
|
|
"unicode/utf8"
|
|
|
|
"github.com/bwmarrin/discordgo"
|
|
)
|
|
|
|
// Discord refuses an embed that is over its limits, and then /help would send
|
|
// nothing. This catches it when a command is added to the text.
|
|
func TestHelpFitsDiscordsLimits(t *testing.T) {
|
|
list := embeds(&discordgo.MessageEmbedAuthor{Name: "Velox Bot"})
|
|
if len(list) == 0 {
|
|
t.Fatal("no help")
|
|
}
|
|
seen := 0
|
|
for n, e := range list {
|
|
total := utf8.RuneCountInString(e.Title) + utf8.RuneCountInString(e.Description)
|
|
if len(e.Fields) > 25 {
|
|
t.Errorf("embed %d has %d fields, at most 25", n, len(e.Fields))
|
|
}
|
|
for _, f := range e.Fields {
|
|
seen++
|
|
if l := utf8.RuneCountInString(f.Value); l == 0 || l > maxFieldChars {
|
|
t.Errorf("field %q has %d characters, must be 1 to %d", f.Name, l, maxFieldChars)
|
|
}
|
|
if l := utf8.RuneCountInString(f.Name); l == 0 || l > 256 {
|
|
t.Errorf("field name %q has %d characters, at most 256", f.Name, l)
|
|
}
|
|
total += fieldSize(f)
|
|
}
|
|
if total > 6000 {
|
|
t.Errorf("embed %d has %d characters, Discord allows 6000", n, total)
|
|
}
|
|
}
|
|
if seen != len(fields()) {
|
|
t.Errorf("%d fields shown of %d", seen, len(fields()))
|
|
}
|
|
}
|