starting other commands
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
pub mod info_cmds;
|
||||
pub mod reminder_cmds;
|
||||
pub mod todo_cmds;
|
||||
pub mod moderation_cmds;
|
||||
|
25
src/commands/moderation_cmds.rs
Normal file
25
src/commands/moderation_cmds.rs
Normal file
@ -0,0 +1,25 @@
|
||||
use regex_command_attr::command;
|
||||
|
||||
use serenity::{
|
||||
client::Context,
|
||||
model::{
|
||||
channel::{
|
||||
Message,
|
||||
},
|
||||
},
|
||||
framework::standard::CommandResult,
|
||||
};
|
||||
|
||||
use crate::SQLPool;
|
||||
|
||||
#[command]
|
||||
#[supports_dm(false)]
|
||||
#[permission_level(Restricted)]
|
||||
async fn blacklist(ctx: &Context, msg: &Message, args: String) -> CommandResult {
|
||||
let pool = ctx.data.read().await
|
||||
.get::<SQLPool>().cloned().expect("Could not get SQLPool from data");
|
||||
|
||||
if
|
||||
|
||||
Ok(())
|
||||
}
|
@ -179,6 +179,7 @@ enum SubCommand {
|
||||
}
|
||||
|
||||
#[command]
|
||||
#[permission_level(Managed)]
|
||||
async fn todo_parse(ctx: &Context, msg: &Message, args: String) -> CommandResult {
|
||||
|
||||
let mut split = args.split(" ");
|
||||
|
@ -1,3 +1,4 @@
|
||||
mod models;
|
||||
mod framework;
|
||||
mod commands;
|
||||
|
||||
@ -29,6 +30,7 @@ use crate::commands::{
|
||||
info_cmds,
|
||||
reminder_cmds,
|
||||
todo_cmds,
|
||||
moderation_cmds,
|
||||
};
|
||||
|
||||
struct SQLPool;
|
||||
@ -56,6 +58,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
||||
.add_command("info", &info_cmds::INFO_COMMAND)
|
||||
.add_command("donate", &info_cmds::DONATE_COMMAND)
|
||||
.add_command("todo", &todo_cmds::TODO_PARSE_COMMAND)
|
||||
.add_command("blacklist", &moderation_cmds::BLACKLIST_COMMAND)
|
||||
.build();
|
||||
|
||||
let mut client = Client::new(&env::var("DISCORD_TOKEN").expect("Missing DISCORD_TOKEN from environment"))
|
||||
|
37
src/models.rs
Normal file
37
src/models.rs
Normal file
@ -0,0 +1,37 @@
|
||||
|
||||
use sqlx::MySqlPool;
|
||||
use chrono::NaiveDateTime;
|
||||
|
||||
struct Channel {
|
||||
id: u32,
|
||||
channel: u64,
|
||||
name: String,
|
||||
nudge: i16,
|
||||
blacklisted: bool,
|
||||
webhook_id: u64,
|
||||
webhook_token: String,
|
||||
paused: bool,
|
||||
paused_until: NaiveDateTime,
|
||||
guild_id: u32,
|
||||
}
|
||||
|
||||
impl Channel {
|
||||
async fn from_id(channel: u64, pool: MySqlPool) -> Result<Channel, Box<dyn std::error::Error + Sync + Send>> {
|
||||
if let Some(c) = sqlx::query_as!(Self,
|
||||
"
|
||||
SELECT * FROM channels WHERE channel = ?
|
||||
", channel)
|
||||
.fetch_one(&pool)
|
||||
.await? {
|
||||
|
||||
c
|
||||
}
|
||||
else {
|
||||
sqlx::query!(
|
||||
"
|
||||
INSERT INTO channels (channel, guild_id) VALUES ()
|
||||
"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user