p4nimau-rust
82 строки · 2.3 Кб
1use reqwest::Client;
2use serde::{Deserialize, Serialize};
3use std::sync::{Arc, Mutex};
4
5mod commands;
6
7use crate::{
8config::AppConfig,
9vkapi::{
10types::{VkMessage},
11GroupClient, UserClient,
12}, bot::commands::*
13};
14
15use self::commands::Command;
16
17#[derive(Serialize, Deserialize, Debug)]
18#[serde(tag = "type", content = "object")]
19#[serde(rename_all = "snake_case")]
20pub enum Event {
21MessageNew(VkMessage),
22// may be new events, but i need only this one
23}
24
25impl Event {
26pub fn handle(
27self,
28http_client: Client,
29cfg: Arc<Mutex<AppConfig>>,
30user_client: Arc<UserClient>,
31group_client: Arc<GroupClient>,
32last_time_post: Arc<Mutex<u64>>,
33) {
34let msg = match self {
35Event::MessageNew(msg) => msg.message,
36};
37dbg!{&msg};
38if msg.text.starts_with('!') {return;}
39if msg.attachments.is_empty() {
40macro_rules! execute {
41($x:expr) => {
42if msg.text.starts_with($x.alias().as_str()) {return $x.execute(msg, cfg, group_client)}
43};
44}
45execute!(Help);
46execute!(GetCfg);
47execute!(GetMyId);
48execute!(AddAdmin);
49execute!(DelAdmin);
50execute!(AddAnecdote);
51execute!(AddCheckOk);
52execute!(AddErrorMsg);
53execute!(AddForbidden);
54execute!(AddSuccess);
55execute!(AddUnresolved);
56execute!(DelAnecdote);
57execute!(DelCheckOk);
58execute!(DelErrorMsg);
59execute!(DelForbidden);
60execute!(DelSuccess);
61execute!(DelUnresolved);
62execute!(EditAnecdote);
63execute!(EditAnecdoteLength);
64execute!(EditCheckOk);
65execute!(EditErrorMsg);
66execute!(EditForbidden);
67execute!(EditSuccess);
68execute!(EditUnresolved);
69execute!(Get);
70execute!(SwitchMain);
71execute!(EditCheckOkPhrase);
72let checkok = CheckOkCommand(cfg.clone());
73execute!(checkok);
74}
75if !cfg.lock().unwrap().main_chat_ids.contains(&msg.peer_id) {
76return;
77}
78tokio::spawn(
79user_client.main_wall_post(http_client, cfg, last_time_post, msg)
80);
81}
82}
83