какую команду мне пришел коллбек, мне надо пройтись по такоме дереву
message.message.reply_to_message
но это вся херня, это Option, поэтому надо
message.message.reply_to_message.unwrap()
но вся эта херня лежит в куче, потому что её упаковали в std::boxed::box, поэтому надо разыменовать
let msg = *message.message.reply_to_message.unwrap()
но все это enum из 2-х вариантов, все их обязательно надо обработать, поэтому
let msg = *message.message.reply_to_message.unwrap();
match msg {
MessageOrChannelPost::Message(msg) => {
....
},
MessageOrChannelPost::ChannelPost(msg) => {
....
}
}
Но нужная нам msg, это kind, поэтому его тоже надо распаковать
let msg = *message.message.reply_to_message.unwrap();
match msg {
MessageOrChannelPost::Message(msg) => {
if let MessageKind::Text { ref data, .. } = msg.kind {
println!("CallbackQuery {:?}", data);
}
},
MessageOrChannelPost::ChannelPost(msg) => {
....
}
}
поздравляем, теперь у вас есть искомая строка /search@botname
нормально
Мне тож норм. В той же джаве ты бы мог, конечно, просто через . пройтись до всего этого, но пришлось бы каждый раз молиться, что NRE не получишь.
а вот как у меня: https://github.com/berkus/AeglBot/blob/rust/src/lib.rs#L113-L122
ПОЭТОМУ НАДО UNWRAP
Обсуждают сегодня