61 lines
1.8 KiB
Rust
61 lines
1.8 KiB
Rust
use regex::Regex;
|
|
use serenity::async_trait;
|
|
use serenity::model::channel::Message;
|
|
use serenity::prelude::{Context, EventHandler};
|
|
|
|
pub(crate) struct BestDoctorResponder {
|
|
regex: Regex,
|
|
}
|
|
|
|
impl Default for BestDoctorResponder {
|
|
fn default() -> Self {
|
|
Self {
|
|
regex: Regex::new(r"(?:[fF][uU]){3,}").unwrap(),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[async_trait]
|
|
impl EventHandler for BestDoctorResponder {
|
|
async fn message(&self, ctx: Context, message: Message) {
|
|
let content = &message.content_safe(ctx.clone()).await;
|
|
if self.regex.is_match(content) {
|
|
message
|
|
.channel_id
|
|
.say(ctx, get_desu())
|
|
.await
|
|
.unwrap();
|
|
}
|
|
}
|
|
}
|
|
|
|
const DESU_STRINGS: &[&str] = &[
|
|
"です。",
|
|
"desu~",
|
|
"desu.",
|
|
r#"
|
|
```
|
|
ででででででででででで すす
|
|
ででで すすすすすすすすす
|
|
でで でで すす
|
|
でで でで すすす
|
|
でで す す
|
|
でで すすす
|
|
でで すす
|
|
でで すす
|
|
でで すす
|
|
```"#,
|
|
];
|
|
|
|
fn get_desu() -> &'static str {
|
|
use rand::seq::SliceRandom;
|
|
use rand::thread_rng;
|
|
|
|
DESU_STRINGS.choose(&mut thread_rng()).unwrap()
|
|
// // https://imgur.com/a/yOb5n
|
|
// messageList.add(channel -> channel.sendMessage(new MessageBuilder()
|
|
// .setContent("https://www.youtube.com/watch?v=60mLvBWOMb4").build()));
|
|
// messageList.add(channel -> channel.sendFile(Desu.class.getResourceAsStream("/desu/desu.jpg"), "desu.jpg"));
|
|
// messageList.add(channel -> channel.sendMessage("desu~"));
|
|
}
|