Add event type handling
This commit is contained in:
parent
a7afe7b570
commit
c4e7659e30
@ -102,11 +102,6 @@ export async function handle(rcMessage: RcMessage): Promise<void> {
|
||||
return
|
||||
}
|
||||
|
||||
if (rcMessage.t) {
|
||||
log.warn(`Message ${rcMessage._id} is of type ${rcMessage.t}, skipping.`)
|
||||
return
|
||||
}
|
||||
|
||||
const room_id = await getRoomId(rcMessage.rid)
|
||||
if (!room_id) {
|
||||
log.warn(
|
||||
@ -115,6 +110,71 @@ export async function handle(rcMessage: RcMessage): Promise<void> {
|
||||
return
|
||||
}
|
||||
|
||||
if (rcMessage.t) {
|
||||
switch (rcMessage.t) {
|
||||
case 'ru': // User removed by
|
||||
case 'ul': // User left
|
||||
case 'ult': // User left team
|
||||
case 'removed-user-from-team': // Removed user from team
|
||||
log.info(
|
||||
`Message ${rcMessage._id} is of type ${rcMessage.t}, removing member ${rcMessage.msg} from room ${room_id}`
|
||||
)
|
||||
|
||||
const members = (
|
||||
await axios.get(
|
||||
`/_matrix/client/v3/rooms/${room_id}/joined_members`,
|
||||
formatUserSessionOptions(applicationServiceToken)
|
||||
)
|
||||
).data.joined
|
||||
if (!members) {
|
||||
const errorMessage = `Could not determine members of room ${room_id}, aborting`
|
||||
log.error(errorMessage)
|
||||
throw new Error(errorMessage)
|
||||
}
|
||||
|
||||
const matrixUser =
|
||||
Object.keys(members).find((key) =>
|
||||
key.includes(rcMessage.msg.toLowerCase())
|
||||
) || ''
|
||||
|
||||
const userMapping = await getMappingByMatrixId(matrixUser)
|
||||
if (!userMapping?.accessToken) {
|
||||
log.warn(
|
||||
`Could not get access token for ${rcMessage.msg}, maybe user is not a member, skipping.`
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
log.http(`User ${matrixUser} leaves room ${room_id}`)
|
||||
await axios.post(
|
||||
`/_matrix/client/v3/rooms/${room_id}/leave`,
|
||||
{ reason: `Event type ${rcMessage.t}` },
|
||||
formatUserSessionOptions(userMapping.accessToken)
|
||||
)
|
||||
return
|
||||
|
||||
case 'uj': // User joined channel
|
||||
case 'ujt': // User joined team
|
||||
case 'ut': // User joined conversation
|
||||
|
||||
case 'au': // User added by
|
||||
case 'added-user-to-team': // Added user to team
|
||||
case 'r': // Room name changed
|
||||
case 'rm': // Message removed
|
||||
log.info(
|
||||
`Message ${rcMessage._id} is of type ${rcMessage.t}, for which Rocket.Chat does not provide the initial state information, skipping.`
|
||||
)
|
||||
return
|
||||
|
||||
case 'user-muted': // User muted by
|
||||
default:
|
||||
log.warn(
|
||||
`Message ${rcMessage._id} is of unhandled type ${rcMessage.t}, skipping.`
|
||||
)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
const user_id = await getUserId(rcMessage.u._id)
|
||||
if (!user_id) {
|
||||
log.warn(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user