合并 origin/main 设备注册后,纳入本地 music 模块、seed 命令与 popadmin 相关路由/文档;music migration 编号为 0020 以避免与 0019_devices 冲突。 Co-authored-by: Cursor <cursoragent@cursor.com>
50 lines
2.0 KiB
Go
50 lines
2.0 KiB
Go
package logic
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
)
|
|
|
|
// botNicknames are English display names assigned deterministically to bot indexes.
|
|
var botNicknames = []string{
|
|
"Spark Assistant", "Nova Guide", "Echo Helper", "Atlas Bot", "Luna Concierge",
|
|
"Orion Buddy", "Mira Support", "Felix Demo", "Aria Sample", "Kai Showcase",
|
|
"Nina Pilot", "Leo Welcome", "Zoe Messenger", "Owen Chat", "Ivy Reply",
|
|
"Ethan Pulse", "Clara Beam", "Miles Spark", "Ruby Wave", "Hugo Note",
|
|
"Vera Link", "Jonas Thread", "Piper Mail", "Silas Ping", "Nora Signal",
|
|
"Quinn Relay", "Mabel Soft", "Theo Bright", "Elsie Calm", "Finn Steady",
|
|
"Iris Clear", "Jude Warm", "Lana Quick", "Marco Soft", "Nell Crisp",
|
|
"Omar Fresh", "Paige Light", "Reed Cool", "Sage Kind", "Tess Open",
|
|
"Uma Soft", "Vince Clear", "Willa Bright", "Xander Calm", "Yara Warm",
|
|
"Zane Quick", "Ada Soft", "Blake Crisp", "Cora Fresh", "Drew Light",
|
|
"Eve Cool", "Ford Kind", "Gina Open", "Hank Soft", "Indie Clear",
|
|
"Jade Bright", "Kurt Calm", "Liv Warm", "Moss Quick", "Nia Soft",
|
|
"Otto Crisp", "Pearl Fresh", "Quill Light", "Rose Cool", "Seth Kind",
|
|
"Tara Open", "Uri Soft", "Veda Clear", "Wes Bright", "Xena Calm",
|
|
"York Warm", "Zara Quick", "Amy Soft", "Ben Crisp", "Cy Fresh",
|
|
"Dot Light", "Eli Cool", "Fay Kind", "Gus Open", "Hal Soft",
|
|
"Ina Clear", "Jay Bright", "Kim Calm", "Lou Warm", "Max Quick",
|
|
"Nyx Soft", "Oli Crisp", "Pam Fresh", "Rex Light", "Sky Cool",
|
|
"Ty Kind", "Una Open", "Vic Soft", "Wyn Clear", "Xia Bright",
|
|
"Yen Calm", "Zed Warm", "Ash Quick", "Bea Soft", "Cal Crisp",
|
|
}
|
|
|
|
// nicknameForBot returns a stable English nickname for bot index 1..100.
|
|
func nicknameForBot(index int) string {
|
|
if index < 1 {
|
|
index = 1
|
|
}
|
|
if index == 1 {
|
|
return botNicknames[0]
|
|
}
|
|
// Deterministic shuffle pick so re-runs keep the same names/avatars.
|
|
r := rand.New(rand.NewSource(int64(20260923 + index*9973)))
|
|
base := botNicknames[1+(index-2)%(len(botNicknames)-1)]
|
|
suffix := r.Intn(90) + 10
|
|
nick := fmt.Sprintf("%s %d", base, suffix)
|
|
if len(nick) > 64 {
|
|
return nick[:64]
|
|
}
|
|
return nick
|
|
}
|