Restrict bots from creating servers, groups, acking messages, and making friends.

This commit is contained in:
Paul
2021-08-11 20:16:11 +01:00
parent 084d71f050
commit 93610ebbc3
16 changed files with 65 additions and 5 deletions

View File

@@ -9,6 +9,10 @@ use rocket::serde::json::Value;
#[put("/<username>/friend")]
pub async fn req(user: User, username: String) -> Result<Value> {
if user.bot.is_some() {
return Err(Error::IsBot)
}
let col = get_collection("users");
let doc = col
.find_one(

View File

@@ -8,8 +8,11 @@ use rocket::serde::json::Value;
#[put("/<target>/block")]
pub async fn req(user: User, target: Ref) -> Result<Value> {
let col = get_collection("users");
if user.bot.is_some() {
return Err(Error::IsBot)
}
let col = get_collection("users");
let target = target.fetch_user().await?;
match get_relationship(&user, &target.id) {

View File

@@ -32,6 +32,10 @@ pub async fn req(
data: Json<Data>,
_ignore_id: String,
) -> Result<()> {
if user.bot.is_some() {
return Err(Error::IsBot)
}
data.validate()
.map_err(|error| Error::FailedValidation { error })?;

View File

@@ -1,9 +1,13 @@
use crate::database::*;
use crate::util::result::Result;
use crate::util::result::{Error, Result};
use rocket::serde::json::Value;
#[get("/<target>/relationship")]
pub async fn req(user: User, target: Ref) -> Result<Value> {
if user.bot.is_some() {
return Err(Error::IsBot)
}
Ok(json!({ "status": get_relationship(&user, &target.id) }))
}

View File

@@ -1,10 +1,14 @@
use crate::database::*;
use crate::util::result::Result;
use crate::util::result::{Error, Result};
use rocket::serde::json::Value;
#[get("/relationships")]
pub async fn req(user: User) -> Result<Value> {
if user.bot.is_some() {
return Err(Error::IsBot)
}
Ok(if let Some(vec) = user.relations {
json!(vec)
} else {

View File

@@ -8,8 +8,11 @@ use rocket::serde::json::Value;
#[delete("/<target>/friend")]
pub async fn req(user: User, target: Ref) -> Result<Value> {
let col = get_collection("users");
if user.bot.is_some() {
return Err(Error::IsBot)
}
let col = get_collection("users");
let target = target.fetch_user().await?;
match get_relationship(&user, &target.id) {

View File

@@ -8,6 +8,10 @@ use rocket::serde::json::Value;
#[delete("/<target>/block")]
pub async fn req(user: User, target: Ref) -> Result<Value> {
if user.bot.is_some() {
return Err(Error::IsBot)
}
let col = get_collection("users");
let target = target.fetch_user().await?;