FrenBot/src/main.rs
Joey Hines 1db0c5b3c0
Added shop commands
+ Ton of refactoring
+ clippy + fmt
2023-01-13 21:37:53 -07:00

85 lines
2.6 KiB
Rust

mod config;
mod discord;
mod error;
mod imgur;
mod insult_compliment;
mod inventory;
mod user;
use crate::config::{Args, BotConfig, Channel, GlobalData};
use crate::discord::emoji_race::RaceMessage;
use crate::discord::unrecognised_command_hook;
use magick_rust::magick_wand_genesis;
use serenity::framework::standard::macros::{command, group, help, hook};
use serenity::framework::standard::StandardFramework;
use serenity::prelude::*;
use songbird::SerenityInit;
use std::sync::Once;
use structopt::StructOpt;
const BAD_APPLE: &str = include_str!("assets/bad_apple.txt");
static START: Once = Once::new();
#[tokio::main]
async fn main() {
let args: Args = Args::from_args();
let cfg = match BotConfig::new(&args.cfg_path) {
Ok(cfg) => cfg,
Err(err) => {
println!("Unable to open config: {}", err);
return;
}
};
START.call_once(|| {
magick_wand_genesis();
});
let global_data = match GlobalData::new(args, cfg).await {
Ok(global_data) => global_data,
Err(err) => {
println!("Error parsing config: {}", err);
return;
}
};
let framework = StandardFramework::new()
.configure(|c| c.with_whitespace(true).prefix("!").ignore_bots(true))
.group(&discord::color::COLOR_GROUP)
.group(&discord::album::ALBUM_GROUP)
.group(&discord::celeryman::CELERYMAN_GROUP)
.group(&discord::joke::JOKE_GROUP)
.group(&discord::admin::ADMIN_GROUP)
.group(&discord::story::STORY_GROUP)
.group(&discord::fren_coin::FRENCOIN_GROUP)
.group(&discord::emoji_race::EMOJIRACE_GROUP)
.group(&discord::motivate::MOTIVATE_GROUP)
.group(&discord::voices::VOICES_GROUP)
.group(&discord::shop::SHOP_GROUP)
.unrecognised_command(unrecognised_command_hook)
.bucket("bad_apple", |b| b.delay(60 * 10))
.await
.help(&discord::MY_HELP)
.after(discord::after);
let story_channel = Channel::<String>::new();
let race_channel = Channel::<RaceMessage>::new();
let intents = GatewayIntents::all();
let mut client = Client::builder(&global_data.cfg.bot_token, intents)
.framework(framework)
.register_songbird()
.type_map_insert::<GlobalData>(global_data)
.type_map_insert::<Channel<String>>(story_channel)
.type_map_insert::<Channel<RaceMessage>>(race_channel)
.event_handler(discord::Handler)
.await
.expect("Unable to create client.");
if let Err(err) = client.start().await {
println!("Client error: {:?}", err);
}
}