diff options
Diffstat (limited to 'src/feature')
-rw-r--r-- | src/feature/jisoku.rs | 25 | ||||
-rw-r--r-- | src/feature/mod.rs | 1 | ||||
-rw-r--r-- | src/feature/tasterank.rs | 5 |
3 files changed, 19 insertions, 12 deletions
diff --git a/src/feature/jisoku.rs b/src/feature/jisoku.rs index 70bc886..8f88e81 100644 --- a/src/feature/jisoku.rs +++ b/src/feature/jisoku.rs | |||
@@ -1,16 +1,15 @@ | |||
1 | extern crate telegram_bot; | 1 | extern crate telegram_bot; |
2 | use telegram_bot::{Api, Message, MessageType}; | 2 | use telegram_bot::{Api, Message, MessageType}; |
3 | use std::sync::{Arc, Mutex}; | ||
4 | use std::thread; | 3 | use std::thread; |
5 | use std::time::Duration; | 4 | use std::time::Duration; |
6 | 5 | use std::sync::Arc; | |
7 | use std::ascii::AsciiExt; | 6 | use std::sync::atomic::{AtomicBool, Ordering}; |
8 | 7 | ||
9 | use feature::FeatureResult; | 8 | use feature::FeatureResult; |
10 | use feature::Feature; | 9 | use feature::Feature; |
11 | 10 | ||
12 | pub struct Jisoku { | 11 | pub struct Jisoku { |
13 | running: bool, | 12 | running: Arc<AtomicBool>, |
14 | } | 13 | } |
15 | 14 | ||
16 | const MESSAGES: [&'static str; 5] = ["JISOKU METER FURIKIRI UBAU GAME", | 15 | const MESSAGES: [&'static str; 5] = ["JISOKU METER FURIKIRI UBAU GAME", |
@@ -33,15 +32,24 @@ impl Feature for Jisoku { | |||
33 | return Ok(FeatureResult::Skip); | 32 | return Ok(FeatureResult::Skip); |
34 | } | 33 | } |
35 | 34 | ||
36 | if self.running { | 35 | if self.running.compare_and_swap(false, true, Ordering::SeqCst) { |
37 | return Ok(FeatureResult::Skip); | 36 | return Ok(FeatureResult::Skip); |
38 | } | 37 | } |
39 | self.running = true; | 38 | let running = self.running.clone(); |
40 | thread::spawn(move || { | 39 | thread::spawn(move || { |
41 | for s in MESSAGES.into_iter() { | 40 | for s in MESSAGES.into_iter() { |
42 | a.send_message(m.chat.id(), (*s).to_owned(), None, None, None, None); | 41 | if let Err(e) = a.send_message(m.chat.id(), |
42 | (*s).to_owned(), | ||
43 | None, | ||
44 | None, | ||
45 | None, | ||
46 | None) { | ||
47 | println!("{}", e); | ||
48 | break; | ||
49 | }; | ||
43 | thread::sleep(Duration::new(1, 0)); | 50 | thread::sleep(Duration::new(1, 0)); |
44 | } | 51 | } |
52 | running.store(false, Ordering::SeqCst); | ||
45 | }); | 53 | }); |
46 | Ok(FeatureResult::Handled) | 54 | Ok(FeatureResult::Handled) |
47 | } | 55 | } |
@@ -49,7 +57,6 @@ impl Feature for Jisoku { | |||
49 | 57 | ||
50 | impl Jisoku { | 58 | impl Jisoku { |
51 | pub fn new() -> Jisoku { | 59 | pub fn new() -> Jisoku { |
52 | let mut j = Jisoku { running: false }; | 60 | Jisoku { running: Arc::new(AtomicBool::new(false)) } |
53 | j | ||
54 | } | 61 | } |
55 | } | 62 | } |
diff --git a/src/feature/mod.rs b/src/feature/mod.rs index 5e00620..a52bb2c 100644 --- a/src/feature/mod.rs +++ b/src/feature/mod.rs | |||
@@ -1,5 +1,4 @@ | |||
1 | use std::boxed::Box; | 1 | use std::boxed::Box; |
2 | use std::error::Error; | ||
3 | 2 | ||
4 | extern crate telegram_bot; | 3 | extern crate telegram_bot; |
5 | use telegram_bot::{Api, Message}; | 4 | use telegram_bot::{Api, Message}; |
diff --git a/src/feature/tasterank.rs b/src/feature/tasterank.rs index c4a29f9..13730e1 100644 --- a/src/feature/tasterank.rs +++ b/src/feature/tasterank.rs | |||
@@ -1,4 +1,3 @@ | |||
1 | use std::option::Option; | ||
2 | use std::io; | 1 | use std::io; |
3 | use std::io::prelude::*; | 2 | use std::io::prelude::*; |
4 | use std::fs::File; | 3 | use std::fs::File; |
@@ -33,7 +32,9 @@ impl Feature for Tasterank { | |||
33 | for (i, rank) in self.ranks.iter().enumerate() { | 32 | for (i, rank) in self.ranks.iter().enumerate() { |
34 | msg.push_str(&format!("{}. {}\n", i + 1, rank)); | 33 | msg.push_str(&format!("{}. {}\n", i + 1, rank)); |
35 | } | 34 | } |
36 | a.send_message(m.chat.id(), msg, None, None, Some(m.message_id), None); | 35 | if let Err(e) = a.send_message(m.chat.id(), msg, None, None, Some(m.message_id), None) { |
36 | println!("{}", e); | ||
37 | } | ||
37 | return Ok(FeatureResult::Handled); | 38 | return Ok(FeatureResult::Handled); |
38 | } | 39 | } |
39 | Ok(FeatureResult::Skip) | 40 | Ok(FeatureResult::Skip) |