Overview
| Comment: | sample Callback, comment fixes |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
13265e769714ff186697e13ac212a530 |
| User & Date: | arcade on 2026-01-10 12:16:17.106 |
| Other Links: | manifest | tags |
Context
|
2026-01-10
| ||
| 12:16 | sample Callback, comment fixes Leaf check-in: 13265e7697 user: arcade tags: trunk | |
|
2026-01-09
| ||
| 10:41 | refactor/add comments (by CodeRabbit) check-in: fabcca1eaf user: arcade tags: trunk | |
Changes
Modified Cargo.lock
from [cfecf5f3d2]
to [dee807f001].
| ︙ | ︙ | |||
2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 | "futures", "futures-util", "lazy_static", "regex", "reqwest", "rss", "sedregex", "smol", "sqlx", "stacked_errors", "tgbot", "url", ] [[package]] name = "rustc-hash" version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" | > > | 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 | "futures", "futures-util", "lazy_static", "regex", "reqwest", "rss", "sedregex", "serde", "smol", "sqlx", "stacked_errors", "tgbot", "toml", "url", ] [[package]] name = "rustc-hash" version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" |
| ︙ | ︙ | |||
2855 2856 2857 2858 2859 2860 2861 | "futures-sink", "pin-project-lite", "tokio", ] [[package]] name = "toml" | | | > > | 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 | "futures-sink", "pin-project-lite", "tokio", ] [[package]] name = "toml" version = "0.9.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" dependencies = [ "indexmap", "serde_core", "serde_spanned", "toml_datetime", "toml_parser", "toml_writer", "winnow", ] [[package]] name = "toml_datetime" version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" |
| ︙ | ︙ | |||
2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 | version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" dependencies = [ "winnow", ] [[package]] name = "tower" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", | > > > > > > | 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 | version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" dependencies = [ "winnow", ] [[package]] name = "toml_writer" version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" [[package]] name = "tower" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", |
| ︙ | ︙ |
Modified Cargo.toml
from [e9f525d424]
to [8faa4d5887].
| ︙ | ︙ | |||
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
futures = "0.3.30"
futures-util = "0.3.30"
lazy_static = "1.5.0"
regex = "1.10.6"
reqwest = { version = "0.13.1", features = [ "brotli", "socks", "deflate" ]}
rss = "2.0.9"
sedregex = "0.2.5"
smol = "2.0.2"
stacked_errors = "0.7.1"
sqlx = { version = "0.8", features = [ "postgres", "runtime-tokio-rustls", "chrono", "macros" ], default-features = false }
url = "2.5.8"
[profile.release]
lto = true
codegen-units = 1
| > > | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
futures = "0.3.30"
futures-util = "0.3.30"
lazy_static = "1.5.0"
regex = "1.10.6"
reqwest = { version = "0.13.1", features = [ "brotli", "socks", "deflate" ]}
rss = "2.0.9"
sedregex = "0.2.5"
serde = "1.0.228"
smol = "2.0.2"
stacked_errors = "0.7.1"
sqlx = { version = "0.8", features = [ "postgres", "runtime-tokio-rustls", "chrono", "macros" ], default-features = false }
toml = "0.9.11+spec-1.1.0"
url = "2.5.8"
[profile.release]
lto = true
codegen-units = 1
|
Modified src/command.rs
from [f6a06b1c48]
to [93b2a238f0].
| ︙ | ︙ | |||
68 69 70 71 72 73 74 |
"/enable" => conn.enable(number, sender).await.stack()?.into(),
"/delete" => conn.delete(number, sender).await.stack()?,
"/disable" => conn.disable(number, sender).await.stack()?.into(),
_ => bail!("Command {command} {words:?} not handled."),
},
}
} else {
| | | 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
"/enable" => conn.enable(number, sender).await.stack()?.into(),
"/delete" => conn.delete(number, sender).await.stack()?,
"/disable" => conn.disable(number, sender).await.stack()?.into(),
_ => bail!("Command {command} {words:?} not handled."),
},
}
} else {
"This command needs exactly one number.".into()
};
core.tg.send(reply, Some(msg.chat.get_id()), None).await.stack()?;
Ok(())
}
/// Validate command arguments, check permissions and update or add a channel feed configuration in the database.
///
|
| ︙ | ︙ |
Modified src/core.rs
from [ccc6d8060d]
to [1b5d4c54cf].
| ︙ | ︙ | |||
354 355 356 357 358 359 360 |
}
impl UpdateHandler for Core {
/// Dispatches an incoming Telegram update to a matching command handler and reports handler errors to the originating chat.
///
/// This method inspects the update; if it contains a message that can be parsed as a bot command,
/// it executes the corresponding command handler. If the handler returns an error, the error text
| | | 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 |
}
impl UpdateHandler for Core {
/// Dispatches an incoming Telegram update to a matching command handler and reports handler errors to the originating chat.
///
/// This method inspects the update; if it contains a message that can be parsed as a bot command,
/// it executes the corresponding command handler. If the handler returns an error, the error text
/// is sent back to the message's chat using MarkdownV2 formatting. Unknown commands produce an error
/// which is also reported to the chat.
async fn handle (&self, update: Update) {
if let UpdateType::Message(msg) = update.update_type
&& let Ok(cmd) = Command::try_from(msg)
{
let msg = cmd.get_message();
let words = cmd.get_args();
|
| ︙ | ︙ |
Modified src/tg_bot.rs
from [81a78d8cee]
to [c59b603d6a].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
use stacked_errors::{
Result,
StackableErr,
};
use tgbot::{
api::Client,
types::{
Bot,
ChatPeerId,
GetBot,
Message,
ParseMode,
SendMessage,
},
};
#[derive(Clone)]
pub struct Tg {
pub me: Bot,
pub owner: ChatPeerId,
pub client: Client,
}
| > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
use serde::{
Deserialize,
Serialize,
};
use stacked_errors::{
Result,
StackableErr,
};
use tgbot::{
api::Client,
types::{
Bot,
ChatPeerId,
GetBot,
InlineKeyboardButton,
InlineKeyboardMarkup,
Message,
ParseMode,
SendMessage,
},
};
#[derive(Serialize, Deserialize, Debug)]
enum Callback {
// List all feeds (version, name to show)
List(u8, String),
}
fn get_kb (cb: &Callback) -> Result<InlineKeyboardMarkup> {
let mark = InlineKeyboardMarkup::from(vec![vec![
InlineKeyboardButton::for_callback_data("1",
toml::to_string(&Callback::List(0,"xxx".to_owned())).stack()?),
]]);
Ok(mark)
}
#[derive(Clone)]
pub struct Tg {
pub me: Bot,
pub owner: ChatPeerId,
pub client: Client,
}
|
| ︙ | ︙ |