kick all users in one server from chat

kick all users in one server from chat


Набашевал скрипт удаляющий из matrix чата всех участников на одном домене (с исключением одного дорогого сердцу юзверя):

#!/usr/bin/env bash

ROOM_ID="!XXXXXXXXXXXXXXXXXX:matrix.org"
ACCESS_TOKEN="НЕСКАЖУК"
TARGET_DOMAIN="XXX.YYY.ZZZ"
EXCLUDE_USER="@ТВОЙДРУГ:XXX.YYY.ZZZ"
REASON="Bulk removal by admin"

curl -s "https://matrix.itrus.su/_synapse/admin/v1/rooms/${ROOM_ID}/members" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" | \
jq -r ".members[] | select(endswith(\":${TARGET_DOMAIN}\"))" | \
grep -v "^${EXCLUDE_USER}$" | \
while read user_id; do
echo "Kicking $user_id..."
sleep 1
curl -s -X POST "https://matrix.itrus.su/_matrix/client/r0/rooms/${ROOM_ID}/kick" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d "{\"user_id\": \"$user_id\", \"reason\": \"${REASON}\"}"

sleep 0.1
done

echo "Done!"

Знаю что есть админботы с подобным функционалом, но мне нужно было разовое решение побыстрому и наколенке.

Содержание