nobot fix

This commit is contained in:
Ondřej Hruška 2022-11-02 09:28:40 +01:00
parent e77c8157ae
commit 5389031d8c
4 changed files with 10 additions and 5 deletions

View file

@ -1,5 +1,8 @@
# Changelog # Changelog
## v0.4.5
- Ignore #nobot in bio if the user is also a member
## v0.4.4 ## v0.4.4
- Fix some failing tests - Fix some failing tests
- Lowercase the domain when normalizing an account - Lowercase the domain when normalizing an account

View file

@ -1,6 +1,6 @@
[package] [package]
name = "fedigroups" name = "fedigroups"
version = "0.4.4" version = "0.4.5"
authors = ["Ondřej Hruška <ondra@ondrovo.com>"] authors = ["Ondřej Hruška <ondra@ondrovo.com>"]
edition = "2018" edition = "2018"
publish = false publish = false

View file

@ -8,6 +8,8 @@ pub enum GroupError {
UserIsBanned, UserIsBanned,
#[error("User opted out from the group")] #[error("User opted out from the group")]
UserOptedOut, UserOptedOut,
#[error("User opted out from the group using #nobot")]
UserOptedOutNobot,
#[error("Server could not be banned because there are admin users on it")] #[error("Server could not be banned because there are admin users on it")]
AdminsOnServer, AdminsOnServer,
#[error("Config error: {0}")] #[error("Config error: {0}")]

View file

@ -773,11 +773,11 @@ impl<'a> ProcessMention<'a> {
// Try to unfollow // Try to unfollow
let account = self.client.get_account(id).await?; let account = self.client.get_account(id).await?;
let bio = utils::strip_html(&account.note); let bio = utils::strip_html(&account.note);
if RE_NOBOT_TAG.is_match(&bio) {
// #nobot
Err(GroupError::UserOptedOut)
} else {
let normalized = normalize_acct(&account.acct, &self.group_acct)?; let normalized = normalize_acct(&account.acct, &self.group_acct)?;
if RE_NOBOT_TAG.is_match(&bio) && !self.config.is_member(&normalized) {
// #nobot in a non-member account
Err(GroupError::UserOptedOutNobot)
} else {
if self.config.is_banned(&normalized) { if self.config.is_banned(&normalized) {
Err(GroupError::UserIsBanned) Err(GroupError::UserIsBanned)
} else if self.config.is_optout(&normalized) { } else if self.config.is_optout(&normalized) {