diff --git a/src/telegram/commands/answer.rs b/src/telegram/commands/answer.rs new file mode 100644 index 00000000..c8d0656f --- /dev/null +++ b/src/telegram/commands/answer.rs @@ -0,0 +1,93 @@ +use std::hash::{Hash, Hasher}; +use anyhow::{Context}; +use rand::SeedableRng; +use rand::seq::SliceRandom; +use teloxide::Bot; +use teloxide::payloads::SendMessageSetters; +use teloxide::prelude::{Message, Requester}; +use crate::telegram::commands::{CommandResult}; + +// Cerchiamo di tenere bilanciate le tre colonne, o almeno le prime due. +// Se avete un'idea ma metterebbe troppe opzioni in un'unica categoria, mettetela sotto commento. +const ANSWERS: [&str; 60] = [ + // risposte "sΓ¬": 20 + "πŸ”΅ SΓ¬.", + "πŸ”΅ Decisamente sΓ¬!", + "πŸ”΅ Uhm, secondo me sΓ¬.", + "πŸ”΅ SΓ¬! SΓ¬! SÌ!", + "πŸ”΅ Yup.", + "πŸ”΅ Direi proprio di sΓ¬.", + "πŸ”΅ Assolutamente sΓ¬.", + "πŸ”΅ Ma certo!", + "πŸ”΅ Esatto!", + "πŸ”΅ Senz'altro!", + "πŸ”΅ Ovviamente.", + "πŸ”΅ Questa domanda ha risposta affermativa.", + "πŸ”΅ Hell yeah.", + "πŸ”΅ YES! YES! YES!", + "πŸ”΅ yusssssss", + "πŸ”΅ Non vedo perchΓ¨ no", + "πŸ”΅ Ha senso, ha perfettamente senso, nulla da obiettare, ha senso.", + "πŸ”΅ Yos!", + "πŸ”΅ SΓ¬, ma tienilo segreto...", + "πŸ”΅ [RADIO] Affermativo.", + + // risposte "no": 20 + "❌ No.", + "❌ Decisamente no!", + "❌ Uhm, secondo me sΓ¬. No, aspetta, ci ho ripensato. È un no.", + "❌ No, no, e ancora NO!", + "❌ Nope.", + "❌ Direi proprio di no.", + "❌ Assolutamente no.", + "❌ Certo che no!", + "❌ Neanche per idea!", + "❌ Neanche per sogno!", + "❌ Niente affatto!", + "❌ Questa domanda ha risposta negativa.", + "❌ Hell no.", + "❌ NO! NO! NO!", + "❌ lolno", + "❌ NEIN NEIN NEIN NEIN", + "❌ Delet dis", + "❌ Nopety nope!", + "❌ No, ma tienilo segreto.", + "❌ [RADIO] Negativo.", + + // risposte "boh": 20 + "❔ Boh.", + "❔ E io che ne so?!", + "❔ Non so proprio rispondere.", + "❔ Non lo so...", + "❔ Mi avvalgo della facoltΓ  di non rispondere.", + "❔ Non parlerΓ² senza il mio avvocato!", + "❔ Dunno.", + "❔ PerchΓ© lo chiedi a me?", + "❔ Ah, non lo so io!", + r#"❔ Β―\_(ツ)_/Β―"#, + "❔ No idea.", + "❔ Dunno.", + "❔ Boooooh!", + "❔ Non ne ho la piΓΉ pallida idea.", + "❔ No comment.", + "❔ maibi", + "❔ maibi not", + "❔ idk dude", + "❔ Non mi Γ¨ permesso condividere questa informazione.", + "❔ [RADIO] Mantengo la posizione.", +]; + +pub async fn handler(bot: &Bot, message: &Message) -> CommandResult { + let mut rng = rand::rngs::SmallRng::from_entropy(); + + let answer = ANSWERS.choose(&mut rng) + .context("Non Γ¨ stato possibile selezionare una risposta.")?; + + let _reply = bot + .send_message(message.chat.id, answer.to_string()) + .reply_to_message_id(message.id) + .await + .context("Non Γ¨ stato possibile inviare la risposta.")?; + + Ok(()) +} \ No newline at end of file diff --git a/src/telegram/commands/mod.rs b/src/telegram/commands/mod.rs index 7dc3d57a..cda3fe6e 100644 --- a/src/telegram/commands/mod.rs +++ b/src/telegram/commands/mod.rs @@ -15,6 +15,7 @@ mod fortune; mod echo; mod help; mod whoami; +mod answer; #[derive(Debug, Clone, PartialEq, Eq, BotCommands)] #[command(rename_rule = "lowercase")] @@ -29,6 +30,8 @@ pub(self) enum Command { Echo(String), #[command(description = "Controlla a che account RYG Γ¨ associato il tuo account Telegram.")] WhoAmI, + #[command(description = "Rispondi ad una domanda.")] + Answer(String), } async fn handle_command(bot: Bot, command: Command, message: Message) -> CommandResult { @@ -43,6 +46,7 @@ async fn handle_command(bot: Bot, command: Command, message: Message) -> Command Command::Fortune => fortune::handler(&bot, &message).await, Command::Echo(text) => echo::handler(&bot, &message, &text).await, Command::WhoAmI => whoami::handler(&bot, &message).await, + Command::Answer(_) => answer::handler(&bot, &message).await, }; if result.is_ok() {