mirror of
https://github.com/stoatchat/stoatchat.git
synced 2026-07-14 05:26:59 +00:00
fix: dont break on user not still being in channel and force disconnecting
This commit is contained in:
@@ -244,7 +244,7 @@ pub async fn ingress(
|
||||
if disconnect {
|
||||
log::debug!("Removing user {user_id} from channel {channel_id} {event:?} due to forbidden track.");
|
||||
|
||||
voice_client.remove_user(node, user_id, channel_id).await?;
|
||||
let _ = voice_client.remove_user(node, user_id, channel_id).await;
|
||||
delete_voice_state(channel_id, channel.server(), user_id).await?;
|
||||
|
||||
return Ok(EmptyResponse);
|
||||
|
||||
@@ -22,10 +22,11 @@ pub async fn delete_bot(
|
||||
bot.delete(db).await?;
|
||||
|
||||
for channel_id in get_user_voice_channels(&bot.id).await? {
|
||||
let node = get_channel_node(&channel_id).await?.unwrap();
|
||||
let channel = Reference::from_unchecked(&channel_id).as_channel(db).await?;
|
||||
if let Some(node) = get_channel_node(&channel_id).await? {
|
||||
let _ = voice_client.remove_user(&node, &bot.id, &channel_id).await;
|
||||
}
|
||||
|
||||
voice_client.remove_user(&node, &bot.id, &channel_id).await?;
|
||||
let channel = Reference::from_unchecked(&channel_id).as_channel(db).await?;
|
||||
|
||||
delete_voice_state(&channel_id, channel.server(), &bot.id).await?;
|
||||
}
|
||||
|
||||
@@ -48,9 +48,10 @@ pub async fn remove_member(
|
||||
};
|
||||
|
||||
if is_in_voice_channel(&user.id, channel.id()).await? {
|
||||
let node = get_channel_node(channel.id()).await?.unwrap();
|
||||
if let Some(node) = get_channel_node(channel.id()).await? {
|
||||
let _ = voice_client.remove_user(&node, &user.id, channel.id()).await;
|
||||
}
|
||||
|
||||
voice_client.remove_user(&node, &user.id, channel.id()).await?;
|
||||
delete_voice_state(channel.id(), None, &user.id).await?;
|
||||
};
|
||||
|
||||
|
||||
@@ -79,15 +79,15 @@ pub async fn call(
|
||||
// should only ever loop once but just to cover our backs.
|
||||
|
||||
for channel_id in get_user_voice_channels(&user.id).await? {
|
||||
let node = get_channel_node(&channel_id).await?.unwrap();
|
||||
if let Some(node) = get_channel_node(&channel_id).await? {
|
||||
// if this errors its just a mismatching state - ignore and proceed to still delete our state
|
||||
let _ = voice_client.remove_user(&node, &user.id, &channel_id).await;
|
||||
};
|
||||
|
||||
let channel = Reference::from_unchecked(&channel_id)
|
||||
.as_channel(db)
|
||||
.await?;
|
||||
|
||||
voice_client
|
||||
.remove_user(&node, &user.id, &channel_id)
|
||||
.await?;
|
||||
|
||||
delete_voice_state(&channel_id, channel.server(), &user.id).await?;
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -59,9 +59,9 @@ pub async fn ban(
|
||||
|
||||
// If the member is in a voice channel while banned kick them from the voice channel
|
||||
if let Some(channel_id) = get_user_voice_channel_in_server(&user.id, &server.id).await? {
|
||||
let node = get_channel_node(&channel_id).await?.unwrap();
|
||||
|
||||
voice_client.remove_user(&node, &user.id, &channel_id).await?;
|
||||
if let Some(node) = get_channel_node(&channel_id).await? {
|
||||
let _ = voice_client.remove_user(&node, &user.id, &channel_id).await;
|
||||
}
|
||||
|
||||
delete_voice_state(&channel_id, Some(&server.id), &user.id).await?
|
||||
}
|
||||
|
||||
@@ -47,9 +47,9 @@ pub async fn kick(
|
||||
.await?;
|
||||
|
||||
if let Some(channel_id) = get_user_voice_channel_in_server(&user.id, &server.id).await? {
|
||||
let node = get_channel_node(&channel_id).await?.unwrap();
|
||||
|
||||
voice_client.remove_user(&node, &user.id, &channel_id).await?;
|
||||
if let Some(node) = get_channel_node(&channel_id).await? {
|
||||
let _ = voice_client.remove_user(&node, &user.id, &channel_id).await;
|
||||
}
|
||||
|
||||
delete_voice_state(&channel_id, Some(&server.id), &user.id).await?;
|
||||
};
|
||||
|
||||
@@ -39,9 +39,9 @@ pub async fn delete(
|
||||
} else {
|
||||
if let Some(channel_id) = get_user_voice_channel_in_server(&user.id, &server.id).await? {
|
||||
if server.channels.iter().any(|c| c == &channel_id) {
|
||||
let node = get_channel_node(&channel_id).await?.unwrap();
|
||||
|
||||
voice_client.remove_user(&node, &user.id, &channel_id).await?;
|
||||
if let Some(node) = get_channel_node(&channel_id).await? {
|
||||
let _ = voice_client.remove_user(&node, &user.id, &channel_id).await;
|
||||
}
|
||||
|
||||
delete_voice_state(&channel_id, Some(&server.id), &user.id).await?;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user