Use struct for passing module arguments: telegram

This commit is contained in:
George Kaklamanos 2023-11-21 21:22:32 +02:00
parent f09de29ee4
commit ee3a9c41ba
Signed by: gkaklas
GPG key ID: C0CAB8A6BDC9399D
3 changed files with 24 additions and 4 deletions

View file

@ -1,5 +1,9 @@
use teloxide::{prelude::*, utils::command::BotCommands};
pub struct TelegramArgs {
pub token: String,
}
#[derive(BotCommands, Clone)]
#[command(
rename_rule = "lowercase",
@ -42,7 +46,7 @@ async fn answer(bot: Bot, message: Message, command: Command) -> ResponseResult<
}
#[tokio::main]
pub async fn telegram(token: String) {
let bot = Bot::new(token);
pub async fn telegram(args: TelegramArgs) {
let bot = Bot::new(args.token);
Command::repl(bot, answer).await;
}

View file

@ -1,5 +1,7 @@
use labadoor_acl::ACL;
mod cli;
mod to_config;
use to_config::ToConfig;
fn main() {
let cli = cli::parse();
@ -11,8 +13,8 @@ fn main() {
match &cli.command {
#[cfg(feature = "telegram")]
cli::Command::Telegram(_) => {
let telegram = config.get::<cli::Telegram>("telegram").unwrap();
labadoor_telegram::telegram(telegram.token.unwrap());
let telegram = config.get::<cli::Telegram>("telegram").unwrap().to_config();
labadoor_telegram::telegram(telegram);
}
#[cfg(feature = "matrix")]
cli::Command::Matrix(_) => {

14
labadoor/src/to_config.rs Normal file
View file

@ -0,0 +1,14 @@
use crate::cli::*;
pub trait ToConfig<T> {
fn to_config(&self) -> T;
}
#[cfg(feature = "telegram")]
impl ToConfig<labadoor_telegram::TelegramArgs> for Telegram {
fn to_config(&self) -> labadoor_telegram::TelegramArgs {
labadoor_telegram::TelegramArgs {
token: self.token.clone().unwrap(),
}
}
}