Files
tipibot/strings/member.py
Rene Arumetsa ce1ed28904 refactor(teams): move team-role sync to the economy/community bot
The team-role feature was aimed at the wrong bot. Tournament participants
live in the economy/community guild, but team-role sync had been bolted onto
the dev bot's roster sync (sync_member), which bails out for anyone missing
from the internal member sheet - so it could never reach its actual audience.

Decouple it: keep the (roster-independent) team-sheet parsing, pull the team
wiring off the dev/member-sync path, and re-home it on the economy bot.

- core/member_sync: revert sync_member to add-only (drop team block +
  SyncResult.roles_removed); add roster-independent sync_team_role and a
  whole-guild sync_all_team_roles returning a reporting summary. Still only
  ever touches role NAMES present in the team sheet.
- commands/economy_team_commands: new admin-only /teamsync command.
- bot.py: hourly team_sync_hourly task (economy-only, no-op unless
  TEAM_SHEET_ID is set; first tick at boot covers startup load); register
  /teamsync under the economy profile; drop the dev-side startup load.
- commands/dev_member_commands: /check no longer refreshes teams or reports
  removed roles.
- strings + .env.example: TEAMSYNC_UI, CMD[teamsync], document TEAM_SHEET_ID.
- tests: retarget sync tests to sync_team_role; add sync_all_team_roles case.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R6JZkyszyDFuFtk25WBbcR
2026-08-28 15:04:23 +03:00

117 lines
4.9 KiB
Python
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Member sync, /check, birthdays, channel + economy-setup admin UI.
Auto-split from the original strings.py; edit strings here.
"""
__all__ = [
'MEMBER_UI',
'MEMBER_FIELDS',
'ECONOMYSETUP_UI',
'CHANNEL_UI',
'BIRTHDAY_UI',
'BIRTHDAY_MONTHS',
'CHECK_UI',
'TEAMSYNC_UI',
]
# ---------------------------------------------------------------------------
# /allowchannel /denychannel /channels UI strings
# ---------------------------------------------------------------------------
MEMBER_UI: dict[str, str] = {
"title": "👤 {name}",
"age_field": "Vanus",
"age_val": "{age}a",
}
MEMBER_FIELDS: list[tuple[str, str]] = [
("Nimi", "Nimi"),
("Organisatsioon", "Organisatsioon"),
("Valdkond", "Valdkond"),
("Roll", "Roll"),
("Sünnipäev", "Sünnipäev"),
("Meil", "Meil"),
("Telefon", "Telefon"),
("Discord", "Discord"),
("User ID", "Kasutaja ID"),
("Discordis synced?", "Sünkroniseeritud"),
("Groupi lisatud?", "Grupis"),
]
ECONOMYSETUP_UI: dict[str, str] = {
"created_field": "✅ Loodud",
"existing_field": "♻️ Juba olemas",
"footer": "Rollid on nüüd boti rolli all õiges järjekorras.",
}
CHANNEL_UI: dict[str, str] = {
"already_allowed": " {channel} on juba lubatud kanalite nimekirjas.",
"added": "{channel} lisatud. Bot vastab käskudele nüüd ainult lubatud kanalites.",
"not_in_list": " {channel} pole lubatud kanalite nimekirjas.",
"removed": "{channel} eemaldatud lubatud kanalite nimekirjast.",
"removed_last": "{channel} eemaldatud. Lubatud kanalite nimekiri on nüüd tühi - bot vastab kõikides kanalites.",
"list_title": "📋 Lubatud kanalid",
"list_empty": "Lubatud kanalite nimekiri on **tühi** - bot vastab käskudele kõikides kanalites.\n\nKasuta `/allowchannel`, et piirata kindlatele kanalitele.",
"list_filled": "Bot vastab käskudele ainult nendes kanalites:\n\n{lines}\n\n-# Kasuta `/allowchannel` / `/denychannel` nimekirja muutmiseks.",
}
# ---------------------------------------------------------------------------
# /birthdays UI
# ---------------------------------------------------------------------------
BIRTHDAY_UI: dict[str, str] = {
"no_entries": "Sellel kuul sünnipäevi ei ole.",
"today": "täna 🎉",
"tomorrow": "homme",
"in_days": "{days}p pärast",
"footer": "Leht {month}/12 · {month_name}",
}
BIRTHDAY_MONTHS: list[str] = [
"Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni",
"Juuli", "August", "September", "Oktoober", "November", "Detsember",
]
# ---------------------------------------------------------------------------
# /check summary strings
# ---------------------------------------------------------------------------
CHECK_UI: dict[str, str] = {
"sheet_stats_header": "📊 **Tabeli statistika** - {total} liiget",
"stat_ok": "✅ **{label}**: kõik täidetud",
"stat_warn": "⚠️ **{label}** puudub ({count}): {names}{more}",
"stat_more": " (+{count} veel)",
"stat_uid": "Kasutaja ID",
"stat_discord": "Discordi kasutajanimi",
"stat_bday": "Sünnipäev",
"no_name": "(no name)",
"done": "**Kontroll lõpetatud!**",
"already_ok": "✅ Juba korras: {count}",
"fixed": "🔧 Parandatud: {count}",
"not_found": "❓ Pole tabelis: {count}",
"bday_pings": "🎂 Sünnipäeva teavitused: {count}",
"errors": "⚠️ Vead: {count}",
"details_header": "**Üksikasjad:**",
"details_more": "... ja {count} rohkem",
"detail_error": "⚠️ {error}",
"detail_nickname": "hüüdnimi",
"detail_roles_added": "+rollid: {roles}",
"detail_changed": "🔧 **{name}**: {parts}",
"ids_filled": "\n🔑 Täideti **{count}** puuduvat kasutaja ID-d.",
}
# ---------------------------------------------------------------------------
# /teamsync UI strings (tournament team-role sync from the registration sheet)
# ---------------------------------------------------------------------------
TEAMSYNC_UI: dict[str, str] = {
"disabled": "⚠️ Tiimide sünkroonimine on välja lülitatud (TEAM_SHEET_ID puudub).",
"refresh_error": "⚠️ Registreerimistabeli laadimine ebaõnnestus: {error}",
"done": "**Tiimide sünkroonimine lõpetatud!**",
"scanned": "👥 Kontrollitud liikmeid: {count}",
"assigned": "✅ Tiimirolle antud: {count}",
"removed": " Tiimirolle eemaldatud: {count}",
"created": "🆕 Loodud uusi tiimirolle: {roles}",
"errors": "⚠️ Vead: {count}",
"no_changes": "✨ Kõik tiimirollid olid juba korras.",
"changes_header": "**Muudatused:**",
"changes_more": "... ja {count} rohkem",
}