permissions
This commit is contained in:
parent
0df5466052
commit
d82cbf2fd6
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="dataSourceStorageLocal" created-in="CL-213.6777.58">
|
<component name="dataSourceStorageLocal" created-in="CL-221.5080.224">
|
||||||
<data-source name="MySQL for 5.1 - soundfx@localhost" uuid="1067c1d0-1386-4a39-b3f5-6d48d6f279eb">
|
<data-source name="MySQL for 5.1 - soundfx@localhost" uuid="1067c1d0-1386-4a39-b3f5-6d48d6f279eb">
|
||||||
<database-info product="" version="" jdbc-version="" driver-name="" driver-version="" dbms="MYSQL" exact-version="0" />
|
<database-info product="" version="" jdbc-version="" driver-name="" driver-version="" dbms="MYSQL" exact-version="0" />
|
||||||
<secret-storage>master_key</secret-storage>
|
<secret-storage>master_key</secret-storage>
|
||||||
|
749
Cargo.lock
generated
749
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -6,7 +6,7 @@ edition = "2018"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
songbird = { git = "https://github.com/serenity-rs/songbird", branch = "next", features = ["builtin-queue"] }
|
songbird = { git = "https://github.com/serenity-rs/songbird", branch = "next", features = ["builtin-queue"] }
|
||||||
poise = { git = "https://github.com/kangalioo/poise", branch = "master" }
|
poise = { git = "https://github.com/jellywx/poise", branch = "jellywx-pv2" }
|
||||||
sqlx = { version = "0.5", default-features = false, features = ["runtime-tokio-rustls", "macros", "mysql", "bigdecimal"] }
|
sqlx = { version = "0.5", default-features = false, features = ["runtime-tokio-rustls", "macros", "mysql", "bigdecimal"] }
|
||||||
dotenv = "0.15"
|
dotenv = "0.15"
|
||||||
tokio = { version = "1", features = ["fs", "process", "io-util"] }
|
tokio = { version = "1", features = ["fs", "process", "io-util"] }
|
||||||
@ -17,3 +17,6 @@ regex = "1.4"
|
|||||||
log = "0.4"
|
log = "0.4"
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
dashmap = "4.0"
|
dashmap = "4.0"
|
||||||
|
|
||||||
|
[patch."https://github.com/serenity-rs/serenity"]
|
||||||
|
serenity = { git = "https://github.com//serenity-rs/serenity", branch = "current" }
|
||||||
|
@ -9,7 +9,12 @@ use crate::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
/// Upload a new sound to the bot
|
/// Upload a new sound to the bot
|
||||||
#[poise::command(slash_command, rename = "upload", category = "Manage")]
|
#[poise::command(
|
||||||
|
slash_command,
|
||||||
|
rename = "upload",
|
||||||
|
category = "Manage",
|
||||||
|
required_permissions = "MANAGE_GUILD"
|
||||||
|
)]
|
||||||
pub async fn upload_new_sound(
|
pub async fn upload_new_sound(
|
||||||
ctx: Context<'_>,
|
ctx: Context<'_>,
|
||||||
#[description = "Name to upload sound to"] name: String,
|
#[description = "Name to upload sound to"] name: String,
|
||||||
|
@ -2,14 +2,15 @@ use poise::serenity::{
|
|||||||
builder::CreateActionRow, model::interactions::message_component::ButtonStyle,
|
builder::CreateActionRow, model::interactions::message_component::ButtonStyle,
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::models::guild_data::CtxGuildData;
|
|
||||||
use crate::utils::{join_channel, queue_audio};
|
|
||||||
use crate::{
|
use crate::{
|
||||||
cmds::autocomplete_sound, models::sound::SoundCtx, utils::play_from_query, Context, Error,
|
cmds::autocomplete_sound,
|
||||||
|
models::{guild_data::CtxGuildData, sound::SoundCtx},
|
||||||
|
utils::{join_channel, play_from_query, queue_audio},
|
||||||
|
Context, Error,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Play a sound in your current voice channel
|
/// Play a sound in your current voice channel
|
||||||
#[poise::command(slash_command)]
|
#[poise::command(slash_command, required_permissions = "SPEAK")]
|
||||||
pub async fn play(
|
pub async fn play(
|
||||||
ctx: Context<'_>,
|
ctx: Context<'_>,
|
||||||
#[description = "Name or ID of sound to play"]
|
#[description = "Name or ID of sound to play"]
|
||||||
@ -35,7 +36,7 @@ pub async fn play(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Play up to 25 sounds on queue
|
/// Play up to 25 sounds on queue
|
||||||
#[poise::command(slash_command, rename = "queue")]
|
#[poise::command(slash_command, rename = "queue", required_permissions = "SPEAK")]
|
||||||
pub async fn queue_play(
|
pub async fn queue_play(
|
||||||
ctx: Context<'_>,
|
ctx: Context<'_>,
|
||||||
#[description = "Name or ID for queue position 1"]
|
#[description = "Name or ID for queue position 1"]
|
||||||
@ -196,7 +197,7 @@ pub async fn queue_play(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Loop a sound in your current voice channel
|
/// Loop a sound in your current voice channel
|
||||||
#[poise::command(slash_command, rename = "loop")]
|
#[poise::command(slash_command, rename = "loop", required_permissions = "SPEAK")]
|
||||||
pub async fn loop_play(
|
pub async fn loop_play(
|
||||||
ctx: Context<'_>,
|
ctx: Context<'_>,
|
||||||
#[description = "Name or ID of sound to loop"]
|
#[description = "Name or ID of sound to loop"]
|
||||||
@ -222,7 +223,12 @@ pub async fn loop_play(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Get a menu of sounds with buttons to play them
|
/// Get a menu of sounds with buttons to play them
|
||||||
#[poise::command(slash_command, rename = "soundboard", category = "Play")]
|
#[poise::command(
|
||||||
|
slash_command,
|
||||||
|
rename = "soundboard",
|
||||||
|
category = "Play",
|
||||||
|
required_permissions = "SPEAK"
|
||||||
|
)]
|
||||||
pub async fn soundboard(
|
pub async fn soundboard(
|
||||||
ctx: Context<'_>,
|
ctx: Context<'_>,
|
||||||
#[description = "Name or ID of sound for button 1"]
|
#[description = "Name or ID of sound for button 1"]
|
||||||
|
@ -3,7 +3,7 @@ use songbird;
|
|||||||
use crate::{Context, Error};
|
use crate::{Context, Error};
|
||||||
|
|
||||||
/// Stop the bot from playing and clear the play queue
|
/// Stop the bot from playing and clear the play queue
|
||||||
#[poise::command(slash_command, rename = "stop")]
|
#[poise::command(slash_command, rename = "stop", required_permissions = "MANAGE_GUILD")]
|
||||||
pub async fn stop_playing(ctx: Context<'_>) -> Result<(), Error> {
|
pub async fn stop_playing(ctx: Context<'_>) -> Result<(), Error> {
|
||||||
let songbird = songbird::get(ctx.discord()).await.unwrap();
|
let songbird = songbird::get(ctx.discord()).await.unwrap();
|
||||||
let call_opt = songbird.get(ctx.guild_id().unwrap());
|
let call_opt = songbird.get(ctx.guild_id().unwrap());
|
||||||
@ -20,7 +20,7 @@ pub async fn stop_playing(ctx: Context<'_>) -> Result<(), Error> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Disconnect the bot
|
/// Disconnect the bot
|
||||||
#[poise::command(slash_command)]
|
#[poise::command(slash_command, required_permissions = "SPEAK")]
|
||||||
pub async fn disconnect(ctx: Context<'_>) -> Result<(), Error> {
|
pub async fn disconnect(ctx: Context<'_>) -> Result<(), Error> {
|
||||||
let songbird = songbird::get(ctx.discord()).await.unwrap();
|
let songbird = songbird::get(ctx.discord()).await.unwrap();
|
||||||
let _ = songbird.leave(ctx.guild_id().unwrap()).await;
|
let _ = songbird.leave(ctx.guild_id().unwrap()).await;
|
||||||
|
@ -63,7 +63,7 @@ pub async fn listener(ctx: &Context, event: &poise::Event<'_>, data: &Data) -> R
|
|||||||
if let Some(channel_id) = past_state.channel_id {
|
if let Some(channel_id) = past_state.channel_id {
|
||||||
if let Some(Channel::Guild(channel)) = channel_id.to_channel_cached(&ctx) {
|
if let Some(Channel::Guild(channel)) = channel_id.to_channel_cached(&ctx) {
|
||||||
if channel.members(&ctx).await.map(|m| m.len()).unwrap_or(0) <= 1 {
|
if channel.members(&ctx).await.map(|m| m.len()).unwrap_or(0) <= 1 {
|
||||||
let songbird = songbird::get(&ctx).await.unwrap();
|
let songbird = songbird::get(ctx).await.unwrap();
|
||||||
|
|
||||||
let _ = songbird.remove(guild_id).await;
|
let _ = songbird.remove(guild_id).await;
|
||||||
}
|
}
|
||||||
|
@ -145,11 +145,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
.options(options)
|
.options(options)
|
||||||
.client_settings(move |client_builder| {
|
.client_settings(move |client_builder| client_builder.register_songbird())
|
||||||
client_builder
|
|
||||||
.intents(GatewayIntents::GUILD_VOICE_STATES | GatewayIntents::GUILDS)
|
.intents(GatewayIntents::GUILD_VOICE_STATES | GatewayIntents::GUILDS)
|
||||||
.register_songbird()
|
|
||||||
})
|
|
||||||
.run_autosharded()
|
.run_autosharded()
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user