Commands for everything a dashboard can do
- /music skip, pause, resume, stop, repeat, remove, move (DJ role) - /config view, clear, toggletwitch, streamers, beta-features (server owner) - /slvl status, remove-reward; /moderation bans, timeouts; /security history - /beta is now the bot owner's DM-only command: set, off, servers, remove-server, status - betasettings service and repo methods, with integration tests Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
This commit is contained in:
1 parent
acdb5ead35
commit
132a2cd986
26 files changed
+1062
-65
No files matched your search
@@ -256,3 +256,66 @@ func TestBetaRegistered(t *testing.T) {
|
||||
t.Error("a bad ID is refused")
|
||||
}
|
||||
}
|
||||
|
||||
func TestBetaSettingsFromCommands(t *testing.T) {
|
||||
r, _ := testRepo(t)
|
||||
ctx := context.Background()
|
||||
var wasG, wasR sql.NullInt64
|
||||
hadRow := r.db.QueryRowContext(ctx, `SELECT guild_id, role_id FROM beta_settings WHERE id`).Scan(&wasG, &wasR) == nil
|
||||
t.Cleanup(func() {
|
||||
if hadRow {
|
||||
_, _ = r.db.ExecContext(ctx, `UPDATE beta_settings SET guild_id=$1, role_id=$2 WHERE id`, wasG, wasR)
|
||||
} else {
|
||||
_, _ = r.db.ExecContext(ctx, `DELETE FROM beta_settings`)
|
||||
}
|
||||
_ = r.SetBetaGuild(ctx, 8800000000000007171, 1, false)
|
||||
})
|
||||
|
||||
if err := r.SetBetaServer(ctx, 700000000000000001, 800000000000000002, 5); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
g, role, err := r.GetBetaSettings(ctx)
|
||||
if err != nil || g != "700000000000000001" || role != "800000000000000002" {
|
||||
t.Fatalf("settings: %q %q %v", g, role, err)
|
||||
}
|
||||
if err := r.SetBetaServer(ctx, 700000000000000001, 0, 5); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if g, role, _ = r.GetBetaSettings(ctx); g != "700000000000000001" || role != "" {
|
||||
t.Errorf("a zero role clears the role and keeps the server: %q %q", g, role)
|
||||
}
|
||||
|
||||
const guild = 8800000000000007171
|
||||
for i := 0; i < 2; i++ {
|
||||
if err := r.SetBetaGuild(ctx, guild, 9, true); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
if on, _ := r.IsBetaGuild(ctx, guild); !on {
|
||||
t.Error("opted in")
|
||||
}
|
||||
if err := r.SetBetaGuild(ctx, guild, 9, false); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if on, _ := r.IsBetaGuild(ctx, guild); on {
|
||||
t.Error("opted out")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteRoleReward(t *testing.T) {
|
||||
r, g := testRepo(t)
|
||||
ctx := context.Background()
|
||||
if err := r.SetRoleRewardForLevel(ctx, g, 5, 77); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Cleanup(func() { _, _ = r.db.ExecContext(ctx, `DELETE FROM levelrewards WHERE guild_id = $1`, g) })
|
||||
if removed, err := r.DeleteRoleRewardForLevel(ctx, g, 6); err != nil || removed {
|
||||
t.Errorf("nothing at level 6: %v %v", removed, err)
|
||||
}
|
||||
if removed, err := r.DeleteRoleRewardForLevel(ctx, g, 5); err != nil || !removed {
|
||||
t.Errorf("remove level 5: %v %v", removed, err)
|
||||
}
|
||||
if _, ok, _ := r.GetRoleRewardForLevel(ctx, g, 5); ok {
|
||||
t.Error("the reward is gone")
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user