Compare commits

..
14 changed files with 73 additions and 30 deletions
Generated
+9 -9
View File
@@ -3580,7 +3580,7 @@ dependencies = [
[[package]]
name = "revolt-bonfire"
version = "0.6.10"
version = "0.6.11"
dependencies = [
"async-std",
"async-tungstenite",
@@ -3600,7 +3600,7 @@ dependencies = [
[[package]]
name = "revolt-config"
version = "0.6.10"
version = "0.6.11"
dependencies = [
"async-std",
"cached",
@@ -3612,7 +3612,7 @@ dependencies = [
[[package]]
name = "revolt-database"
version = "0.6.10"
version = "0.6.11"
dependencies = [
"async-lock",
"async-recursion",
@@ -3657,7 +3657,7 @@ dependencies = [
[[package]]
name = "revolt-delta"
version = "0.6.10"
version = "0.6.11"
dependencies = [
"async-channel",
"async-std",
@@ -3703,7 +3703,7 @@ dependencies = [
[[package]]
name = "revolt-models"
version = "0.6.10"
version = "0.6.11"
dependencies = [
"indexmap",
"iso8601-timestamp 0.2.11",
@@ -3719,7 +3719,7 @@ dependencies = [
[[package]]
name = "revolt-permissions"
version = "0.6.10"
version = "0.6.11"
dependencies = [
"async-std",
"async-trait",
@@ -3734,7 +3734,7 @@ dependencies = [
[[package]]
name = "revolt-presence"
version = "0.6.10"
version = "0.6.11"
dependencies = [
"async-std",
"log",
@@ -3745,7 +3745,7 @@ dependencies = [
[[package]]
name = "revolt-quark"
version = "0.6.10"
version = "0.6.11"
dependencies = [
"async-lock",
"async-recursion",
@@ -3798,7 +3798,7 @@ dependencies = [
[[package]]
name = "revolt-result"
version = "0.6.10"
version = "0.6.11"
dependencies = [
"revolt_okapi",
"revolt_rocket_okapi",
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "revolt-bonfire"
version = "0.6.10"
version = "0.6.11"
license = "AGPL-3.0-or-later"
edition = "2021"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "revolt-config"
version = "0.6.10"
version = "0.6.11"
edition = "2021"
license = "AGPL-3.0-or-later"
authors = ["Paul Makles <me@insrt.uk>"]
+6 -6
View File
@@ -1,6 +1,6 @@
[package]
name = "revolt-database"
version = "0.6.10"
version = "0.6.11"
edition = "2021"
license = "AGPL-3.0-or-later"
authors = ["Paul Makles <me@insrt.uk>"]
@@ -23,11 +23,11 @@ default = ["mongodb", "async-std-runtime", "tasks"]
[dependencies]
# Core
revolt-config = { version = "0.6.10", path = "../config" }
revolt-result = { version = "0.6.10", path = "../result" }
revolt-models = { version = "0.6.10", path = "../models" }
revolt-presence = { version = "0.6.10", path = "../presence" }
revolt-permissions = { version = "0.6.10", path = "../permissions", features = [
revolt-config = { version = "0.6.11", path = "../config" }
revolt-result = { version = "0.6.11", path = "../result" }
revolt-models = { version = "0.6.11", path = "../models" }
revolt-presence = { version = "0.6.11", path = "../presence" }
revolt-permissions = { version = "0.6.11", path = "../permissions", features = [
"serde",
"bson",
] }
@@ -212,6 +212,7 @@ impl Message {
author: MessageAuthor<'_>,
mut idempotency: IdempotencyKey,
generate_embeds: bool,
allow_mentions: bool,
) -> Result<Message> {
let config = config().await;
@@ -272,10 +273,12 @@ impl Message {
// Parse mentions in message.
let mut mentions = HashSet::new();
if let Some(content) = &data.content {
for capture in RE_MENTION.captures_iter(content) {
if let Some(mention) = capture.get(1) {
mentions.insert(mention.as_str().to_string());
if allow_mentions {
if let Some(content) = &data.content {
for capture in RE_MENTION.captures_iter(content) {
if let Some(mention) = capture.get(1) {
mentions.insert(mention.as_str().to_string());
}
}
}
}
@@ -292,7 +295,7 @@ impl Message {
for ReplyIntent { id, mention } in entries {
let message = db.fetch_message(&id).await?;
if mention {
if mention && allow_mentions {
mentions.insert(message.author.to_owned());
}
@@ -444,6 +444,26 @@ impl<'a> DatabasePermissionQuery<'a> {
..self
}
}
/// Access the underlying user
pub fn user_ref(&self) -> &Option<Cow<User>> {
&self.user
}
/// Access the underlying server
pub fn channel_ref(&self) -> &Option<Cow<Channel>> {
&self.channel
}
/// Access the underlying server
pub fn server_ref(&self) -> &Option<Cow<Server>> {
&self.server
}
/// Access the underlying member
pub fn member_ref(&self) -> &Option<Cow<Member>> {
&self.member
}
}
/// Short-hand for creating a permission calculator
+3 -3
View File
@@ -1,6 +1,6 @@
[package]
name = "revolt-models"
version = "0.6.10"
version = "0.6.11"
edition = "2021"
license = "AGPL-3.0-or-later"
authors = ["Paul Makles <me@insrt.uk>"]
@@ -18,8 +18,8 @@ default = ["serde", "partials"]
[dependencies]
# Core
revolt-config = { version = "0.6.10", path = "../config" }
revolt-permissions = { version = "0.6.10", path = "../permissions" }
revolt-config = { version = "0.6.11", path = "../config" }
revolt-permissions = { version = "0.6.11", path = "../permissions" }
# Utility
regex = "1"
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "revolt-permissions"
version = "0.6.10"
version = "0.6.11"
edition = "2021"
license = "AGPL-3.0-or-later"
authors = ["Paul Makles <me@insrt.uk>"]
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "revolt-presence"
version = "0.6.10"
version = "0.6.11"
edition = "2021"
license = "AGPL-3.0-or-later"
authors = ["Paul Makles <me@insrt.uk>"]
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "revolt-result"
version = "0.6.10"
version = "0.6.11"
edition = "2021"
license = "AGPL-3.0-or-later"
authors = ["Paul Makles <me@insrt.uk>"]
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "revolt-delta"
version = "0.6.10"
version = "0.6.11"
license = "AGPL-3.0-or-later"
authors = ["Paul Makles <paulmakles@gmail.com>"]
edition = "2018"
@@ -1,3 +1,4 @@
use chrono::{Duration, Utc};
use revolt_database::util::permissions::DatabasePermissionQuery;
use revolt_database::{
util::idempotency::IdempotencyKey, util::reference::Reference, Database, User,
@@ -61,6 +62,23 @@ pub async fn message_send(
interactions.validate(db, &permissions).await?;
}
// Disallow mentions for new users (TRUST-0: <12 hours age) in public servers
let allow_mentions = if let Some(server) = query.server_ref() {
if server.discoverable {
if (Utc::now() - ulid::Ulid::from_string(&user.id).unwrap().datetime())
< Duration::hours(12)
{
false
} else {
true
}
} else {
true
}
} else {
true
};
// Create the message
let author: v0::User = user.clone().into(db, Some(&user)).await;
Ok(Json(
@@ -71,6 +89,7 @@ pub async fn message_send(
v0::MessageAuthor::User(&author),
idempotency,
permissions.has_channel_permission(ChannelPermission::SendEmbeds),
allow_mentions,
)
.await?
.into(),
@@ -60,6 +60,7 @@ pub async fn webhook_execute(
v0::MessageAuthor::Webhook(&webhook.into()),
idempotency,
true,
true,
)
.await?
.into(),
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "revolt-quark"
version = "0.6.10"
version = "0.6.11"
edition = "2021"
license = "AGPL-3.0-or-later"