From bb745c9595f502c5ecc86a2faeee26a4864056d2 Mon Sep 17 00:00:00 2001 From: Ash Vollmer Date: Wed, 5 Aug 2026 21:16:36 +0200 Subject: [PATCH] adjusted for changes in model --- src/main.rs | 61 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/src/main.rs b/src/main.rs index 259098b..3e0868a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,27 +6,25 @@ use dotenv::dotenv; use models::Notice; use serenity::{ all::{ - Colour, Context, CreateAttachment, CreateEmbed, CreateEmbedFooter, CreateMessage, - EventHandler, GatewayIntents, Message, Ready, Timestamp, + Colour, Context, CreateEmbed, CreateEmbedFooter, CreateMessage, EventHandler, + GatewayIntents, Message, Ready, Timestamp, }, async_trait, Client, }; -use crate::models::get_line_color; - struct Handler; #[async_trait] impl EventHandler for Handler { async fn message(&self, ctx: Context, msg: Message) { - let new = Notice { + let mut new = Notice { affected_lines: vec!(String::from("10")), dest_1: String::from("Hannover/Wettbergen"), dest_2: String::from("Hannover/Misburg"), headline: String::from("Linie 7 fährt erst bzw. bis Haltestelle In den Sieben Stücken"), detail: String::from("Die Stadtbahnlinie 7 fährt während der Baumaßnahme erst ab beziehungsweise bis zur Haltestelle In den Sieben Stücken. Dort besteht die Umsteigemöglichkeit vom bzw. in den Schienenersatzverkehr (SEV) und die Stadtbahnlinien 3 und 13. An der Haltestelle Buchholz/Betriebshof ist kein Zustieg bzw. Ausstieg möglich."), - from: 12, - to: 30, + from: None, + to: None, last_modified: String::from("2026-07-24T13:37:00Z"), }; if msg.content == "!hello" { @@ -42,24 +40,37 @@ impl EventHandler for Handler { )); let timestamp: Timestamp = new.last_modified.parse().expect("Invalid timestamp!"); - let color = - get_line_color(new.affected_lines.first().expect("No single line affected")); - - let embed = CreateEmbed::new() - .title(new.headline) - .description(new.detail) - .color(Colour::from_rgb(color.0, color.1, color.2)) - .timestamp(timestamp) - .fields(vec![ - ("Start", new.from.to_string(), true), - ("Ende", new.to.to_string(), true), - ]) - .field( - "Fahrtrichtungen", - format!("{} & {}", new.dest_1, new.dest_2), - false, - ) - .footer(footer); + let color = new.get_line_color(); + new.get_validity_period(); + let embed = if new.from.is_none() || new.to.is_none() { + CreateEmbed::new() + .title(new.headline) + .description(new.detail) + .color(Colour::from_rgb(color.0, color.1, color.2)) + .timestamp(timestamp) + .field( + "Fahrtrichtungen", + format!("{} & {}", &new.dest_1, &new.dest_2), + false, + ) + .footer(footer) + } else { + CreateEmbed::new() + .title(new.headline) + .description(new.detail) + .color(Colour::from_rgb(color.0, color.1, color.2)) + .timestamp(timestamp) + .fields(vec![ + ("Start", new.from.unwrap().to_string(), true), + ("Ende", new.to.unwrap().to_string(), true), + ]) + .field( + "Fahrtrichtungen", + format!("{} & {}", new.dest_1, new.dest_2), + false, + ) + .footer(footer) + }; // let embed = CreateEmbed::new() // .title("This is a title")