discord-bridge: bot profile, down alert, login-owner account #48
@@ -424,6 +424,15 @@ Skip `guilds bridge`: it sets the guild to create a Matrix room for every channe
|
|||||||
old room). The relay webhook stays with the channel. Keep `@discordbot` at the default power level so it
|
old room). The relay webhook stays with the channel. Keep `@discordbot` at the default power level so it
|
||||||
can't overwrite the room's name and icon with the Discord channel's.
|
can't overwrite the room's name and icon with the Discord channel's.
|
||||||
|
|
||||||
|
**Bot profile:** `@discordbot` shows as "Discord Bridge" with the Discord logo
|
||||||
|
(`discord-bridge/bot-avatar.png`). To reapply it: `pct exec 151 -- bash /opt/matrix-config/discord-bridge/set-bot-profile.sh`.
|
||||||
|
|
||||||
|
**Who the Discord bot login belongs to:** whichever Matrix account ran `login-token bot` sends its own
|
||||||
|
messages to Discord *as the bot* ("matrix-bridge APP"), not through the relay webhook. So it lives on a
|
||||||
|
dedicated account, `@discord-relay:matrix.lotusguild.org`, which never chats. Everyone else, admins
|
||||||
|
included, stays logged out of the bridge and is relayed under their own name and avatar. Logging the
|
||||||
|
bot in on one account automatically logs out any other account that had it.
|
||||||
|
|
||||||
**Rotating the bot token:** reset it in the Developer Portal, then DM the bridge bot `logout` and
|
**Rotating the bot token:** reset it in the Developer Portal, then DM the bridge bot `logout` and
|
||||||
`login-token bot <new token>`.
|
`login-token bot <new token>`.
|
||||||
|
|
||||||
@@ -1006,6 +1015,7 @@ Checklist in this file.
|
|||||||
| PostgreSQL Down | `pg_up` < 1 for 2m | critical |
|
| PostgreSQL Down | `pg_up` < 1 for 2m | critical |
|
||||||
| LiveKit Down | `up{job="livekit"}` < 1 for 2m | critical |
|
| LiveKit Down | `up{job="livekit"}` < 1 for 2m | critical |
|
||||||
| Hookshot Down | `up{job="hookshot"}` < 1 for 2m | critical |
|
| Hookshot Down | `up{job="hookshot"}` < 1 for 2m | critical |
|
||||||
|
| Discord Bridge Down | `node_systemd_unit_state{name="mautrix-discord.service",state="active"}` < 1 (or no data) for 3m | critical |
|
||||||
| Draupnir Down | `up{job="draupnir-node"}` < 0.5 for 2m | critical |
|
| Draupnir Down | `up{job="draupnir-node"}` < 0.5 for 2m | critical |
|
||||||
| PG Connection Saturation | connections > 80% of max for 5m | warning |
|
| PG Connection Saturation | connections > 80% of max for 5m | warning |
|
||||||
| Federation Queue Backing Up | pending PDUs > 100 for 10m | warning |
|
| Federation Queue Backing Up | pending PDUs > 100 for 10m | warning |
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
@@ -61,7 +61,7 @@ appservice:
|
|||||||
username: discordbot
|
username: discordbot
|
||||||
# Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty
|
# Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty
|
||||||
# to leave display name/avatar as-is.
|
# to leave display name/avatar as-is.
|
||||||
displayname: Discord bridge bot
|
displayname: Discord Bridge
|
||||||
avatar: mxc://maunium.net/nIdEykemnwdisvHbpxflpDlC
|
avatar: mxc://maunium.net/nIdEykemnwdisvHbpxflpDlC
|
||||||
|
|
||||||
# Whether or not to receive ephemeral events via appservice transactions.
|
# Whether or not to receive ephemeral events via appservice transactions.
|
||||||
|
|||||||
Executable
+34
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Gives @discordbot the Discord logo and the display name "Discord Bridge".
|
||||||
|
# Run inside LXC 151 (from the Proxmox node):
|
||||||
|
# pct exec 151 -- bash /opt/matrix-config/discord-bridge/set-bot-profile.sh
|
||||||
|
# Uploads bot-avatar.png as the bridge bot, points config.yaml at it and
|
||||||
|
# restarts the bridge, which applies the profile on startup. Safe to re-run.
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
DIR=/opt/mautrix-discord
|
||||||
|
CFG="$DIR/config.yaml"
|
||||||
|
AVATAR=/opt/matrix-config/discord-bridge/bot-avatar.png
|
||||||
|
BOT="@discordbot:matrix.lotusguild.org"
|
||||||
|
|
||||||
|
AS_TOKEN=$(awk '/^as_token:/ {gsub(/"/, "", $2); print $2; exit}' "$DIR/registration.yaml")
|
||||||
|
[ -n "$AS_TOKEN" ] || { echo "no as_token in $DIR/registration.yaml" >&2; exit 1; }
|
||||||
|
|
||||||
|
MXC=$(curl -fsS -X POST \
|
||||||
|
-H "Authorization: Bearer $AS_TOKEN" \
|
||||||
|
-H "Content-Type: image/png" \
|
||||||
|
--data-binary "@$AVATAR" \
|
||||||
|
"http://127.0.0.1:8008/_matrix/media/v3/upload?filename=discord.png&user_id=${BOT/@/%40}" |
|
||||||
|
python3 -c 'import json, sys; print(json.load(sys.stdin)["content_uri"])')
|
||||||
|
echo "uploaded $MXC"
|
||||||
|
|
||||||
|
# Only the bot block's two lines; the 8-space indent is unique to appservice.bot.
|
||||||
|
sed -i -E \
|
||||||
|
-e 's|^( displayname: ).*$|\1Discord Bridge|' \
|
||||||
|
-e "s|^( avatar: )mxc://.*$|\1$MXC|" \
|
||||||
|
"$CFG"
|
||||||
|
grep -A7 '^ bot:' "$CFG"
|
||||||
|
|
||||||
|
systemctl restart mautrix-discord
|
||||||
|
sleep 3
|
||||||
|
systemctl is-active mautrix-discord
|
||||||
Reference in New Issue
Block a user