mirror of
https://github.com/house-of-vanity/desubot.git
synced 2025-07-08 21:04:07 +00:00
Fix add_conf
This commit is contained in:
@ -32,7 +32,7 @@ pub(crate) fn update_scheme() -> Result<()> {
|
|||||||
conn.execute(t, params![])?;
|
conn.execute(t, params![])?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
info!("Scheme updated.");
|
info!("Database schema updated.");
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,7 +162,7 @@ pub(crate) async fn add_conf(message: Message) -> Result<(), Error> {
|
|||||||
id = :id",
|
id = :id",
|
||||||
)?;
|
)?;
|
||||||
stmt.execute_named(&[(":id", &update.id.to_string()), (":title", &update.title)])?;
|
stmt.execute_named(&[(":id", &update.id.to_string()), (":title", &update.title)])?;
|
||||||
//println!("Conf {:?} updated: {:?}", update.title, get_conf(update.id));
|
info!("Conf {:?} updated: {:?}", update.title, get_conf(update.id));
|
||||||
}
|
}
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
let update = Conf {
|
let update = Conf {
|
||||||
@ -173,7 +173,7 @@ pub(crate) async fn add_conf(message: Message) -> Result<(), Error> {
|
|||||||
let unix_time = utils::unixtime().await;
|
let unix_time = utils::unixtime().await;
|
||||||
|
|
||||||
let mut stmt = conn.prepare_cached(
|
let mut stmt = conn.prepare_cached(
|
||||||
"UPDATE conf
|
"INSERT OR IGNORE INTO conf
|
||||||
SET
|
SET
|
||||||
title = :title,
|
title = :title,
|
||||||
date = :date
|
date = :date
|
||||||
|
113
src/handlers.rs
Normal file
113
src/handlers.rs
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
use telegram_bot::*;
|
||||||
|
use crate::mystem::MyStem;
|
||||||
|
use crate::errors;
|
||||||
|
use crate::db;
|
||||||
|
use crate::commands;
|
||||||
|
use crate::utils;
|
||||||
|
|
||||||
|
|
||||||
|
pub async fn handler(
|
||||||
|
api: Api,
|
||||||
|
message: Message,
|
||||||
|
token: String,
|
||||||
|
mystem: &mut MyStem,
|
||||||
|
me: User,
|
||||||
|
) -> Result<(), errors::Error> {
|
||||||
|
|
||||||
|
match message.kind {
|
||||||
|
MessageKind::Text { ref data, .. } => {
|
||||||
|
let title = utils::get_title(&message);
|
||||||
|
info!(
|
||||||
|
"<{}({})>[{}({})]: {}",
|
||||||
|
&message.chat.id(),
|
||||||
|
title,
|
||||||
|
&message.from.id,
|
||||||
|
&message.from.first_name,
|
||||||
|
data
|
||||||
|
);
|
||||||
|
db::add_sentence(&message, mystem).await?;
|
||||||
|
match data.as_str() {
|
||||||
|
"/here" => commands::here(api, message).await?,
|
||||||
|
"/top" => commands::top(api, message).await?,
|
||||||
|
"/stat" => commands::top(api, message).await?,
|
||||||
|
"/markov_all" => commands::markov_all(api, message).await?,
|
||||||
|
_ => (),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MessageKind::Photo { ref caption, .. } => {
|
||||||
|
let title = utils::get_title(&message);
|
||||||
|
info!(
|
||||||
|
"<{}({})>[{}({})]: *PHOTO* {}",
|
||||||
|
&message.chat.id(),
|
||||||
|
title,
|
||||||
|
&message.from.id,
|
||||||
|
&message.from.first_name,
|
||||||
|
caption.clone().unwrap_or("NO_TITLE".to_string())
|
||||||
|
);
|
||||||
|
utils::get_files(api, message, token).await?;
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageKind::Document { ref caption, .. } => {
|
||||||
|
let title = utils::get_title(&message);
|
||||||
|
info!(
|
||||||
|
"<{}({})>[{}({})]: *DOCUMENT* {}",
|
||||||
|
&message.chat.id(),
|
||||||
|
title,
|
||||||
|
&message.from.id,
|
||||||
|
&message.from.first_name,
|
||||||
|
caption.clone().unwrap_or("NO_TITLE".to_string())
|
||||||
|
);
|
||||||
|
utils::get_files(api, message, token).await?;
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageKind::Sticker { .. } => {
|
||||||
|
let title = utils::get_title(&message);
|
||||||
|
info!(
|
||||||
|
"<{}({})>[{}({})]: *STICKER*",
|
||||||
|
&message.chat.id(),
|
||||||
|
title,
|
||||||
|
&message.from.id,
|
||||||
|
&message.from.first_name,
|
||||||
|
);
|
||||||
|
utils::get_files(api, message, token).await?;
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageKind::Voice { .. } => {
|
||||||
|
let title = utils::get_title(&message);
|
||||||
|
info!(
|
||||||
|
"<{}({})>[{}({})]: *VOICE*",
|
||||||
|
&message.chat.id(),
|
||||||
|
title,
|
||||||
|
&message.from.id,
|
||||||
|
&message.from.first_name,
|
||||||
|
);
|
||||||
|
utils::get_files(api, message, token).await?;
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageKind::Video { .. } => {
|
||||||
|
let title = utils::get_title(&message);
|
||||||
|
info!(
|
||||||
|
"<{}({})>[{}({})]: *VIDEO*",
|
||||||
|
&message.chat.id(),
|
||||||
|
title,
|
||||||
|
&message.from.id,
|
||||||
|
&message.from.first_name,
|
||||||
|
);
|
||||||
|
utils::get_files(api, message, token).await?;
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageKind::VideoNote { .. } => {
|
||||||
|
let title = utils::get_title(&message);
|
||||||
|
info!(
|
||||||
|
"<{}({})>[{}({})]: *VIDEO_NOTE*",
|
||||||
|
&message.chat.id(),
|
||||||
|
title,
|
||||||
|
&message.from.id,
|
||||||
|
&message.from.first_name,
|
||||||
|
);
|
||||||
|
utils::get_files(api, message, token).await?;
|
||||||
|
}
|
||||||
|
_ => (),
|
||||||
|
};
|
||||||
|
Ok(())
|
||||||
|
}
|
114
src/main.rs
114
src/main.rs
@ -11,112 +11,10 @@ mod db;
|
|||||||
mod errors;
|
mod errors;
|
||||||
mod mystem;
|
mod mystem;
|
||||||
mod utils;
|
mod utils;
|
||||||
|
mod handlers;
|
||||||
|
|
||||||
use mystem::MyStem;
|
use mystem::MyStem;
|
||||||
|
|
||||||
async fn handler(
|
|
||||||
api: Api,
|
|
||||||
message: Message,
|
|
||||||
token: String,
|
|
||||||
mystem: &mut MyStem,
|
|
||||||
) -> Result<(), errors::Error> {
|
|
||||||
match message.kind {
|
|
||||||
MessageKind::Text { ref data, .. } => {
|
|
||||||
let title = utils::get_title(&message);
|
|
||||||
info!(
|
|
||||||
"<{}({})>[{}({})]: {}",
|
|
||||||
&message.chat.id(),
|
|
||||||
title,
|
|
||||||
&message.from.id,
|
|
||||||
&message.from.first_name,
|
|
||||||
data
|
|
||||||
);
|
|
||||||
db::add_sentence(&message, mystem).await?;
|
|
||||||
match data.as_str() {
|
|
||||||
"/here" => commands::here(api, message).await?,
|
|
||||||
"/top" => commands::top(api, message).await?,
|
|
||||||
"/stat" => commands::top(api, message).await?,
|
|
||||||
"/markov_all" => commands::markov_all(api, message).await?,
|
|
||||||
_ => (),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MessageKind::Photo { ref caption, .. } => {
|
|
||||||
let title = utils::get_title(&message);
|
|
||||||
info!(
|
|
||||||
"<{}({})>[{}({})]: *PHOTO* {}",
|
|
||||||
&message.chat.id(),
|
|
||||||
title,
|
|
||||||
&message.from.id,
|
|
||||||
&message.from.first_name,
|
|
||||||
caption.clone().unwrap_or("NO_TITLE".to_string())
|
|
||||||
);
|
|
||||||
utils::get_files(api, message, token).await?;
|
|
||||||
}
|
|
||||||
|
|
||||||
MessageKind::Document { ref caption, .. } => {
|
|
||||||
let title = utils::get_title(&message);
|
|
||||||
info!(
|
|
||||||
"<{}({})>[{}({})]: *DOCUMENT* {}",
|
|
||||||
&message.chat.id(),
|
|
||||||
title,
|
|
||||||
&message.from.id,
|
|
||||||
&message.from.first_name,
|
|
||||||
caption.clone().unwrap_or("NO_TITLE".to_string())
|
|
||||||
);
|
|
||||||
utils::get_files(api, message, token).await?;
|
|
||||||
}
|
|
||||||
|
|
||||||
MessageKind::Sticker { .. } => {
|
|
||||||
let title = utils::get_title(&message);
|
|
||||||
info!(
|
|
||||||
"<{}({})>[{}({})]: *STICKER*",
|
|
||||||
&message.chat.id(),
|
|
||||||
title,
|
|
||||||
&message.from.id,
|
|
||||||
&message.from.first_name,
|
|
||||||
);
|
|
||||||
utils::get_files(api, message, token).await?;
|
|
||||||
}
|
|
||||||
|
|
||||||
MessageKind::Voice { .. } => {
|
|
||||||
let title = utils::get_title(&message);
|
|
||||||
info!(
|
|
||||||
"<{}({})>[{}({})]: *VOICE*",
|
|
||||||
&message.chat.id(),
|
|
||||||
title,
|
|
||||||
&message.from.id,
|
|
||||||
&message.from.first_name,
|
|
||||||
);
|
|
||||||
utils::get_files(api, message, token).await?;
|
|
||||||
}
|
|
||||||
|
|
||||||
MessageKind::Video { .. } => {
|
|
||||||
let title = utils::get_title(&message);
|
|
||||||
info!(
|
|
||||||
"<{}({})>[{}({})]: *VIDEO*",
|
|
||||||
&message.chat.id(),
|
|
||||||
title,
|
|
||||||
&message.from.id,
|
|
||||||
&message.from.first_name,
|
|
||||||
);
|
|
||||||
utils::get_files(api, message, token).await?;
|
|
||||||
}
|
|
||||||
|
|
||||||
MessageKind::VideoNote { .. } => {
|
|
||||||
let title = utils::get_title(&message);
|
|
||||||
info!(
|
|
||||||
"<{}({})>[{}({})]: *VIDEO_NOTE*",
|
|
||||||
&message.chat.id(),
|
|
||||||
title,
|
|
||||||
&message.from.id,
|
|
||||||
&message.from.first_name,
|
|
||||||
);
|
|
||||||
utils::get_files(api, message, token).await?;
|
|
||||||
}
|
|
||||||
_ => (),
|
|
||||||
};
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> Result<(), errors::Error> {
|
async fn main() -> Result<(), errors::Error> {
|
||||||
env_logger::from_env(Env::default().default_filter_or("info")).init();
|
env_logger::from_env(Env::default().default_filter_or("info")).init();
|
||||||
@ -133,15 +31,15 @@ async fn main() -> Result<(), errors::Error> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
let api = Api::new(token.clone());
|
let api = Api::new(token.clone());
|
||||||
// Fetch new updates via long poll method
|
|
||||||
let mut stream = api.stream();
|
let mut stream = api.stream();
|
||||||
|
let me = api.send(GetMe).await?;
|
||||||
|
info!("GetMe result: Username: {}, First Name: {}, ID {}", me.username.as_ref().unwrap(), me.first_name, me.id);
|
||||||
while let Some(update) = stream.next().await {
|
while let Some(update) = stream.next().await {
|
||||||
// If the received update contains a new message...
|
|
||||||
let update = update?;
|
let update = update?;
|
||||||
if let UpdateKind::Message(message) = update.kind {
|
if let UpdateKind::Message(message) = update.kind {
|
||||||
db::add_user(message.clone()).await?;
|
|
||||||
db::add_conf(message.clone()).await?;
|
db::add_conf(message.clone()).await?;
|
||||||
handler(api.clone(), message, token.clone(), &mut mystem).await?;
|
db::add_user(message.clone()).await?;
|
||||||
|
handlers::handler(api.clone(), message, token.clone(), &mut mystem, me.clone()).await?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
use crate::errors;
|
use crate::errors;
|
||||||
use serde_json::Value;
|
use serde_json::Value;
|
||||||
use std::io::prelude::*;
|
use std::io::{Error, Write, BufReader, prelude::*};
|
||||||
use std::io::BufReader;
|
|
||||||
use std::io::{Error, Write};
|
|
||||||
use subprocess::{Popen, PopenConfig, PopenError, Redirection};
|
use subprocess::{Popen, PopenConfig, PopenError, Redirection};
|
||||||
|
|
||||||
pub struct MyStem {
|
pub struct MyStem {
|
||||||
|
Reference in New Issue
Block a user