2021-11-12 12:02:22 +00:00
|
|
|
use std::sync::atomic::AtomicBool;
|
|
|
|
|
|
|
|
|
|
use serenity::async_trait;
|
|
|
|
|
use serenity::model::{
|
|
|
|
|
gateway::Ready,
|
|
|
|
|
id::ChannelId,
|
|
|
|
|
};
|
|
|
|
|
use serenity::prelude::{Context, EventHandler};
|
2022-07-17 23:25:59 +00:00
|
|
|
use crate::ManifoldConfig;
|
2021-11-12 12:02:22 +00:00
|
|
|
|
|
|
|
|
use crate::responses::Responses;
|
|
|
|
|
|
|
|
|
|
pub struct Handler {
|
2021-11-12 12:15:59 +00:00
|
|
|
pub timer_running: AtomicBool,
|
2021-11-12 12:02:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl Handler {
|
|
|
|
|
pub fn new() -> Self {
|
|
|
|
|
Handler {
|
|
|
|
|
timer_running: AtomicBool::from(false)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-11-19 23:56:14 +00:00
|
|
|
pub async fn standard_startup(ctx: &Context, data_about_bot: Ready) {
|
2021-11-12 12:02:22 +00:00
|
|
|
let data = ctx.data.read().await;
|
|
|
|
|
let config = match data.get::<ManifoldConfig>() {
|
|
|
|
|
Some(c) => c.lock().await,
|
|
|
|
|
None => return
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
let responses = match data.get::<Responses>() {
|
|
|
|
|
Some(r) => r.lock().await,
|
|
|
|
|
None => return
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
let greeting = match responses.get_response(&"bot startup".to_string()) {
|
2022-07-12 01:02:15 +00:00
|
|
|
Some(g) => g.replace("{NAME}", &*ctx.cache.current_user().name).replace("{COFFEE_TYPE}", "espresso").to_string(),
|
2021-11-12 12:02:22 +00:00
|
|
|
None => "Manifold bot connected to discord and ready to begin broadcast operations.".to_string(),
|
|
|
|
|
};
|
|
|
|
|
|
2022-07-17 23:25:59 +00:00
|
|
|
let bot_nickname = config.get_value(&"BotNickname".to_string()).unwrap_or("BrokenManifoldBot".to_string());
|
|
|
|
|
let channel: ChannelId = config.get_channel(&"Log".to_string()).expect("Specified log channel invalid or unavailable");
|
2021-11-17 15:12:21 +00:00
|
|
|
for guild in data_about_bot.guilds {
|
2022-07-17 23:25:59 +00:00
|
|
|
match guild.id.edit_nickname(&ctx, Some(&*bot_nickname)).await {
|
2021-11-17 15:12:21 +00:00
|
|
|
Ok(()) => (),
|
|
|
|
|
Err(e) => {
|
|
|
|
|
error!("Error setting bot nickname (lack permission?): {:?}", e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-11-12 12:02:22 +00:00
|
|
|
|
|
|
|
|
channel.say(&ctx, greeting).await.expect("Couldn't message log channel!");
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-11-19 23:37:59 +00:00
|
|
|
|
|
|
|
|
#[async_trait]
|
|
|
|
|
impl EventHandler for Handler {
|
|
|
|
|
async fn ready(&self, ctx: Context, data_about_bot: Ready) {
|
2021-11-19 23:56:14 +00:00
|
|
|
Handler::standard_startup(&ctx, data_about_bot).await;
|
2021-11-19 23:37:59 +00:00
|
|
|
}
|
|
|
|
|
}
|