private void Handle_Chat_Mod_Operation_Client_Message( CChatModOperationMessage mod_msg, EPersistenceID player_id ) { CServerChatChannel channel = Get_Channel_By_Channel_ID( mod_msg.ChannelID ); if ( channel == null ) { Send_Message_To_Player( new CChatModOperationErrorMessage( EChatModOperationError.Unknown_Channel ), player_id ); return; } if ( channel.Moderator != player_id ) { Send_Message_To_Player( new CChatModOperationErrorMessage( EChatModOperationError.Not_Moderator ), player_id ); return; } EPersistenceID target_id = Get_Persistence_ID_By_Name( mod_msg.PlayerName ); if ( target_id == EPersistenceID.Invalid || !channel.Is_Member( target_id ) ) { Send_Message_To_Player( new CChatModOperationErrorMessage( EChatModOperationError.No_Such_Player_In_Channel ), player_id ); return; } if ( target_id == player_id ) { Send_Message_To_Player( new CChatModOperationErrorMessage( EChatModOperationError.Cannot_Do_That_To_Self ), player_id ); return; } switch ( mod_msg.Operation ) { case EChatModOperation.Gag: if ( channel.Gag_Player( target_id ) ) { Send_Notification_To_Channel( channel.ID, player_id, target_id, EChatNotification.Player_Gagged, EPersistenceID.Invalid ); } else { Send_Message_To_Player( new CChatModOperationErrorMessage( EChatModOperationError.Player_Already_Gagged ), player_id ); } break; case EChatModOperation.Ungag: if ( channel.Ungag_Player( target_id ) ) { Send_Notification_To_Channel( channel.ID, player_id, target_id, EChatNotification.Player_Ungagged, EPersistenceID.Invalid ); } else { Send_Message_To_Player( new CChatModOperationErrorMessage( EChatModOperationError.Player_Not_Gagged ), player_id ); } break; case EChatModOperation.Kick: Remove_From_Channel( target_id, channel.ID, ELeftChannelReason.Kicked_By_Mod, channel.Moderator ); break; case EChatModOperation.Transfer_Moderator: if ( channel.Transfer_Moderator( target_id ) ) { Send_Notification_To_Channel( channel.ID, player_id, target_id, EChatNotification.New_Moderator, EPersistenceID.Invalid ); } else { Send_Message_To_Player( new CChatModOperationErrorMessage( EChatModOperationError.Unable_To_Transfer_Moderator ), player_id ); } break; } }
private void Handle_Chat_Ungag_Command( CChatUngagSlashCommand command ) { CClientChatChannel ungag_channel = Instance.Infer_Channel_From_String( command.ChannelIdentifier ); if ( ungag_channel != null ) { CChatModOperationMessage mod_op_msg = new CChatModOperationMessage( ungag_channel.ChannelID, EChatModOperation.Ungag, command.PlayerName ); Send_Message_To_Chat_Server( mod_op_msg ); } else { CClientResource.Output_Text( EClientTextID.Client_Chat_Unknown_Channel ); } }