Servers: Add new system messages.

This commit is contained in:
Paul
2021-06-11 22:12:01 +01:00
parent 03fa923ef4
commit 9be9b76035
7 changed files with 122 additions and 6 deletions

View File

@@ -115,6 +115,20 @@ impl Channel {
let id = self.id();
let messages = get_collection("messages");
// Delete any invites.
get_collection("invites")
.delete_many(
doc! {
"channel": id
},
None,
)
.await
.map_err(|_| Error::DatabaseError {
operation: "delete_many",
with: "invites",
})?;
// Check if there are any attachments we need to delete.
let message_ids = messages
.find(
@@ -190,15 +204,45 @@ impl Channel {
// Remove from server object.
if let Channel::TextChannel { server, .. } = &self {
let server = Ref::from_unchecked(server.clone()).fetch_server().await?;
let mut unset = doc! {};
if let Some(sys) = &server.system_messages {
if let Some(cid) = &sys.user_joined {
if id == cid {
unset.insert("system_messages.user_joined", 1);
}
}
if let Some(cid) = &sys.user_left {
if id == cid {
unset.insert("system_messages.user_left", 1);
}
}
if let Some(cid) = &sys.user_kicked {
if id == cid {
unset.insert("system_messages.user_kicked", 1);
}
}
if let Some(cid) = &sys.user_banned {
if id == cid {
unset.insert("system_messages.user_banned", 1);
}
}
}
get_collection("servers")
.update_one(
doc! {
"_id": server
"_id": server.id
},
doc! {
"$pull": {
"channels": id
}
},
"$unset": unset
},
None,
)