|
|
|
|
@ -1,16 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mod commands;
|
|
|
|
|
mod data_loader;
|
|
|
|
|
mod utils;
|
|
|
|
|
|
|
|
|
|
use std::collections::HashSet;
|
|
|
|
|
|
|
|
|
|
use serenity::async_trait;
|
|
|
|
|
use serenity::prelude::*;
|
|
|
|
|
use serenity::model::prelude::*;
|
|
|
|
|
use serenity::model::channel::Message;
|
|
|
|
|
use serenity::model::gateway::Ready;
|
|
|
|
|
use serenity::http::Http;
|
|
|
|
|
use serenity::prelude::*;
|
|
|
|
|
use serenity::model::prelude::*;
|
|
|
|
|
|
|
|
|
|
struct Handler;
|
|
|
|
|
|
|
|
|
|
@ -24,7 +23,52 @@ impl EventHandler for Handler
|
|
|
|
|
// events can be dispatched simultaneously.
|
|
|
|
|
async fn message(&self, ctx: Context, msg: Message)
|
|
|
|
|
{
|
|
|
|
|
commands::parse(ctx, msg).await;
|
|
|
|
|
|
|
|
|
|
if let Some(server_id) = msg.guild_id
|
|
|
|
|
{
|
|
|
|
|
let sm_speedrun_server_id = 98929157894836224;
|
|
|
|
|
let guru_test_server_id = 483735475283165195;
|
|
|
|
|
|
|
|
|
|
if server_id == sm_speedrun_server_id || server_id == guru_test_server_id
|
|
|
|
|
{
|
|
|
|
|
if msg.content == ".role_test"
|
|
|
|
|
{
|
|
|
|
|
let test_role = RoleId(1129106677619228702 as u64);
|
|
|
|
|
if let Err(why) = server_id.edit_member(&ctx, msg.author, |m|
|
|
|
|
|
{
|
|
|
|
|
if let Some(mut member) = msg.member
|
|
|
|
|
{
|
|
|
|
|
member.roles.push(test_role);
|
|
|
|
|
return m.roles(member.roles);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m
|
|
|
|
|
}).await
|
|
|
|
|
{
|
|
|
|
|
println!("Error updating roles: {:?}", why);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
let role = &server_id.roles(&ctx).await.unwrap()[&test_role];
|
|
|
|
|
if let Err(why) = msg.channel_id.say(&ctx.http, format!("{} role added!", role)).await
|
|
|
|
|
{
|
|
|
|
|
println!("Error sending message: {:?}", why);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if msg.content == ".randomizer"
|
|
|
|
|
{
|
|
|
|
|
let item = utils::get_random_item();
|
|
|
|
|
if let Err(why) = msg.channel_id.say(&ctx.http, format!("You found {}!", item)).await
|
|
|
|
|
{
|
|
|
|
|
println!("Error sending message: {:?}", why);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -49,16 +93,6 @@ async fn main()
|
|
|
|
|
Err(why) => panic!("Could not load app token: {}", why),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Fetch the application owner id
|
|
|
|
|
let http = Http::new(&token);
|
|
|
|
|
let owner = match http.get_current_application_info().await
|
|
|
|
|
{
|
|
|
|
|
Ok(info) => info.owner.id,
|
|
|
|
|
Err(why) => panic!("Could not access application info: {:?}", why),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
println!("Connecting...");
|
|
|
|
|
|
|
|
|
|
let intents = GatewayIntents::GUILD_MESSAGES
|
|
|
|
|
@ -70,10 +104,6 @@ async fn main()
|
|
|
|
|
// by Discord for bot users.
|
|
|
|
|
let mut client = Client::builder(&token, intents).event_handler(Handler).await.expect("Err creating client");
|
|
|
|
|
|
|
|
|
|
// TODO: See link for how to add global data to the client:
|
|
|
|
|
// https://github.com/serenity-rs/serenity/blob/current/examples/e12_global_data/src/main.rs
|
|
|
|
|
// client.data.write().await.insert::<UserId>(owner);
|
|
|
|
|
|
|
|
|
|
// Finally, start a single shard, and start listening to events.
|
|
|
|
|
//
|
|
|
|
|
// Shards will automatically attempt to reconnect, and will perform
|
|
|
|
|
|