fix(counter): migrate old marker and cleanup duplicate
This commit is contained in:
parent
fb6fd4fac0
commit
e251360f05
1 changed files with 22 additions and 0 deletions
|
|
@ -26,6 +26,28 @@ async fn ensure_channel(ctx: &Context, guild_id: GuildId) -> anyhow::Result<Chan
|
||||||
let _ = id.edit(&ctx.http, edit).await;
|
let _ = id.edit(&ctx.http, edit).await;
|
||||||
info!(channel=%id, position=%ch.position, parent=?ch.parent_id, "member counter reconciled to top (outside category, pos 0)");
|
info!(channel=%id, position=%ch.position, parent=?ch.parent_id, "member counter reconciled to top (outside category, pos 0)");
|
||||||
}
|
}
|
||||||
|
// Cleanup old duplicates with different marker (e.g. "👥|Members:" with separator)
|
||||||
|
for (oid, oc) in channels.iter().filter(|(oid, _)| *oid != id) {
|
||||||
|
if oc.name.contains("Members:") {
|
||||||
|
// Old counter with different marker or duplicate — delete
|
||||||
|
let _ = oid.delete(&ctx.http).await;
|
||||||
|
info!(channel=%oid, name=%oc.name, "old member counter deleted (migration)");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Ok(*id);
|
||||||
|
}
|
||||||
|
// Migration: found old marker but not new — rename/move it instead of creating new
|
||||||
|
if let Some((id, _)) = channels.iter().find(|(_, c)| c.name.contains("Members:")) {
|
||||||
|
let _ = id
|
||||||
|
.edit(
|
||||||
|
&ctx.http,
|
||||||
|
EditChannel::new()
|
||||||
|
.name(format!("{MARKER} 0"))
|
||||||
|
.position(0)
|
||||||
|
.category(Option::<ChannelId>::None),
|
||||||
|
)
|
||||||
|
.await;
|
||||||
|
info!(channel=%id, "old counter migrated to new format");
|
||||||
return Ok(*id);
|
return Ok(*id);
|
||||||
}
|
}
|
||||||
// Create outside category at position 0, deny CONNECT so users can't join, but VIEW remains
|
// Create outside category at position 0, deny CONNECT so users can't join, but VIEW remains
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue