23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
-
+
|
sources: Arc<Mutex<HashSet<Arc<i32>>>>,
}
impl Core {
pub fn new(settings: config::Config) -> Result<Arc<Core>> {
let owner = settings.get_int("owner")?;
let api_key = settings.get_string("api_key")?;
let tg = telegram_bot::Api::new(&api_key);
let tg = telegram_bot::Api::new(api_key);
let tg_cloned = tg.clone();
let core = Arc::new(Core {
tg,
my: task::block_on(async {
tg_cloned.send(telegram_bot::GetMe).await
})?,
owner_chat: telegram_bot::UserId::new(owner),
|
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
-
+
|
let row = sqlx::query("select exists(select true from rsstg_post where url = $1 and source_id = $2) as exists;")
.bind(&*post_url)
.bind(*id)
.fetch_one(&mut conn).await
.with_context(|| format!("Check post:\n{:?}", &conn))?;
let exists: bool = row.try_get("exists")?;
if ! exists {
if this_fetch == None || *date > this_fetch.unwrap() {
if this_fetch.is_none() || *date > this_fetch.unwrap() {
this_fetch = Some(*date);
};
self.tg.send( match iv_hash {
Some(hash) => telegram_bot::SendMessage::new(destination, format!("<a href=\"https://t.me/iv?url={}&rhash={}\"> </a>{0}", &post_url, hash)),
None => telegram_bot::SendMessage::new(destination, format!("{}", post_url)),
}.parse_mode(telegram_bot::types::ParseMode::Html)).await
.context("Can't post message:")?;
|