### Refusals of a command and the owner's warning after repeated refusals. Basis: beta decisions ### D2.4, D2.9 and Q9, R11 I1, I18 and I20, A3 and A4 (grant), Q5 (durations), ### docs/architecture.md sections 4.1 (target and scope) and 4.5. A refusal never repeats the ### command's arguments or the rest of the message (D2.4). refused-not-allowed = You are not allowed to use this command here. # R11 I18: anonymous administrators and channel senders cannot be authorized or audited. refused-anonymous = Commands from anonymous administrators and channels are not accepted. Send the command from your own account. # A4 and S7: no grant, no action. refused-no-grant = { -product } is not activated for this group. # A3 and R11 I1. The exact client steps to convert a group are an open question. refused-basic-group = { -product } works only in supergroups. Convert this group to a supergroup in its settings, then add { -product } again. # docs/architecture.md section 4.1: never pretend to resolve an unseen username. refused-target-unknown = I do not know that user. Reply to one of their messages or give their numeric ID. # D2.2 and Q5: a stated duration cannot exceed the group's period; unsupported durations are refused. refused-duration-too-long = The longest ban in this group is { $duration }. refused-duration-unsupported = That duration cannot be set. Choose another. # RQ-035 A: every mute and restriction has a stated duration; without one the bot asks with # buttons (src/bot/README.md sections 5 and 7). refused-duration-missing = Choose how long, or write the duration after the command, for example 10m, 2h or 7d. # R11 I20 and appendix S15: lost rights block the action and the owner is told in private. refused-missing-rights = { -product } lacks the rights it needs in this group. The owner has been told. # D2.9 and Q9: counted per person and group; default five within ten minutes. owner-warning-refusals = { $count -> [one] One command *[other] { $count } commands } from { $user } { $count -> [one] was *[other] were } refused in { $group } within the last { $minutes -> [one] minute *[other] { $minutes } minutes }. ## Refusals of the permissions module (#28, card 0050) ## Named in src/permissions/messages.ts and mapped from the bounded refusal codes of ## src/permissions/authorize.ts; the English text is the reference text of ## src/permissions/README.md section 10. D2.4 logs the code, never the text. $permission is a ## rendered permissions-flag-* message. Super User is the role name decided with the test plan ## answers (research/BETA-DECISIONS.md). permissions-refused-group-not-managed = This chat is not a group that { -product } manages. permissions-refused-group-inactive = { -product } no longer administers this group. # R11 I18 and Q9: an anonymous administrator or a channel sender is never given an identity. permissions-refused-actor-not-attributable = Commands from an anonymous administrator or a channel cannot be used for this action. permissions-refused-status-unchecked = Your status in the group could not be checked. Please try again. # RQ-025 B: a live role acts whatever the holder's Telegram status, so this refusal reaches only a # restricted, left or kicked person (permissions README section 10 and OQ-M; assumed wording there). permissions-refused-status-insufficient = You cannot do this while you are restricted in this group or are no longer in it. permissions-refused-no-role = You have no role in this group. permissions-refused-flag-missing = Your role in this group does not include { $permission }. permissions-refused-not-all-actions = Only the owner or a Super User can do this. # OQ-1: a Super User reads the customer's ban list across all its groups. permissions-refused-not-customer-wide-reader = Only the owner or a Super User can see all the customer's groups. # The self-edit rule and the subset rule (permissions README section 6). permissions-refused-self-edit = You cannot change your own role. permissions-refused-subset-exceeded = You can only grant permissions you hold in this group yourself. permissions-refused-role-not-found = That role does not exist in this group. permissions-refused-role-not-editable = Built-in roles cannot be changed this way. permissions-refused-owner-role-fixed = The owner role follows the group's creator in Telegram and cannot be granted or taken away here. # OQ-2 B: every Telegram administrator holds the base role automatically. permissions-refused-role-kind-automatic = The base role follows Telegram administrator status and is not granted by hand. permissions-refused-already-assigned = That person already holds this role. permissions-refused-assignment-not-found = That role assignment does not exist. # D2.3: more than one year needs the owner's confirmation; three years needs a prepaid subscription. permissions-refused-owner-confirmation-required = A history period longer than one year needs the owner to confirm the group's purpose. permissions-refused-three-year-not-prepaid = Three years needs a subscription prepaid for the whole period. # D2 build implications and Q5: Telegram carries an end date only up to 366 days. permissions-refused-duration-not-carried = Choose a duration of at least one minute and less than 366 days. # R11 F2 2.6: a custom title is 0 to 16 characters without emoji (permissions README section 8). permissions-refused-name-invalid = A role name is 1 to 16 characters without emoji. permissions-refused-callback-not-issuer = Only the person who sent the command can press this button. ## Refusals the moderation flows decide (#27, cards 0053 and 0057) ## Named in src/bot/messages.ts for the refusal codes of src/moderation/types.ts that had no text ## (LACKING_TEXTS in src/moderation/messages.ts); the English text is the reference text of ## src/bot/README.md section 7. In both cases nothing was changed. # A question or a draft could not be issued, or the service did not answer (unavailable). unavailable = { -product } could not do that right now. Nothing was changed. # The entry a question named was changed, lifted or ended before the button was pressed # (state_conflict). state-conflict = That ban changed since the question was asked. Nothing was changed. # The request was refused before anything was read: a value out of range or a text too long # (invalid_input; src/moderation/README.md section 2, step 1; card 0085). Sending the same # command again does not help, unlike unavailable. invalid-input = That command could not be accepted as written. Nothing was changed.