use crate::{parse_response, responses::events::User, Method};
use serde::Deserialize;
use std::future::IntoFuture;
#[derive(Deserialize, Method, Debug)]
#[method_path("messages.send")]
#[optional]
pub struct SendMessage(pub Option<Vec<_SendMessage>>);
#[derive(Deserialize, Debug)]
pub struct _SendMessage {
pub peer_id: i64,
pub message_id: i32,
pub conversation_message_id: i32,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
}
#[derive(Deserialize, Method, Debug)]
#[method_path("messages.edit")]
#[optional]
pub struct EditMessage(pub i8);
#[derive(Deserialize, Method, Debug)]
#[method_path("messages.sendMessageEventAnswer")]
pub struct SendMessageEventAnswer(pub i8);
#[derive(Deserialize, Method, Debug)]
#[method_path("messages.getConversationMembers")]
pub struct GetConversationMembers {
pub count: u64,
pub items: Vec<Member>,
pub chat_restrictions: Option<ChatRestrictions>,
pub profiles: Vec<User>,
pub groups: Vec<Group>,
}
#[derive(Debug, Deserialize)]
pub struct Member {
pub member_id: i32,
pub invited_by: i32,
pub join_date: u64,
#[serde(default)]
pub is_admin: bool,
#[serde(default)]
pub can_kick: bool,
}
#[derive(Debug, Deserialize)]
pub struct ChatRestrictions {
pub admins_promote_users: bool,
pub only_admins_edit_info: bool,
pub only_admins_edit_pin: bool,
pub only_admins_invite: bool,
pub only_admins_kick: bool,
}
#[derive(Debug, Deserialize)]
pub struct Group {
pub id: i32,
pub name: String,
pub screen_name: String,
pub is_closed: i32,
#[serde(rename = "type")]
pub group_type: String,
pub photo_50: String,
pub photo_100: String,
pub photo_200: String,
}