13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
use stacked_errors::{
Result,
StackableErr,
bail,
};
use tgbot::types::{
CallbackQuery,
ChatMember,
ChatUsername,
GetChat,
GetChatAdministrators,
Message,
};
use url::Url;
lazy_static! {
static ref RE_USERNAME: Regex = Regex::new(r"^@([a-zA-Z][a-zA-Z0-9_]+)$").unwrap();
static ref RE_IV_HASH: Regex = Regex::new(r"^[a-f0-9]{14}$").unwrap();
|
>
>
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
use stacked_errors::{
Result,
StackableErr,
bail,
};
use tgbot::types::{
CallbackQuery,
Chat,
ChatMember,
ChatUsername,
GetChat,
GetChatAdministrators,
MaybeInaccessibleMessage,
Message,
};
use url::Url;
lazy_static! {
static ref RE_USERNAME: Regex = Regex::new(r"^@([a-zA-Z][a-zA-Z0-9_]+)$").unwrap();
static ref RE_IV_HASH: Regex = Regex::new(r"^[a-f0-9]{14}$").unwrap();
|
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
Ok(())
}
pub async fn test (core: &Core, msg: &Message) -> Result<()> {
let sender: i64 = msg.sender.get_user_id()
.stack_err("Ignoring unreal users.")?.into();
let feeds = core.get_feeds(sender).await.stack()?;
let kb = get_kb(&Callback::menu(), feeds).await.stack()?;
core.tg.send(MyMessage::html_to_kb("Main menu:", msg.chat.get_id(), kb)).await.stack()?;
Ok(())
}
/// Handle channel-management commands that operate on a single numeric source ID.
///
/// This validates that exactly one numeric argument is provided, performs the requested
|
|
|
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
Ok(())
}
pub async fn test (core: &Core, msg: &Message) -> Result<()> {
let sender: i64 = msg.sender.get_user_id()
.stack_err("Ignoring unreal users.")?.into();
let feeds = core.get_feeds(sender).await.stack()?;
let kb = get_kb(&Callback::menu(), &feeds).await.stack()?;
core.tg.send(MyMessage::html_to_kb("Main menu:", msg.chat.get_id(), kb)).await.stack()?;
Ok(())
}
/// Handle channel-management commands that operate on a single numeric source ID.
///
/// This validates that exactly one numeric argument is provided, performs the requested
|
199
200
201
202
203
204
205
206
207
208
|
core.tg.send(MyMessage::html_to(update, msg.chat.get_id())).await.stack()?;
if command == "/add" {
if let Some(new_record) = conn.get_one_name(sender, channel).await.stack()? {
core.add_feed(sender.into(), new_record.source_id, new_record.channel).await.stack()?;
} else {
bail!("Failed to read data on freshly inserted source.");
}
};
Ok(())
}
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
|
core.tg.send(MyMessage::html_to(update, msg.chat.get_id())).await.stack()?;
if command == "/add" {
if let Some(new_record) = conn.get_one_name(sender, channel).await.stack()? {
core.add_feed(sender.into(), new_record.source_id, new_record.channel).await.stack()?;
} else {
bail!("Failed to read data on freshly inserted source.");
}
};
Ok(())
}
pub async fn answer_cb (core: &Core, query: &CallbackQuery, cb: &str) -> Result<()> {
let cb: Callback = toml::from_str(cb).stack()?;
let sender = &query.from;
//let mut conn = core.db.begin().await.stack()?;
let text = "Sample".to_owned();
if let Some(msg) = &query.message {
match msg {
MaybeInaccessibleMessage::Message(message) => {
if let Some(owner) = message.sender.get_user()
&& sender == owner
{
let feeds = core.get_feeds(owner.id.into()).await.stack()?;
core.tg.update_message(message.chat.get_id().into(), message.id, text, &feeds, cb).await?;
} else {
core.tg.send(MyMessage::html(format!("Can't identify request sender:<br><pre>{:?}</pre>", message))).await.stack()?;
}
},
MaybeInaccessibleMessage::InaccessibleMessage(message) => {
let sender: i64 = sender.id.into();
if let Chat::Private(priv_chat) = &message.chat
&& priv_chat.id == sender
{
let feeds = core.get_feeds(priv_chat.id.into()).await.stack()?;
core.tg.update_message(message.chat.get_id().into(), message.message_id, text, &feeds, cb).await?;
} else {
core.tg.send(MyMessage::html(format!("Can't identify request sender:<br><pre>{:?}</pre>", message))).await.stack()?;
}
},
};
};
Ok(())
}
|