fix config change message, auto disconnect

This commit is contained in:
mii
2022-08-13 16:48:47 +09:00
parent 0b93c23e91
commit 1789bd7c4e
2 changed files with 24 additions and 13 deletions

View File

@ -36,6 +36,7 @@ impl EventHandler for Handler {
let res = (*v).clone(); let res = (*v).clone();
let mut config_changed = false; let mut config_changed = false;
let mut voicevox_changed = false;
match &*res { match &*res {
"TTS_CONFIG_ENGINE_SELECTED_GOOGLE" => { "TTS_CONFIG_ENGINE_SELECTED_GOOGLE" => {
config.tts_type = Some(TTSType::GCP); config.tts_type = Some(TTSType::GCP);
@ -49,6 +50,7 @@ impl EventHandler for Handler {
if res.starts_with("TTS_CONFIG_VOICEVOX_SPEAKER_SELECTED_") { if res.starts_with("TTS_CONFIG_VOICEVOX_SPEAKER_SELECTED_") {
config.voicevox_speaker = Some(i64::from_str_radix(&res.replace("TTS_CONFIG_VOICEVOX_SPEAKER_SELECTED_", ""), 10).unwrap()); config.voicevox_speaker = Some(i64::from_str_radix(&res.replace("TTS_CONFIG_VOICEVOX_SPEAKER_SELECTED_", ""), 10).unwrap());
config_changed = true; config_changed = true;
voicevox_changed = true;
} }
} }
} }
@ -56,14 +58,23 @@ impl EventHandler for Handler {
if config_changed { if config_changed {
let database = data_read.get::<DatabaseClientData>().expect("Cannot get DatabaseClientData").clone(); let database = data_read.get::<DatabaseClientData>().expect("Cannot get DatabaseClientData").clone();
let mut database = database.lock().await; let mut database = database.lock().await;
database.set_user_config(message_component.user.id.0, config).await.unwrap(); database.set_user_config(message_component.user.id.0, config.clone()).await.unwrap();
message_component.create_interaction_response(&ctx.http, |f| { if voicevox_changed && config.tts_type.unwrap_or(TTSType::GCP) == TTSType::GCP {
f.interaction_response_data(|d| { message_component.create_interaction_response(&ctx.http, |f| {
d.content("設定しました") f.interaction_response_data(|d| {
.flags(InteractionApplicationCommandCallbackDataFlags::EPHEMERAL) d.content("設定しました\nこの音声を使うにはAPIをGoogleからVOICEVOXに変更する必要があります。")
}) .flags(InteractionApplicationCommandCallbackDataFlags::EPHEMERAL)
}).await.unwrap(); })
}).await.unwrap();
} else {
message_component.create_interaction_response(&ctx.http, |f| {
f.interaction_response_data(|d| {
d.content("設定しました")
.flags(InteractionApplicationCommandCallbackDataFlags::EPHEMERAL)
})
}).await.unwrap();
}
} }
} }
} }

View File

@ -31,6 +31,12 @@ pub async fn voice_state_update(
_ => None, _ => None,
}; };
if let Some(message) = message {
instance.read(AnnounceMessage {
message
}, &ctx).await;
}
if voice_move_state == VoiceMoveState::LEAVE { if voice_move_state == VoiceMoveState::LEAVE {
let mut del_flag = false; let mut del_flag = false;
for channel in guild_id.channels(&ctx.http).await.unwrap() { for channel in guild_id.channels(&ctx.http).await.unwrap() {
@ -45,12 +51,6 @@ pub async fn voice_state_update(
let manager = songbird::get(&ctx).await.expect("Cannot get songbird client.").clone(); let manager = songbird::get(&ctx).await.expect("Cannot get songbird client.").clone();
manager.remove(guild_id.0).await.unwrap(); manager.remove(guild_id.0).await.unwrap();
} else {
if let Some(message) = message {
instance.read(AnnounceMessage {
message
}, &ctx).await;
}
} }
} }
} }