|
1 | 1 | use crate::slack;
|
2 |
| -use lazy_static::lazy_static; |
3 | 2 | use rand::{thread_rng, Rng};
|
4 | 3 |
|
5 | 4 | struct MonsterHunterData<'a> {
|
6 |
| - keywords: Vec<&'a str>, |
| 5 | + keywords: &'a [&'a str], |
7 | 6 | text: &'a str,
|
8 | 7 | image_url: &'a str,
|
9 | 8 | }
|
10 | 9 |
|
11 |
| -lazy_static! { |
12 |
| - static ref MHW_DATA: Vec<MonsterHunterData<'static>> = vec![ |
13 |
| - MonsterHunterData { |
14 |
| - keywords: vec!["ㄷㄷ", "ㄷㄷ가마루", "도도가마루"], |
15 |
| - text: "도도가마루", |
16 |
| - image_url: |
17 |
| - "https://raw.githubusercontent.com/skyser2003/ditto_bot_rust/master/images/Dodogama.png" |
18 |
| - }, |
19 |
| - MonsterHunterData { |
20 |
| - keywords: vec!["ㅊㅊ", "추천"], |
21 |
| - text: "치치야크", |
22 |
| - image_url: |
23 |
| - "https://raw.githubusercontent.com/skyser2003/ditto_bot_rust/master/images/Tzitzi_Ya_Ku.png" |
24 |
| - }, |
25 |
| - MonsterHunterData { |
26 |
| - keywords: vec!["ㅈㄹ", "지랄"], |
27 |
| - text: "조라마그다라오스", |
28 |
| - image_url: |
29 |
| - "https://raw.githubusercontent.com/skyser2003/ditto_bot_rust/master/images/Zorah_Magdaros.png" |
30 |
| - }, |
31 |
| - MonsterHunterData { |
32 |
| - keywords: vec!["ㄹㅇ", "리얼"], |
33 |
| - text: "로아루드로스", |
34 |
| - image_url: |
35 |
| - "https://raw.githubusercontent.com/skyser2003/ditto_bot_rust/master/images/Royal_Ludroth.png" |
36 |
| - }, |
37 |
| - MonsterHunterData { |
38 |
| - keywords: vec!["ㅇㄷ"], |
39 |
| - text: "오도가론", |
40 |
| - image_url: |
41 |
| - "https://raw.githubusercontent.com/skyser2003/ditto_bot_rust/master/images/Odogaron.png" |
42 |
| - }, |
43 |
| - MonsterHunterData { |
44 |
| - keywords: vec!["이불", "졸려", "잘래", "잠와", "이블조"], |
45 |
| - text: "이블조", |
46 |
| - image_url: |
47 |
| - "https://raw.githubusercontent.com/skyser2003/ditto_bot_rust/master/images/Evil_Jaw.png" |
48 |
| - }, |
49 |
| - ]; |
| 10 | +macro_rules! url_prefix { |
| 11 | + () => { |
| 12 | + "https://raw.githubusercontent.com/skyser2003/ditto_bot_rust/master/images/" |
| 13 | + }; |
50 | 14 | }
|
51 | 15 |
|
| 16 | +const MHW_DATA: &'static [MonsterHunterData<'static>] = &[ |
| 17 | + MonsterHunterData { |
| 18 | + keywords: &["ㄷㄷ", "ㄷㄷ가마루", "도도가마루"], |
| 19 | + text: "도도가마루", |
| 20 | + image_url: concat!(url_prefix!(), "Dodogama.png"), |
| 21 | + }, |
| 22 | + MonsterHunterData { |
| 23 | + keywords: &["ㅊㅊ", "추천"], |
| 24 | + text: "치치야크", |
| 25 | + image_url: concat!(url_prefix!(), "Tzitzi_Ya_Ku.png"), |
| 26 | + }, |
| 27 | + MonsterHunterData { |
| 28 | + keywords: &["ㅈㄹ", "지랄"], |
| 29 | + text: "조라마그다라오스", |
| 30 | + image_url: concat!(url_prefix!(), "Zorah_Magdaros.png"), |
| 31 | + }, |
| 32 | + MonsterHunterData { |
| 33 | + keywords: &["ㄹㅇ", "리얼"], |
| 34 | + text: "로아루드로스", |
| 35 | + image_url: concat!(url_prefix!(), "Royal_Ludroth.png"), |
| 36 | + }, |
| 37 | + MonsterHunterData { |
| 38 | + keywords: &["ㅇㄷ"], |
| 39 | + text: "오도가론", |
| 40 | + image_url: concat!(url_prefix!(), "Odogaron.png"), |
| 41 | + }, |
| 42 | + MonsterHunterData { |
| 43 | + keywords: &["이불", "졸려", "잘래", "잠와", "이블조"], |
| 44 | + text: "이블조", |
| 45 | + image_url: concat!(url_prefix!(), "Evil_Jaw.png"), |
| 46 | + }, |
| 47 | +]; |
| 48 | + |
52 | 49 | pub async fn handle<B: crate::Bot>(bot: &B, msg: &crate::MessageEvent) -> anyhow::Result<()> {
|
53 | 50 | // TODO: Remove hard coded value
|
54 | 51 | if thread_rng().gen_range(0..100) < 35 {
|
55 |
| - for data in &*MHW_DATA { |
56 |
| - for keyword in &data.keywords { |
| 52 | + for data in MHW_DATA { |
| 53 | + for keyword in data.keywords { |
57 | 54 | if msg.text.contains(keyword) {
|
58 | 55 | bot.send_message(
|
59 | 56 | &msg.channel,
|
|
0 commit comments