teremock 0.5.5

Fast integration testing library for teloxide Telegram bots
Documentation
use std::sync::Mutex;

use actix_web::web;
use serde::Deserialize;

use super::{
    check_if_message_exists,
    common::{lock_state, RouteError, RouteResult},
    make_telegram_result, BodyChatId,
};
use crate::{server::DeletedMessage, state::State};

#[derive(Debug, Deserialize, Clone)]
pub struct DeleteMessageBody {
    pub chat_id: BodyChatId,
    pub message_id: i32,
}

pub async fn delete_message(
    state: web::Data<Mutex<State>>,
    body: web::Json<DeleteMessageBody>,
) -> RouteResult {
    let mut lock = lock_state(&state)?;
    check_if_message_exists!(lock, body.message_id, result);

    let deleted_message = lock
        .messages
        .delete_message(body.message_id)
        .ok_or_else(|| RouteError::bad_request("Message not found"))?;

    lock.responses.deleted_messages.push(DeletedMessage {
        message: deleted_message,
        bot_request: body.into_inner(),
    });

    Ok(make_telegram_result(true))
}