feat: Checks only new users configuration
Signed-off-by: Awiteb <a@4rs.nl>
This commit is contained in:
parent
9b533e7ea3
commit
f68ce0c5bd
3 changed files with 14 additions and 5 deletions
|
@ -143,12 +143,15 @@ pub struct Exprs {
|
||||||
pub struct Config {
|
pub struct Config {
|
||||||
/// Dry run, without banning the users
|
/// Dry run, without banning the users
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub dry_run: bool,
|
pub dry_run: bool,
|
||||||
|
/// Only checks new users
|
||||||
|
#[serde(default)]
|
||||||
|
pub only_new_users: bool,
|
||||||
/// Configuration for the forgejo guard itself
|
/// Configuration for the forgejo guard itself
|
||||||
pub forgejo: Forgejo,
|
pub forgejo: Forgejo,
|
||||||
/// Configuration of the telegram bot
|
/// Configuration of the telegram bot
|
||||||
pub telegram: Telegram,
|
pub telegram: Telegram,
|
||||||
/// The expressions, which are used to determine the actions
|
/// The expressions, which are used to determine the actions
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub expressions: Exprs,
|
pub expressions: Exprs,
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,7 @@ async fn try_main() -> error::GuardResult<()> {
|
||||||
|
|
||||||
tracing::info!("The instance: {}", config.forgejo.instance);
|
tracing::info!("The instance: {}", config.forgejo.instance);
|
||||||
tracing::info!("Dry run: {}", config.dry_run);
|
tracing::info!("Dry run: {}", config.dry_run);
|
||||||
|
tracing::info!("Only new users: {}", config.only_new_users);
|
||||||
tracing::debug!("The config exprs: {:#?}", config.expressions);
|
tracing::debug!("The config exprs: {:#?}", config.expressions);
|
||||||
|
|
||||||
rust_i18n::set_locale(config.telegram.lang.as_str());
|
rust_i18n::set_locale(config.telegram.lang.as_str());
|
||||||
|
|
|
@ -98,6 +98,7 @@ async fn check_new_users(
|
||||||
sus_sender: Sender<ForgejoUser>,
|
sus_sender: Sender<ForgejoUser>,
|
||||||
ban_sender: Sender<ForgejoUser>,
|
ban_sender: Sender<ForgejoUser>,
|
||||||
) {
|
) {
|
||||||
|
let is_first_fetch = last_user_id.load(Ordering::Relaxed) == 0;
|
||||||
match get_new_users(
|
match get_new_users(
|
||||||
&request_client,
|
&request_client,
|
||||||
last_user_id.load(Ordering::Relaxed),
|
last_user_id.load(Ordering::Relaxed),
|
||||||
|
@ -112,7 +113,11 @@ async fn check_new_users(
|
||||||
|
|
||||||
if let Some(uid) = new_users.iter().max_by_key(|u| u.id).map(|u| u.id) {
|
if let Some(uid) = new_users.iter().max_by_key(|u| u.id).map(|u| u.id) {
|
||||||
tracing::debug!("New last user id: {uid}");
|
tracing::debug!("New last user id: {uid}");
|
||||||
last_user_id.store(uid, Ordering::Relaxed)
|
last_user_id.store(uid, Ordering::Relaxed);
|
||||||
|
}
|
||||||
|
|
||||||
|
if config.only_new_users && is_first_fetch {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for user in new_users {
|
for user in new_users {
|
||||||
|
|
Loading…
Reference in a new issue