Artifact
527f3dd3d42618a1c6be133485aebec70b5b0c86b8bc37ab10a459814e566daa:
0000: 2f 2f 21 20 54 68 69 73 20 69 73 20 74 65 6c 65 //! This is tele
0010: 67 72 61 6d 20 62 6f 74 20 74 6f 20 66 65 74 63 gram bot to fetc
0020: 68 20 52 53 53 2f 41 54 4f 4d 20 66 65 65 64 73 h RSS/ATOM feeds
0030: 20 61 6e 64 20 70 6f 73 74 20 72 65 73 75 6c 74 and post result
0040: 73 20 6f 6e 20 70 75 62 6c 69 63 0a 2f 2f 21 20 s on public.//!
0050: 63 68 61 6e 6e 65 6c 73 0a 0a 23 21 5b 77 61 72 channels..#![war
0060: 6e 28 6d 69 73 73 69 6e 67 5f 64 6f 63 73 29 5d n(missing_docs)]
0070: 0a 0a 6d 6f 64 20 63 6f 6d 6d 61 6e 64 3b 0a 6d ..mod command;.m
0080: 6f 64 20 63 6f 72 65 3b 0a 6d 6f 64 20 73 71 6c od core;.mod sql
0090: 3b 0a 0a 75 73 65 20 61 73 79 6e 63 5f 63 6f 6d ;..use async_com
00a0: 70 61 74 3a 3a 43 6f 6d 70 61 74 3b 0a 75 73 65 pat::Compat;.use
00b0: 20 73 74 61 63 6b 65 64 5f 65 72 72 6f 72 73 3a stacked_errors:
00c0: 3a 7b 0a 09 52 65 73 75 6c 74 2c 0a 09 53 74 61 :{..Result,..Sta
00d0: 63 6b 61 62 6c 65 45 72 72 2c 0a 7d 3b 0a 75 73 ckableErr,.};.us
00e0: 65 20 74 67 62 6f 74 3a 3a 68 61 6e 64 6c 65 72 e tgbot::handler
00f0: 3a 3a 4c 6f 6e 67 50 6f 6c 6c 3b 0a 0a 66 6e 20 ::LongPoll;..fn
0100: 6d 61 69 6e 20 28 29 20 2d 3e 20 52 65 73 75 6c main () -> Resul
0110: 74 3c 28 29 3e 20 7b 0a 09 73 6d 6f 6c 3a 3a 62 t<()> {..smol::b
0120: 6c 6f 63 6b 5f 6f 6e 28 43 6f 6d 70 61 74 3a 3a lock_on(Compat::
0130: 6e 65 77 28 61 73 79 6e 63 20 7b 0a 09 09 61 73 new(async {...as
0140: 79 6e 63 5f 6d 61 69 6e 28 29 2e 61 77 61 69 74 ync_main().await
0150: 2e 75 6e 77 72 61 70 28 29 3b 0a 09 7d 29 29 3b .unwrap();..}));
0160: 0a 0a 09 4f 6b 28 28 29 29 0a 7d 0a 0a 61 73 79 ...Ok(()).}..asy
0170: 6e 63 20 66 6e 20 61 73 79 6e 63 5f 6d 61 69 6e nc fn async_main
0180: 20 28 29 20 2d 3e 20 52 65 73 75 6c 74 3c 28 29 () -> Result<()
0190: 3e 20 7b 0a 09 6c 65 74 20 73 65 74 74 69 6e 67 > {..let setting
01a0: 73 20 3d 20 63 6f 6e 66 69 67 3a 3a 43 6f 6e 66 s = config::Conf
01b0: 69 67 3a 3a 62 75 69 6c 64 65 72 28 29 0a 09 09 ig::builder()...
01c0: 2e 73 65 74 5f 64 65 66 61 75 6c 74 28 22 61 70 .set_default("ap
01d0: 69 5f 67 61 74 65 77 61 79 22 2c 20 22 68 74 74 i_gateway", "htt
01e0: 70 73 3a 2f 2f 61 70 69 2e 74 65 6c 65 67 72 61 ps://api.telegra
01f0: 6d 2e 6f 72 67 22 29 2e 73 74 61 63 6b 28 29 3f m.org").stack()?
0200: 0a 09 09 2e 61 64 64 5f 73 6f 75 72 63 65 28 63 ....add_source(c
0210: 6f 6e 66 69 67 3a 3a 46 69 6c 65 3a 3a 77 69 74 onfig::File::wit
0220: 68 5f 6e 61 6d 65 28 22 72 73 73 74 67 22 29 29 h_name("rsstg"))
0230: 0a 09 09 2e 62 75 69 6c 64 28 29 0a 09 09 2e 73 ....build()....s
0240: 74 61 63 6b 28 29 3f 3b 0a 0a 09 6c 65 74 20 63 tack()?;...let c
0250: 6f 72 65 20 3d 20 63 6f 72 65 3a 3a 43 6f 72 65 ore = core::Core
0260: 3a 3a 6e 65 77 28 73 65 74 74 69 6e 67 73 29 2e ::new(settings).
0270: 61 77 61 69 74 2e 73 74 61 63 6b 28 29 3f 3b 0a await.stack()?;.
0280: 0a 09 4c 6f 6e 67 50 6f 6c 6c 3a 3a 6e 65 77 28 ..LongPoll::new(
0290: 63 6f 72 65 2e 74 67 2e 63 6c 6f 6e 65 28 29 2c core.tg.clone(),
02a0: 20 63 6f 72 65 29 2e 72 75 6e 28 29 2e 61 77 61 core).run().awa
02b0: 69 74 3b 0a 0a 09 4f 6b 28 28 29 29 0a 7d 0a it;...Ok(()).}.