"新規登録を受け付ける"のチェックを外していても新規登録できる・・・
と思ったら気のせいでした。

サイドバーにある"n名のユーザ"がトップページ以外はそのコミュニティを指しているのと、13名もいることに違和感を感じたのが勘違いの原因でした。
それと、登録ページ自体は生きていて、登録を押したら受け付けていませんと表示される仕様なのも勘違いを加速させました。

で、勘違いから生まれたのが、新規登録者を通知するシェルスクリプト。

流れはこうです。

  1. docker excec でユーザ名を取得するクエリを叩く
  2. 1日1回動かすものとして、24時間以内に登録されたユーザを探す
  3. Discordに通知する

ユーザ名を取得するのは本当は絞った方がいいんでしょうが、まあそうそう人増えないのでとりあえずこのままで。

あとはcronで適当に。

こんな書き方でいいのかわからないけど、まあ雑ですが許して・・。

#!/bin/bash

CHECK_DATE=`date +%s --date '1 day ago'`
WEBHOOK=""

USER_LIST=(`docker exec -i lemmy_postgres_1 psql -U lemmy -c "WITH tmp AS (SELECT id,name,display_name,banned,published,actor_id FROM person WHERE local = true ORDER BY published DESC) SELECT array_to_json(array_agg(tmp)) FROM tmp"`)

USER_LIST="${USER_LIST[@]:2:((${#USER_LIST[@]}-4))}"
USER_SUM=`echo $USER_LIST | jq -r '. | length-1'`

for i in $( seq 0 $(($USER_SUM - 1)) ); do
  PB_DATE=`echo $USER_LIST | jq -r ".[$i].published"`
  PB_DATE=`date -u -d $PB_DATE +%s`
  USER_NAME=`echo $USER_LIST | jq -r ".[$i].name"`
  USER_URL=`echo $USER_LIST | jq -r ".[$i].actor_id"`
  if [ $CHECK_DATE -lt $PB_DATE ]; then
    curl -s -H 'Content-Type: application/json' -X POST -d '{"content":"【Lemmyに新規登録がありました】\nユーザ名: '"${USER_NAME}"' '"${USER_URL}"'\n登録日: '"`date -d @${PB_DATE} +"""%Y-%m-%d %H:%M"""`"'"}' $WEBHOOK
  fi

done