5 Commits

Author SHA1 Message Date
AB
282efe5be4 Add k8s deploy example 2021-08-23 01:06:11 +03:00
AB
f1dc1d0897 Add Dockerfile. 2021-08-23 00:58:25 +03:00
AB
d8b37b32df Bump version 2021-08-20 21:22:43 +03:00
AB
47c68ee432 Update telegram-bot for a new UPDATEKU 2021-08-20 20:38:13 +03:00
AB
ac2be9929a Rollback tokio 2021-08-19 18:40:12 +03:00
6 changed files with 97 additions and 19 deletions

3
.gitignore vendored
View File

@ -6,4 +6,5 @@ memory.sqlite3
/video
/voice
/.idea
Cargo.lock
Cargo.lock
k8s/k8s-deploy.yaml

View File

@ -1,6 +1,6 @@
[package]
name = "desubot"
version = "0.5.5"
version = "0.5.7"
authors = ["AB <ab@hexor.ru>"]
edition = "2018"
@ -8,23 +8,24 @@ edition = "2018"
[dependencies]
bytes = "0.5"
tokio = { version = "1.10.0", features = ["full"]}
tokio = { version = "0.2", features = ["full"]}
tracing = "0.1.9"
tracing-futures = "0.2"
multipart = { version = "0.16", default-features = false, features = ["client"] }
telegram-bot = "0.8.0"
#telegram-bot = "0.8.0"
telegram-bot = { git = "https://github.com/ayrat555/telegram-bot", branch = "ayrat555/api-fixes-10" }
silicon = "0.4.0"
hyper = "0.14"
hyper = "0.13"
hyper-tls = { version = "0.4", optional = true }
futures = "0.3"
hyper-rustls = { version = "0.19", optional = true }
rusqlite = { version = "0.24.2", features = ["bundled"]}
html-escape = "0.2"
regex = "1"
reqwest = "0.11.4"
reqwest = "0.10.9"
uuid = { version = "0.8", features = ["v4"] }
sha1 = "0.6.0"
env_logger = "0.9.0"
env_logger = "0.7"
log = { version = "^0.4.5", features = ["std"] }
subprocess = "0.2.6"
serde_json = "1.0"
@ -33,7 +34,7 @@ rand = "0.7.3"
mystem = "^0.2"
#mystem = { path = "../mystem-rs" }
async-trait = "0.1.42"
sqlparser = "0.9.0"
sqlparser = "0.7.0"
[dependencies.syntect]
version = "4.4"

14
Dockerfile Normal file
View File

@ -0,0 +1,14 @@
# syntax=docker/dockerfile:1
FROM rust:latest AS builder
WORKDIR /desubot
ADD ./ /desubot/
RUN cargo build --release
FROM ubuntu:latest
WORKDIR /storage
COPY --from=builder /desubot/target/release/desubot /usr/bin/
COPY mystem /usr/bin/
RUN apt update && apt install -y fontconfig openssl ca-certificates && rm -rf /var/lib/apt/lists/*
ENTRYPOINT desubot

View File

@ -0,0 +1,43 @@
---
apiVersion: v1
kind: Secret
metadata:
name: desubot-api-token
data:
token: 123.... # Base64 encoded token.
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: desubot
spec:
serviceName: "desubot"
replicas: 1
selector:
matchLabels:
app: desubot
template:
metadata:
labels:
app: desubot
spec:
containers:
- name: desubot
image: ultradesu/desubot:latest
volumeMounts:
- name: storage
mountPath: /storage
env:
- name: TELEGRAM_BOT_TOKEN
valueFrom:
secretKeyRef:
name: desubot-api-token
key: token
volumeClaimTemplates:
- metadata:
name: storage
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 50Gi

View File

@ -53,7 +53,12 @@ pub async fn handler(
}
}
}
s if s.contains("/here") || s.contains("@here") || s.contains("/хере") || s.contains("@хере") || s.contains("\"хере") => {
s if s.contains("/here")
|| s.contains("@here")
|| s.contains("/хере")
|| s.contains("@хере")
|| s.contains("\"хере") =>
{
db::add_sentence(&message, mystem).await?;
Here {
data: "".to_string(),

View File

@ -1,5 +1,6 @@
#![allow(unreachable_code)]
use std::{env, process};
use tokio::time::{delay_for, Duration};
use futures::StreamExt;
use telegram_bot::*;
@ -47,18 +48,31 @@ async fn main() -> Result<(), errors::Error> {
);
loop {
while let Some(update) = stream.next().await {
let update = update?;
if let UpdateKind::Message(message) = update.kind {
db::add_conf(message.clone()).await?;
db::add_user(message.clone()).await?;
match handlers::handler(api.clone(), message, token.clone(), &mut mystem, me.clone())
.await
{
Ok(_) => {}
Err(e) => warn!("An error occurred handling command. {:?}", e),
match update {
Ok(u) => {
if let UpdateKind::Message(message) = u.kind {
db::add_conf(message.clone()).await?;
db::add_user(message.clone()).await?;
match handlers::handler(
api.clone(),
message,
token.clone(),
&mut mystem,
me.clone(),
)
.await
{
Ok(_) => {}
Err(e) => warn!("An error occurred handling command. {:?}", e),
}
}
}
}
Err(e) => {
warn!("Telegram API Error: {:?}", e);
}
};
}
delay_for(Duration::from_secs(2)).await;
}
Ok(())
}