Configurable @room ping discord roles

This commit is contained in:
2026-10-03 17:53:21 +02:00
parent 77cc1e6eae
commit 0b888cfbf2
8 changed files with 82 additions and 6 deletions
+50
View File
@@ -188,6 +188,56 @@ block body
td(colspan="3")
.s-empty-state No channels linked between Discord and Matrix yet...
if space_id && linkedChannelsWithDetails.length
- const customPingRooms = linkedChannelsWithDetails.filter(row => row.ping_role_id)
- const defaultPingRooms = linkedChannelsWithDetails.filter(row => !row.ping_role_id)
- const pingRoles = [...guild.roles].filter(role => role.id !== guild_id).sort((a, b) => b.position - a.position)
h3.mt32.fs-category#room-notifications Room notifications
.s-card
p.s-description.mt0 Choose which Discord role receives Matrix @room notifications
each row in customPingRooms
.d-flex.ai-center.g16.mb8
label.s-label.fl-grow1(for="ping-role-" + row.channel.id)= "#" + row.channel.name
form(method="post" action=rel("/api/room-ping-role"))
input(type="hidden" name="guild_id" value=guild_id)
input(type="hidden" name="channel_id" value=row.channel.id)
.s-select
select(name="ping_role_id" id="ping-role-" + row.channel.id onchange="this.form.requestSubmit()")
if !pingRoles.some(role => role.id === row.ping_role_id)
option(value=row.ping_role_id selected disabled) Deleted role (choose a replacement)
each role in pingRoles
option(value=role.id selected=row.ping_role_id === role.id)= "@" + role.name
noscript
button.s-btn.s-btn__outlined.mt8(type="submit") Save
form(method="post" action=rel("/api/room-ping-role"))
input(type="hidden" name="guild_id" value=guild_id)
input(type="hidden" name="channel_id" value=row.channel.id)
input(type="hidden" name="ping_role_id" value="")
button.s-btn.s-btn__danger.s-btn__outlined(type="submit" aria-label="Remove custom role for #" + row.channel.name) Remove
if defaultPingRooms.length && pingRoles.length
details.mt16
summary.s-label.cursor-pointer Add custom role
form.mt12(method="post" action=rel("/api/room-ping-role"))
input(type="hidden" name="guild_id" value=guild_id)
.d-grid.grid__2.g8(class="sm:grid__1")
.wmn0
label.s-label(for="ping-role-channel") Channel
.s-select
select.w100.box-border#ping-role-channel(name="channel_id" required)
option(value="" selected disabled) Choose a channel
each row in defaultPingRooms
- const parent = discord.channels.get(row.channel.parent_id)
option(value=row.channel.id)= "#" + row.channel.name + (parent ? " - " + parent.name : "")
.wmn0
label.s-label(for="ping-role-new") Notify role
.s-select
select.w100.box-border#ping-role-new(name="ping_role_id" required)
option(value="" selected disabled) Choose a role
each role in pingRoles
option(value=role.id)= "@" + role.name
button.s-btn.s-btn__filled.mt8(type="submit") Add
h3.fs-category.mt32 Auto-create
.s-card.d-grid.px0
form.d-flex.ai-center.g16