forked from Skynet/discord-bot
feat: unlink is now a subcommand of wolves
This commit is contained in:
parent
058f8a7a7d
commit
3a39084f40
2 changed files with 69 additions and 0 deletions
|
@ -449,3 +449,62 @@ pub mod verify {
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub mod wolves {
|
||||||
|
use serenity::all::{CommandOptionType, CreateCommand, CreateCommandOption};
|
||||||
|
|
||||||
|
pub mod unlink {
|
||||||
|
use serenity::all::{CommandInteraction, Context, UserId};
|
||||||
|
use skynet_discord_bot::common::database::{DataBase, Wolves};
|
||||||
|
use sqlx::{Pool, Sqlite};
|
||||||
|
|
||||||
|
pub async fn run(command: &CommandInteraction, ctx: &Context) -> String {
|
||||||
|
let db_lock = {
|
||||||
|
let data_read = ctx.data.read().await;
|
||||||
|
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
|
||||||
|
};
|
||||||
|
let db = db_lock.read().await;
|
||||||
|
|
||||||
|
// dosent matter if there is one or not, it will be removed regardless
|
||||||
|
delete_link(&db, &command.user.id).await;
|
||||||
|
|
||||||
|
"Discord link removed".to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn delete_link(db: &Pool<Sqlite>, user: &UserId) {
|
||||||
|
match sqlx::query_as::<_, Wolves>(
|
||||||
|
"
|
||||||
|
UPDATE wolves
|
||||||
|
SET discord = NULL
|
||||||
|
WHERE discord = ?1;
|
||||||
|
",
|
||||||
|
)
|
||||||
|
.bind(user.get() as i64)
|
||||||
|
.fetch_optional(db)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
Ok(_) => {}
|
||||||
|
Err(e) => {
|
||||||
|
dbg!(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn register() -> CreateCommand {
|
||||||
|
CreateCommand::new("wolves")
|
||||||
|
.description("Commands related to UL Wolves")
|
||||||
|
// All Committee members are able to add reactions to posts
|
||||||
|
.default_member_permissions(serenity::model::Permissions::ADD_REACTIONS)
|
||||||
|
.add_option(CreateCommandOption::new(
|
||||||
|
// link
|
||||||
|
|
||||||
|
// verify
|
||||||
|
|
||||||
|
// unlink
|
||||||
|
CommandOptionType::SubCommand,
|
||||||
|
"unlink",
|
||||||
|
"List out the Committee Roles Numbers",
|
||||||
|
))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
10
src/main.rs
10
src/main.rs
|
@ -117,6 +117,7 @@ Sign up on [UL Wolves]({}) and go to https://discord.com/channels/{}/{} and use
|
||||||
commands::role_adder::edit::register(),
|
commands::role_adder::edit::register(),
|
||||||
commands::link_email::link::register(),
|
commands::link_email::link::register(),
|
||||||
commands::link_email::verify::register(),
|
commands::link_email::verify::register(),
|
||||||
|
commands::link_email::wolves::register(),
|
||||||
commands::minecraft::server::add::register(),
|
commands::minecraft::server::add::register(),
|
||||||
commands::minecraft::server::list::register(),
|
commands::minecraft::server::list::register(),
|
||||||
commands::minecraft::server::delete::register(),
|
commands::minecraft::server::delete::register(),
|
||||||
|
@ -167,6 +168,15 @@ Sign up on [UL Wolves]({}) and go to https://discord.com/channels/{}/{} and use
|
||||||
let content = match command.data.name.as_str() {
|
let content = match command.data.name.as_str() {
|
||||||
// user commands
|
// user commands
|
||||||
"link_wolves" => commands::link_email::link::run(&command, &ctx).await,
|
"link_wolves" => commands::link_email::link::run(&command, &ctx).await,
|
||||||
|
"wolves" => match command.data.options.first() {
|
||||||
|
None => "Invalid Command".to_string(),
|
||||||
|
Some(x) => match x.name.as_str() {
|
||||||
|
"unlink" => commands::link_email::wolves::unlink::run(&command, &ctx).await,
|
||||||
|
// "link" => commands::count::servers::run(&command, &ctx).await,
|
||||||
|
&_ => format!("not implemented :( wolves {}", x.name.as_str()),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
"verify" => commands::link_email::verify::run(&command, &ctx).await,
|
"verify" => commands::link_email::verify::run(&command, &ctx).await,
|
||||||
"link_minecraft" => commands::minecraft::user::add::run(&command, &ctx).await,
|
"link_minecraft" => commands::minecraft::user::add::run(&command, &ctx).await,
|
||||||
// admin commands
|
// admin commands
|
||||||
|
|
Loading…
Add table
Reference in a new issue